- Materiales necesarios:
- ¿Qué es RTC?
- Conexión del DS3231 RTC con MSP430:
- Programación de MSP430 para módulo RTC:
En este tutorial crearemos un reloj digital mediante la interfaz del módulo RTC DS3231 con MSP430 y mostraremos la hora y la fecha en una pantalla LCD de 16x2. El MSP-EXP430G2 es una herramienta de desarrollo también conocida como LaunchPad proporcionada por Texas Instruments para aprender y practicar sobre cómo usar sus microcontroladores. Esta placa pertenece a la categoría de línea de valor MSP430, donde podemos programar todos los microcontroladores de la serie MSP430. Si es nuevo en MSP, consulte nuestro tutorial de introducción a MSP430.
Materiales necesarios:
- MSP430
- Módulo RTC DS3231
- BOTE -10k
- Módulo LCD 16 * 2
- Cables de conexión
- Tablero de circuitos
¿Qué es RTC?
DS3231 es un módulo RTC (reloj en tiempo real). Se utiliza para mantener la fecha y la hora de la mayoría de los proyectos de electrónica. Este módulo tiene su propia fuente de alimentación de celda de moneda con la que mantiene la fecha y la hora incluso cuando se desconecta la alimentación principal o la MCU ha pasado por un restablecimiento completo. Entonces, una vez que establezcamos la fecha y la hora en este módulo, siempre lo mantendrá al día. Hay varios tipos de circuitos integrados de RTC disponibles como DS1307, DS3231, etc.
Anteriormente hemos utilizado RTC con otros microcontroladores en los siguientes proyectos:
Nota: Cuando utilice este módulo por primera vez, deberá configurar la fecha y la hora. También puede usar RTC IC DS1307, anteriormente hemos usado DS1307 con Arduino.
Conexión del DS3231 RTC con MSP430:
El diagrama de circuito para el reloj digital basado en microcontrolador MSP430 se muestra a continuación. Como se dijo anteriormente, el DS3231 funciona con la ayuda de la comunicación I2C, por lo que tendrá un reloj en serie (SCL) y un pin de datos en serie (SDA) que debe conectarse a los pines I2C de nuestro MSP430, que es el pin 9 (PIN 2.1, SCL) y pin 10 (PIN 2.2, SDA).
MSP430 da 3.3V Vcc pero necesitamos 5V para conectarlo con el módulo LCD y RTC. Entonces, usaremos un truco, hay un puente disponible llamado TP1 cerca del conector del cable USB. Puede tomar 5V desde allí.
Diagrama de circuito:
Programación de MSP430 para módulo RTC:
Aquí estamos usando Energia IDE para la programación. Es igual que Arduino IDE y fácil de usar. Si es nuevo en MSP y energia, entonces comience con MSP usando Energia IDE. Para conectar el módulo RTC necesitamos una biblioteca para esta placa. Descargue la biblioteca RTC desde este enlace e instálela.
También necesitamos Wire (utilizado para la comunicación I2C) y bibliotecas de cristal líquido que están preinstaladas en Energia IDE.
El código completo para este reloj digital MSP430 se proporciona al final de este artículo. El código es simple y fácilmente comprensible. Aquí te explicamos algunas partes.
Primero, tenemos que incluir las bibliotecas necesarias.
La siguiente biblioteca es para la comunicación I2C entre el módulo RTC y MSP430. Los pines SDA y SCK ya están definidos en esta biblioteca, por lo que no tenemos que declarar estos pines por separado.
#incluir
Luego hemos incluido la biblioteca RTClib.h para reloj RTC y LiquidCrystal.h para funciones LCD.
#include "RTClib.h" #include
Después de esto, tenemos que crear una instancia para inicializar nuestro módulo RTC.
RTC_DS3231 rtc;
Luego haga una matriz de tamaño 7 y almacene los siete días con el nombre en él.
char daysOfTheWeek = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"};
Aquí está la declaración de pines de MSP430 para ser utilizada por la pantalla LCD: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
En void setup () , hemos inicializado la interfaz a la pantalla LCD y RTC y hemos especificado las dimensiones (ancho y alto) de la pantalla, se debe llamar a begin ()
antes que cualquier otro comando de la biblioteca.
configuración vacía () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Reloj RTC"); retraso (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Ahora, la hora que se muestra en la pantalla es correcta pero hay un problema, cada vez que reinicia / reinicia su microcontrolador, la pantalla LCD mostrará la hora a la que cargó el código. Esto se debe a que la función rtc.adjust () ha almacenado la hora de su computadora, por lo que cuando reinicia, comienza con esa hora.
Para solucionar este problema, primero cargue el programa con la función rtc.adjust () sin comentarios. Luego, inmediatamente comente la misma línea y cargue el programa nuevamente. Ahora, su fecha y hora están configuradas y no se verán afectadas por reiniciar el microcontrolador.
En la función de bucle , tomamos la fecha y la hora del módulo RTC y la almacenamos en la variable predefinida llamada ahora y la mostramos en la pantalla LCD usando la función lcd.print () .
bucle vacío () { Fecha y hora ahora = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (ahora.día (), DEC); lcd.print ("/");…. …….
El código completo y el video se proporcionan a continuación.