PIC18F25K83 & XC8: Medidor voltaje de 0 a 35VDC (ADC basico y uso del FVR)


Saludos! Retomando información/codigo utilizado en un par de publicaciones anteriores, he creado este pequeño demo/proyecto el cual es un medidor de voltaje, el cual es bastante útil si en algún proyecto requieres medir tensiones mayores al que se puede someter el pin del MCU. OJO: Esto NO quiere decir que puedes reemplazar un multímetro comercial con este demo. 

Bueno recomiendo dar un vistazo a los siguientes post para comprender lo que se va a utilizar en este demo.

Un cambio considerable en este proyecto es que se va a utilizar el "FIXED VOLTAGE REFERENCE
(FVR)" el cual como lo dice su nombre es un voltaje de referencia el cual podemos usar para el ADC. Este FVR puede ser configurado de 1.024V, 2.048V o 4.096V para este ejemplo en particular se ha va a utilizar de 2.048V.


Para usar el voltaje de referencia simplemente hay que configurar el registro FVRCON y tambien configurar el registro ADREF (perteneciente a la configuración del ADC) para usar el FRV (pero esto se vera en la sección de codigo).

Circuito:
Con respecto al circuito voy a estar usando la siguiente configuración para poder leer el voltaje por el puerto analógico. La conexión de la pantalla es la misma que se ha venido utilizando en los otros posts, pero el principal cambio con respecto al post "PIC18F25K83 & XC8: ADC modo básico- Leer voltaje y mostrarlo en una LCD16x2 con números grandes" es que ahora necesitamos soportar una entrada de 35V máximo por lo tanto vamos a considerar un divisor de tensión en el pin ANC7.

Para conocer los valores del divisor de tensión basta con aplicar su respectiva formula (si es que deseas usar dos resistencias), pero yo en este ejemplo estaré manejando una resistencia de 56K y un potenciómetro de 10K (multivuelta). 

Importante se debe ajustar el potenciómetro para tener un voltaje de 2.048V cuando en la entraba del divisor se tenga 35V, creo que esta de sobra mencionar que esta calibración se debe de hacer antes de conectar al pin analógico.


También importante considerar alguna protección para evitar sobrepasar el umbral de voltaje permitido en dicho pin, yo en este demo estoy proponiendo un Zener de 2.1V (pero pueden usar algún otro método de protección).

Código:
Antes de ver el codigo necesitamos considerar como se va a procesar el voltaje que se esta leyendo por el pin analógico.
  • Considerando que el ADC de este micro tiene una resolución de 12 bits y VREF+ = 5V (este voltaje puede variar y por tal motivo en este ejemplo usamos un voltaje de referencia interno), tenemos 5.0 volts / 4096 = 0.001220703125 Volts/Lectura, como ejemplo si tenemos en el ADC una lectura de 2500 se tendrá un voltaje de entrada 2500 * 0.001220703125 = 3.0517 Volts.
  • Considerando VREF+ = FRV = 2.048V y tomando la formula anterior para este caso tenemos: 2.048V / 4096 = 0.0005 Volts/Lectura.
Para este ejemplo en particular donde se requiere medir hasta 35V y considerando la lógica anterior vamos a calcular el voltaje de la siguiente forma:

Vadc = (Lectura ADC * 35V ) / 4096  o también  Vadc = Lectura ADC * 0.008544921875

Una vez aclarado esto, el codigo es el siguiente:

Vídeo:
Aquí un pequeño vídeo del circuito en funcionamiento:


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.



Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

Links:

Publicar un comentario

0 Comentarios