Curso de MPLABX y XC8 #07: Conversión Análoga Digital.
Buenas compañeros.
Antes
de iniciar el septimo capitulo del curso de programación en C para pic's
con MPLABX y XC8, les recomiendo ver los capítulos anteriores siguiendo
el siguiente LINK.
Ya vistos los anteriores capítulos y una vez teniendo todos los software
necesarios procederemos a explicar de que tratara esta clase.
En esta clase veremos que es una conversión análoga digital, su funcionamiento en los microcontroladores pic, y como podemos implementar esta herramienta en los pic a través del lenguaje de programación C para pic's con XC8 Compiler y la IDE de MPLABX; para comenzar debemos saber que es una conversión análoga digital.
En esta clase veremos que es una conversión análoga digital, su funcionamiento en los microcontroladores pic, y como podemos implementar esta herramienta en los pic a través del lenguaje de programación C para pic's con XC8 Compiler y la IDE de MPLABX; para comenzar debemos saber que es una conversión análoga digital.
Conversión Análoga Digital:
La conversión análoga digital, es una herramienta que poseen diferentes dispositivos, entre ellos una gran variedad de microcontroladores, la cual nos permite por medio de un puerto leer una señal analógica en forma de voltaje,
y a su vez convertirla en una señal digital, con el fin de poder procesar las señales y así poder representarla en forma digital; para poder entender mejor este concepto procederemos a analizar la siguiente imagen:
Bien! ya que tenemos claro el concepto de la conversión análoga digital, vamos a
ver como podemos implementar esta herramienta a nuestros programas a través del siguiente vídeo:
Una vez que ya hemos estudiado el vídeo, vamos a ver cada una de las instrucciones y así mismo la configuración del modulo ADC cn estas; empecemos:
Configuración Del conversor analogo digital (ADC).
Para esta configuración se utiliza la instrucción OpenADC( ), en ella se especifica todas las configuraciones que tiene el modulo adc en el microcontrolador, por eso vamos a ver un breve resumen de ellas:
* Frecuencias de funcionamiento y relog del ADC tabla 21-1 pag 265 datasheet pic18XXXX
* Los resultados se justifican hacia la derecha
* Tiempo de adquisición
* Canales
* Interrupción
* ADC referencia de voltaje
Como ven son pocas y facilmente se pueden configurar, primero vamos a ver la tabla de frecuencias en el datasheet que nos muestra anteriormente, el datasheet lo pueden encontrar en la parte de etiquetas, en la etiqueta de documentación.
Bien! como ya vimos en la tabla vemos que tiempos de operación se pueden usar con respecto a la frecuencia con la que se este trabajando en el microcontrolador; como en este caso estmos utilizando un cristal de 20MHz nos correspondería 16 Tosc quedando asi:
OpenADC( ADC_FOSC_16 & XXXXXX)
Listo ahora vamos a ver como se justifican los resultados:
* ADC_RIGHT_JUST Justificamos a la derecha
* ADC_LEFT_JUST Justificamos a la izquierda
* ADC_RESULT_MASK Oculto o enmascarado el resultado
por ejemplo vamos a justificarlo a la derecha, esto quedaría con lo anterios asi:
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & xxxxxx)
Perfecto! ahora que ya tenemos esto, queda lo más facil, y es el tiempo de adquisición, este en base a la frecuencia quedaría de 16 y se pondría asi:
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD, xxxxxxx)
Seleccionamos los canales dependiendo del microcontrolador y cuanto usaremos, en este caso solo usaremos uno:
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD,
ADC_CH0 & xxxxx)
Miremos las diferentes opciones que tenemos para las interrupciones del ADC:
* ADC_INT_ON Interrupción en el ADC encendida
* ADC_INT_OFF Interrupción en el ADC apagada
* ADC_INT_MASK Interrupción oculta
En este caso la dejaremos apagada quedando asi:
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD,
ADC_CH0 & ADC_INT_OFF & xxxxx)
Y por ultimo seleccionaremos la referencia del voltaje, la cual es importante para la conversión ya que los calculos se basan en este:
* ADC_REF_VDD_VREFMINUS
* ADC_REF_VREFPLUS_VREFMINUS
* ADC_REF_VREFPLUS_VSS
* ADC_REF_VDD_VSS
* ADC_REF_MASK
Para no entrar en detalles el mas usado es el que se compara con los voltaes de alimentación del microcontrolador; en este caso sería :
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD,
ADC_CH0 & ADC_INT_OFF & ADC_REF_VDD_VSS & xxxxx)
Para terminar vamos a seleccionar que cantidad de pines estarán disponibles para el moduloo ADC, esto se hace mirando la libreria y mirando cuantos pines estan disponibles para el modulo; para no profundizar tanto escogeré solo un pin analogo, ya que solo voy a utilizar un canal; esto se hace con la siguiente instruccion:
OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD,
ADC_CH0 & ADC_INT_OFF & ADC_REF_VDD_VSS & ADC_1ANA)
Y con esto quedaría nuestra configuración completa; ahora vamos a ver las instrucciones básicas con las cuales manipularemos el modulo ADC.
int dato = 0; // Variable llamada dato
ConvertADC(); // Iniciamos la conversión ADC
while(BusyADC()); // Esperamos a que finalice la conversión ADC
dato = ReadADC(); // En esta parte lo que hacemos es guardar lo que recibio la lectura del modulo ADC en una variable llamada dato
Ya con estas instrucciones se terminaria todo lo referente ADC, ahora lo que queda es manipular lo que se guardo en la variable, para ellos se utilizan muchas formas, para diferentes aplicaciones, es distinta la forma en manejar este dato para mostrar un voltaje en el lcd, a manejar un voltaje que proviene de un sensor como por ejemplo el lm35 que es un sensor de temperatura.
Espero que les halla gustado y que hallan aprendido mucho el día de hoy; con esto finalizamos el curso de MPLABX y el compilador XC8
Atentos a mi blog, nuevos cursos comenzarán!
NOTA: se les recuerda a los lectores que se utilizo la versión del compilador XC8 Versión 1.34 la cual trae las peripheral libraries incluidas en él; el pdf de estas lo pueden encontrar en la parte de etiquetas del blog en la etiqueta llamada Documentación.
Instalación de MPLABX y XC8 Compiler:
http://electronicalibrexc.blogspot.com.co/2015/10/electronica-libre-curso-de-xc8-y-mplabx.html
http://electronicalibrexc.blogspot.com.co/2015/10/electronica-libre-curso-de-xc8-y-mplabx.html
Bien muchachos, esto es todo por hoy; esten pendiente en mi canal, o de mi blog o de mi pagina de facebook.
Facebook: https://www.facebook.com/electronicalibrexc/
Youtube: http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR
Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!
Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/
Facebook: https://www.facebook.com/electronicalibrexc/
Youtube: http://www.youtube.com/c/breismanrueda
Google +: https://plus.google.com/u/0/+breismanrueda
Twitter: https://twitter.com/BreismamR
Esto es todo por hoy, Sigue mi blog y visita mi próxima entrada!
Cualquier duda, trabajo, tutoria personalizada por correo electronico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/
Salu2...
No hay comentarios.:
Publicar un comentario