Para poder medir las distintas lineas de tensión es necesario reducir el voltaje a valores permitidos por las entradas de ADC que tiene el uC Atmega16. Como el el uC está alimentado con 5v, su tolerancia máxima será de 5,5v (ver hojas de datos), es decir que medirá bien hasta 4,99v y hasta 5,5v saturará sin peligro de quemarse.
Volviendo con las linea de tensiones ya subidas y viendo de donde se alimenta el uC:
Ver el archivo adjunto 94678
Vemos que las lineas de tensiones a medir respecto al uC irán:
Atenuador para Vout(+):
Aprovechando los foot-prints libres de la resistencia que iban a formar parte del rango automático, usé 4 resistencias para fijar el factor de atenuación con mayor precisión.
[LATEX]R_{28}=1M \Omega[/LATEX]
[LATEX]R_{29}=120k \Omega[/LATEX]
[LATEX]R_{30}=3k3 \Omega[/LATEX]
[LATEX]R_{32}=150 \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{120k \Omega+3k3 \Omega+150 \Omega}{120k \Omega+3k3 \Omega+150 \Omega+1M \Omega}.45,45v=4,99v[/LATEX]
Atenuador para Vout(-):
[LATEX]R_{16}=1M \Omega[/LATEX]
[LATEX]R_{17}=220k \Omega[/LATEX]
[LATEX]R_{18}=39k \Omega[/LATEX]
[LATEX]R_{31}=1k2 \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{220k \Omega+39k \Omega+1k2 \Omega}{220k \Omega+39k \Omega+1k2 \Omega+1M \Omega}.24,2v=4,99v[/LATEX]
Atenuador para GND:
Este atenuador no estaba previsto originalmente como mencioné, pero cuando empecé a ver que las mediciones eran muy erráticas no me quedó otra que agregar esta línea de tensión, por eso no figura en el PCB.
[LATEX]R_{33}=100k \Omega[/LATEX]
[LATEX]R_{34}=22k \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{22k \Omega}{22k \Omega+100k \Omega}.25,45v=4,58v[/LATEX]
Se puede ver que los valores no están del todo optimizados para medir a fondo de escala, esto se debe a que esos eran los valores de resistencias que tenía a mano, entonces esa medición puede aún mejorarse fácilmente.
Resumiendo el esquema de atenuadores en conjunto con las líneas de tensión, quedaría así:
Protección de las entradas ADC:
El Atmega16 viene en todos sus puertos con protección de sobre-tensión mediante diodos clamping, además de los 5,5v originales que mencioné antes, podemos mejorar la protección usando resistencias limitadoras en la entrada de ADC.
Esas resistencias limitadoras son las que figuran como 10kOhms en el esquema de atenuadores en conjunto con las líneas de tensión.
¿Cómo se calcula el valor de esas resistencias?
Necesitamos averiguar cuanta corriente máxima pueden conducir esos diodos cuando hay sobre-tensión. Atmel recomienda no sobrepasar 1mA (ver nota de aplicación doc2508.pdf página 7) y en base a eso calcular la resistencia mínima que deberemos colocar en serie.
Sabemos que la corriente máxima es 1mA, en el diodo de protección caerán 0,5V (por eso 5,5v) y nuestra tensión máxima en el circuito será de 51v =>que luego de atenuarse serán 5,6v, entonces el cálculo será.
[LATEX]R_{limitadora.ADC}=\frac{V_{in}-\left(V_{cc.uC}+0,5V\left)}{1mA}=\frac{5,6v-5,5v}{1mA} \approx 100 \Omega[/LATEX]
Con una resistencia de 1kOhm hubieramos estado cubiertos, con 10kOhms estamos mucho más cubiertos.
Pero no todo es así de fácil, hay un límite en el valor de la resistencia en serie y es que a medida que aumentamos dicho valor, más significativo se vuelve frente a la impedancia de entrada del ADC, ocasionando errores en la medición (es como si hubiera un divisor resistivo).
Podríamos decir que 10kOhms es un valor aceptable, frente a la impedancia de entrada del ADC que se encuentra en el orden del Mohm.
En el próximo mensaje voy tratar con mayor detalle, la placa del uC.
Volviendo con las linea de tensiones ya subidas y viendo de donde se alimenta el uC:
Ver el archivo adjunto 94678
Vemos que las lineas de tensiones a medir respecto al uC irán:
- VGND: 18v*raiz(2)=25,45v.
- Vout(+): desde 18v*raiz(2)+1,25v=26,7v hasta como máximo 51v, yo lo limité hasta 45,45v (20v máximo entre GND y V+).
- Vout(-): desde 0v hasta 18v*raiz(2)-1,25v=24,2v, en este ramal no puedo limitar la tensión máxima.
Atenuador para Vout(+):
Aprovechando los foot-prints libres de la resistencia que iban a formar parte del rango automático, usé 4 resistencias para fijar el factor de atenuación con mayor precisión.
[LATEX]R_{28}=1M \Omega[/LATEX]
[LATEX]R_{29}=120k \Omega[/LATEX]
[LATEX]R_{30}=3k3 \Omega[/LATEX]
[LATEX]R_{32}=150 \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{120k \Omega+3k3 \Omega+150 \Omega}{120k \Omega+3k3 \Omega+150 \Omega+1M \Omega}.45,45v=4,99v[/LATEX]
Atenuador para Vout(-):
[LATEX]R_{16}=1M \Omega[/LATEX]
[LATEX]R_{17}=220k \Omega[/LATEX]
[LATEX]R_{18}=39k \Omega[/LATEX]
[LATEX]R_{31}=1k2 \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{220k \Omega+39k \Omega+1k2 \Omega}{220k \Omega+39k \Omega+1k2 \Omega+1M \Omega}.24,2v=4,99v[/LATEX]
Atenuador para GND:
Este atenuador no estaba previsto originalmente como mencioné, pero cuando empecé a ver que las mediciones eran muy erráticas no me quedó otra que agregar esta línea de tensión, por eso no figura en el PCB.
[LATEX]R_{33}=100k \Omega[/LATEX]
[LATEX]R_{34}=22k \Omega[/LATEX]
[LATEX]V_{ADC.out(+)_{max}}=\frac{22k \Omega}{22k \Omega+100k \Omega}.25,45v=4,58v[/LATEX]
Se puede ver que los valores no están del todo optimizados para medir a fondo de escala, esto se debe a que esos eran los valores de resistencias que tenía a mano, entonces esa medición puede aún mejorarse fácilmente.
Resumiendo el esquema de atenuadores en conjunto con las líneas de tensión, quedaría así:
Protección de las entradas ADC:
El Atmega16 viene en todos sus puertos con protección de sobre-tensión mediante diodos clamping, además de los 5,5v originales que mencioné antes, podemos mejorar la protección usando resistencias limitadoras en la entrada de ADC.
Esas resistencias limitadoras son las que figuran como 10kOhms en el esquema de atenuadores en conjunto con las líneas de tensión.
¿Cómo se calcula el valor de esas resistencias?
Necesitamos averiguar cuanta corriente máxima pueden conducir esos diodos cuando hay sobre-tensión. Atmel recomienda no sobrepasar 1mA (ver nota de aplicación doc2508.pdf página 7) y en base a eso calcular la resistencia mínima que deberemos colocar en serie.
Sabemos que la corriente máxima es 1mA, en el diodo de protección caerán 0,5V (por eso 5,5v) y nuestra tensión máxima en el circuito será de 51v =>que luego de atenuarse serán 5,6v, entonces el cálculo será.
[LATEX]R_{limitadora.ADC}=\frac{V_{in}-\left(V_{cc.uC}+0,5V\left)}{1mA}=\frac{5,6v-5,5v}{1mA} \approx 100 \Omega[/LATEX]
Con una resistencia de 1kOhm hubieramos estado cubiertos, con 10kOhms estamos mucho más cubiertos.
Pero no todo es así de fácil, hay un límite en el valor de la resistencia en serie y es que a medida que aumentamos dicho valor, más significativo se vuelve frente a la impedancia de entrada del ADC, ocasionando errores en la medición (es como si hubiera un divisor resistivo).
Podríamos decir que 10kOhms es un valor aceptable, frente a la impedancia de entrada del ADC que se encuentra en el orden del Mohm.
En el próximo mensaje voy tratar con mayor detalle, la placa del uC.
Adjuntos
Última edición: