- Comprensión del módulo ADC:
- Diagrama de circuito:
- Programando su MSP430 para ADC:
- ¡Probando su resultado!
Una característica común que se utiliza en casi todas las aplicaciones integradas es el módulo ADC (convertidor analógico a digital). Estos convertidores analógicos a digitales pueden leer el voltaje de sensores analógicos como el sensor de temperatura, el sensor de inclinación, el sensor de corriente, el sensor de flexión y mucho más. Entonces, en este tutorial, aprenderemos cómo usar ADC en MSP430G2 para leer voltajes analógicos usando el IDE de Energia. Conectaremos un pequeño potenciómetro a la placa MSP y suministraremos un voltaje variable a un pin analógico, leeremos el voltaje y lo mostraremos en el monitor serial.
Comprensión del módulo ADC:
Créame, difícilmente tomaría 10 minutos conectar y programar el MSP430G2 para leer voltaje analógico. Pero, dediquemos un tiempo a comprender el módulo ADC en la placa MSP para que podamos usarlo de manera efectiva en todos nuestros próximos proyectos.
Un microcontrolador es un dispositivo digital, lo que significa que solo puede entender 1 y 0. Pero en el mundo real, casi todo, como la temperatura, la humedad, la velocidad del viento, etc., son de naturaleza analógica. Para interactuar con estos cambios analógicos, el microcontrolador usa un módulo llamado ADC. Hay muchos tipos diferentes de módulos ADC disponibles, el que se usa en nuestro MSP es el ADC SAR de 8 canales y 10 bits.
ADC de aproximación sucesiva (SAR): El ADC de SAR funciona con la ayuda de un comparador y algunas conversaciones lógicas. Este tipo de ADC usa un voltaje de referencia (que es variable) y compara el voltaje de entrada con el voltaje de referencia usando un comparador y la diferencia, que será una salida digital, se guarda del bit más significativo (MSB). La velocidad de la comparación depende de la frecuencia de reloj (Fosc) en la que está funcionando el MSP.
Resolución de 10 bits: este ADC es un ADC de 8 canales y 10 bits. Aquí, el término 8 canales implica que hay 8 pines ADC con los que podemos medir el voltaje analógico. El término 10 bits implica la resolución del ADC. 10 bits significa 2 elevado a diez (2 10) que es 1024. Este es el número de pasos de muestra para nuestro ADC, por lo que el rango de nuestros valores de ADC será de 0 a 1023. El valor aumentará de 0 a 1023 basado en el valor de voltaje por paso, que se puede calcular usando la siguiente fórmula
Nota: De forma predeterminada, en Energia, el voltaje de referencia se establecerá en Vcc (~ 3v), puede variar el voltaje de referencia utilizando la opción analogReference () .
Compruebe también cómo conectar ADC con otros microcontroladores:
- ¿Cómo usar ADC en Arduino Uno?
- Interfaz ADC0808 con microcontrolador 8051
- Usando el módulo ADC del microcontrolador PIC
- Tutorial de Raspberry Pi ADC
Diagrama de circuito:
En nuestro tutorial anterior ya aprendimos cómo conectar la pantalla LCD con el MSP430G2, ahora solo vamos a agregar un potenciómetro al MSP430 para suministrarle un voltaje variable y mostrar el valor del voltaje en el LCD. Si no está al tanto de la interconexión de la pantalla LCD, vuelva al enlace anterior y léalo, ya que me saltaré la información para evitar el arrepentimiento. El diagrama de circuito completo del proyecto se da a continuación.
Como puede ver, aquí se usan dos potenciómetros, uno se usa para configurar el contraste de la pantalla LCD mientras que el otro se usa para suministrar un voltaje variable a la placa. En ese potenciómetro, un extremo del potenciómetro está conectado al Vcc y el otro extremo está conectado a tierra. El pin central (cable azul) está conectado al pin P1.7. Este pin P1.7 proporcionará un voltaje variable de 0V (tierra) a 3.5V (Vcc). Entonces tenemos que programar el pin P1.7 para leer este voltaje variable y mostrarlo en la pantalla LCD.
En Energia, necesitamos saber a qué canal analógico pertenece el pin P1.7. Esto se puede encontrar consultando la siguiente imagen
Puede ver el pin P1.7 en el lado derecho, este pin pertenece a A7 (canal 7). Del mismo modo, también podemos encontrar el número de canal respectivo para otros pines. Puede usar cualquier pin de A0 a A7 para leer voltajes analógicos aquí. He seleccionado A7.
Programando su MSP430 para ADC:
Programar su MSP430 para leer voltaje analógico es muy simple. En este programa leerá el valor analógico y calculará el voltaje con ese valor y luego mostrará ambos en la pantalla LCD. El programa completo se puede encontrar en la parte inferior de esta página, más abajo explico el programa en fragmentos para ayudarlo a comprender mejor.
Comenzamos definiendo los pines LCD. Estos definen a qué pin del MSP430 están conectados los pines LCD. Puede consultar su conexión para asegurarse de que los pines estén conectados respectivamente
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
A continuación, incluimos el archivo de encabezado para la pantalla LCD. Esto llama a la biblioteca que contiene el código sobre cómo debe comunicarse el MSP con la pantalla LCD. Esta biblioteca se instalará en Energia IDE de forma predeterminada, por lo que no tendrá que molestarse en agregarla. También asegúrese de que se llame a la función Liquid Crystal con los nombres de los pines que acabamos de definir anteriormente.
#incluir
Dentro de nuestra función setup () , solo daríamos un mensaje de introducción para que se muestre en la pantalla LCD. No voy a profundizar mucho, ya que hemos aprendido a usar LCD con MSP430G2.
lcd. comienzo (16, 2); // Estamos usando una pantalla LCD de 16 * 2 lcd.setCursor (0,0); // Coloca el cursor en la 1ª fila 1ª columna lcd.print ("MSP430G2553"); // Muestra un mensaje de introducción lcd.setCursor (0, 1); // coloca el cursor en la 1ª columna 2ª fila lcd.print ("- CircuitDigest"); // Mostrar un mensaje de introducción
Finalmente, dentro de nuestra función de bucle infinito () , comenzamos a leer el voltaje suministrado al pin A7. Como ya comentamos, el microcontrolador es un dispositivo digital y no puede leer el nivel de voltaje directamente. Utilizando la técnica SAR, el nivel de voltaje se asigna de 0 a 1024. Estos valores se denominan valores ADC, para obtener este valor ADC simplemente use la siguiente línea
int val = analogRead (A7); // lee el valor ADC del pin A7
Aquí la función analogRead () se usa para leer el valor analógico del pin, hemos especificado A7 en su interior ya que hemos conectado voltaje variable al pin P1.7. Finalmente guardamos este valor en una variable llamada “ val ”. El tipo de esta variable es entero porque solo obtendremos valores que van de 0 a 1024 para ser almacenados en esta variable.
El siguiente paso sería calcular el valor de voltaje a partir del valor de ADC. Para hacer esto tenemos las siguientes fórmulas
Voltaje = (Valor ADC / Resolución ADC) * Voltaje de referencia
En nuestro caso ya sabemos que la resolución ADC de nuestro microcontrolador es 1024. El valor ADC también se encuentra en la línea anterior y se almacena la variable denominada val. El voltaje de referencia es igual al voltaje al que está funcionando el microcontrolador. Cuando el tablero MSP430 es alimentado mediante un cable USB, entonces el voltaje de funcionamiento es 3.6V. También puede medir el voltaje de operación usando un multímetro en el Vcc y el pin de tierra en la placa. Entonces la fórmula anterior encaja en nuestro caso como se muestra a continuación
voltaje de flotación = (float (val) / 1024) * 3.6; // fórmulas para convertir el valor ADC en voltaje
Puede confundirse con la línea float (val). Se utiliza para convertir la variable "val" del tipo de datos int al tipo de datos "float". Esta conversión es necesaria porque solo si obtenemos el resultado de val / 1024 en float podemos multiplicarlo 3.6. Si el valor se recibe en entero, siempre será 0 y el resultado también será cero. Una vez que hemos calculado el valor de ADC y el voltaje, todo lo que queda es mostrar el resultado en la pantalla LCD que se puede hacer usando las siguientes líneas
lcd.setCursor (0, 0); // coloca el cursor en la columna 0, línea 0 lcd.print ("ADC Val:"); lcd.print (val); // Mostrar valor ADC lcd.setCursor (0, 1); // coloca el cursor en la columna 0, línea 1 lcd.print ("Voltaje:"); lcd.print (voltaje); // Mostrar voltaje
Aquí mostramos el valor de ADC en la primera línea y el valor de Voltaje en la segunda línea. Finalmente le damos un retraso de 100 mil segundos y limpiamos la pantalla LCD. Este fue el valor que se actualizará cada 100 milésimas de pulgada.
¡Probando su resultado!
Finalmente, llegamos a la parte divertida, que es probar nuestro programa y jugar con él. Simplemente haga las conexiones como se muestra en el diagrama del circuito. He usado una pequeña placa de pruebas para hacer mis conexiones y he usado cables de puente para conectar la placa de pruebas a MSP430. Una vez que las conexiones están hechas, la mía se ve así a continuación.
Luego cargue el programa que se proporciona a continuación en la placa MSP430 a través de Energia IDE. Debería poder ver el texto de introducción en la pantalla LCD; si no, ajuste el contraste de la pantalla LCD con el potenciómetro hasta que vea palabras claras. Además, intente presionar el botón de reinicio. Si las cosas funcionan como se esperaba, debería poder ver la siguiente pantalla.
Ahora varíe el potenciómetro y también debería ver cómo varía el voltaje que se muestra en la pantalla LCD. Verifiquemos si estamos midiendo el voltaje correctamente para hacer eso, use un multímetro para medir el voltaje en el centro del POT y el suelo. El voltaje que se muestra en el multímetro debe estar cerca del valor que se muestra en la pantalla LCD como se muestra en la siguiente imagen.
Eso es todo, hemos aprendido cómo medir el voltaje analógico usando el ADC de la placa MSP430. Ahora podemos conectar muchos sensores analógicos con nuestra placa para leer parámetros en tiempo real. Espero que haya entendido el tutorial y haya disfrutado aprendiéndolo, si tiene algún problema, comuníquese con la sección de comentarios a continuación o mediante los foros. Vamos a ponernos al día en otro tutorial de MSP430 con otro tema nuevo.