- Componentes necesarios y configuración de hardware
- Diagrama de circuito de Nuvoton N76E003 para leer voltaje analógico
- Información sobre GPIO y pines analógicos en N76E003
- Información sobre el periférico ADC en N76E003
- Programación de N76E003 para ADC
- Destellando el código y la salida
El convertidor analógico a digital (ADC) es la característica de hardware más utilizada en un microcontrolador. Toma voltaje analógico y lo convierte en un valor digital. Dado que los microcontroladores son dispositivos digitales y funcionan con los dígitos binarios 1 y 0, no podrían procesar los datos analógicos directamente. Por lo tanto, un ADC se usa para tomar voltaje analógico y convertirlo en su valor digital equivalente que un microcontrolador pueda entender. Si desea más información sobre el convertidor analógico a digital (ADC), puede consultar el artículo vinculado.
Hay diferentes sensores disponibles en la electrónica que proporcionan salida analógica, como los sensores de gas MQ, el sensor del acelerómetro ADXL335, etc. Por lo tanto, utilizando un convertidor de analógico a digital, esos sensores pueden interconectarse con una unidad de microcontrolador. También puede consultar otros tutoriales que se enumeran a continuación, para usar 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
- Cómo usar ADC en MSP430G2 - Medición de voltaje analógico
- Cómo utilizar ADC en STM32F103C8
En este tutorial, usaremos el periférico ADC incorporado de la unidad de microcontrolador N76E003, así que evaluemos qué tipo de configuración de hardware necesitamos para esta aplicación.
Componentes necesarios y configuración de hardware
Para usar ADC en N76E003, usaremos un divisor de voltaje usando un potenciómetro y leeremos el voltaje en el rango de 0V-5.0V. El voltaje se mostrará en la pantalla LCD de 16x2 caracteres, si es nuevo con LCD y N76E003, puede comprobar cómo conectar la pantalla LCD con Nuvoton N76E003. Por lo tanto, el componente principal que se requiere para este proyecto es la pantalla LCD de 16x2 caracteres. Para este proyecto, usaremos los siguientes componentes:
- LCD de caracteres 16x2
- Resistencia de 1k
- Potenciómetro 50k o potenciómetro
- Pocos cables de Berg
- Pocos cables de conexión
- Tablero de circuitos
Sin mencionar que, además de los componentes anteriores, necesitamos la placa de desarrollo basada en microcontroladores N76E003, así como el programador Nu-Link. También se requiere una fuente de alimentación adicional de 5 V ya que la pantalla LCD consume suficiente corriente que el programador no podría proporcionar.
Diagrama de circuito de Nuvoton N76E003 para leer voltaje analógico
Como podemos ver en el esquema, el puerto P0 se usa para la conexión relacionada con la pantalla LCD. En el extremo izquierdo, se muestra la conexión de la interfaz de programación. El potenciómetro actúa como un divisor de voltaje y es detectado por la entrada analógica 0 (AN0).
Información sobre GPIO y pines analógicos en N76E003
La siguiente imagen ilustra los pines GPIO disponibles en la unidad de microcontrolador N76E003AT20. Sin embargo, de los 20 pines, para la conexión relacionada con la pantalla LCD, se utiliza el puerto P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 y P0.7). Los pines analógicos están resaltados en colores ROJOS.
Como podemos ver, el puerto P0 tiene pines analógicos máximos, pero se utilizan para comunicaciones relacionadas con LCD. Por lo tanto, P3.0 y P1.7 están disponibles como pines de entrada analógica AIN1 y AIN0. Como este proyecto requiere solo un pin analógico, P1.7, que es el canal de entrada analógica 0, se utiliza para este proyecto.
Información sobre el periférico ADC en N76E003
N76E003 proporciona un ADC SAR de 12 bits. Es una característica muy buena del N76E003 que tiene una muy buena resolución de ADC. El ADC tiene entradas de 8 canales en modo de un solo extremo. Conectar el ADC es bastante simple y directo.
El primer paso es seleccionar la entrada del canal ADC. Hay entradas de 8 canales disponibles en los microcontroladores N76E003. Después de seleccionar las entradas ADC o los pines de E / S, se requiere que todos los pines estén configurados para la dirección en el código. Todos los pines utilizados para la entrada analógica son pines de entrada del microcontrolador, por lo que todos los pines deben configurarse como modo de solo entrada (alta impedancia). Estos se pueden configurar utilizando el registro PxM1 y PxM2. Estos dos registros establecen los modos de E / S donde la x representa el número de puerto (por ejemplo, el puerto P1.0 el registro será P1M1 y P1M2, para P3.0 será P3M1 y P3M2, etc.) La configuración puede ser visto en la imagen de abajo-
La configuración del ADC se realiza mediante dos registros ADCCON0 y ADCCON1. La descripción del registro ADCCON0 se muestra a continuación.
Los primeros 4 bits del registro desde el bit 0 al bit 3 se utilizan para establecer la selección del canal ADC. Dado que estamos usando el canal AIN0, la selección será 0000 para estos cuatro bits.
Los bits 6 y 7 son los importantes. Se requiere que ADCS establezca 1 para iniciar la conversión de ADC y ADCF proporcionará información sobre la conversión de ADC exitosa. El firmware debe establecerlo en 0 para iniciar la conversión de ADC. El siguiente registro es el ADCCON1-
El registro ADCCON1 se utiliza principalmente para la conversión ADC activada por fuentes externas. Sin embargo, para las operaciones normales relacionadas con el sondeo, se requiere que el ADCEN de primer bit establezca 1 para encender los circuitos del ADC.
A continuación, la entrada del canal ADC debe controlarse en el registro AINDIDS donde se pueden desconectar las entradas digitales.
La n representa el bit del canal (por ejemplo, el canal AIN0 deberá controlarse utilizando el primer bit P17DIDS del registro AINDIDS). La entrada digital debe estar habilitada, de lo contrario, se leerá como 0. Todos estos son los ajustes básicos del ADC. Ahora, borrando el ADCF y configurando el ADCS, se puede iniciar la conversión de ADC. El valor convertido estará disponible en los siguientes registros:
Y
Ambos registros son de 8 bits. Como el ADC proporciona datos de 12 bits, el ADCRH se usa como completo (8 bits) y el ADCRL se usa como medio (4 bits).
Programación de N76E003 para ADC
Codificar para un módulo específico cada vez es un trabajo ajetreado, por lo que se proporciona una biblioteca LCD simple pero poderosa que será muy útil para la interfaz LCD de 16x2 caracteres con N76E003. La biblioteca LCD de 16x2 está disponible en nuestro repositorio de Github, que se puede descargar desde el siguiente enlace.
Descargar biblioteca LCD 16x2 para Nuvoton N76E003
Amablemente tener la biblioteca (por clonación o la descarga) y basta con incluir el lcd.c y LCD.h archivos en su proyecto Keil N76E003 para facilitar la integración de la pantalla LCD 16x2 en la aplicación o proyecto deseado. La biblioteca proporcionará las siguientes funciones útiles relacionadas con la visualización:
- Inicialice la pantalla LCD.
- Envíe el comando a la pantalla LCD.
- Escribe en la pantalla LCD.
- Coloque una cadena en la pantalla LCD (16 caracteres).
- Imprime el carácter enviando un valor hexadecimal.
- Desplácese por mensajes largos con más de 16 caracteres.
- Imprima números enteros directamente en la pantalla LCD.
La codificación de ADC es simple. En la función de configuración Enable_ADC_AIN0; se utiliza para configurar el ADC para la entrada AIN0 . Esto se define en el archivo.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Por lo tanto, la línea anterior establece el pin como entrada y configura el registro ADCCON0, ADCCON1 y también el registro AINDIDS . La siguiente función leerá el ADC del registro ADCRH y ADCRL pero con una resolución de 12 bits.
unsigned int ADC_read (void) { registro unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; while (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
El bit se desplaza a la izquierda 4 veces y luego se agrega a la variable de datos. En la función principal, el ADC lee los datos y los imprime directamente en la pantalla. Sin embargo, el voltaje también se convierte usando una relación o la relación entre el voltaje dividido por el valor de bit.
Un ADC de 12 bits proporcionará 4095 bits en una entrada de 5,0 V. Así dividiendo el 5.0V / 4095 = 0.0012210012210012V
Entonces, 1 dígito de cambios de bit será igual a los cambios en 0.001V (Aproximadamente). Esto se hace en la función principal que se muestra a continuación.
void main (vacío) { int adc_data; preparar(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Datos ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltaje = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", voltaje); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Los datos se convierten de valor de bit a voltaje y, utilizando una función sprintf , la salida se convierte en una cadena y se envía a la pantalla LCD.
Destellando el código y la salida
El código devolvió 0 advertencia y 0 errores y Keil lo mostró utilizando el método de parpadeo predeterminado, puede ver el mensaje parpadeante a continuación. Si es nuevo en Keil o Nuvoton, consulte los primeros pasos con el microcontrolador Nuvoton para comprender los conceptos básicos y cómo cargar el código.
La reconstrucción comenzó: Proyecto: temporizador Reconstruir el objetivo 'Target 1' ensamblando STARTUP.A51… compilando main.c… compilando lcd.c… compilando Delay.c… vinculando… Tamaño del programa: datos = 101.3 xdata = 0 código = 4162 creando un archivo hexadecimal desde ". \ Objects \ timer"… ". \ Objects \ timer" - 0 Error (s), 0 Advertencia (s). Tiempo de compilación transcurrido: 00:00:02 Cargue "G: \\ n76E003 \\ Visualización \\ Objetos \\ temporizador" Borrado de Flash Hecho. Flash Write Done: 4162 bytes programados. Flash Verify Done: 4162 bytes verificados. Carga Flash finalizada a las 11:56:04
La siguiente imagen muestra el hardware conectado a la fuente de alimentación mediante un adaptador de CC y la pantalla muestra la salida de voltaje establecida por el potenciómetro de la derecha.
Si giramos el potenciómetro, el voltaje dado al pin ADC también cambiará y podremos notar el valor ADC y el voltaje analógico que se muestran en la pantalla LCD. Puede ver el video a continuación para ver la demostración completa de este tutorial.
Espero que haya disfrutado del artículo y haya aprendido algo útil, si tiene preguntas, déjelas en la sección de comentarios a continuación, o puede usar nuestros foros para publicar otras preguntas técnicas.