sábado, 11 de diciembre de 2010

Comunicación Arduino con LCD basado en chip HD44780

El controlador HD44780 es muy común en pantallas LCD (formatos 16x2 o 20x4) y es idóneo para integrarlo como sistema de salida de información de un proyecto basado en Arduino.

Veámos, en esta entrada al blog, como se puede integrar con una placa Arduino, una circuiteria mínima y un programa de test asociado.

CIRCUITERIA
La circuiteria externa que utilizaremos para conectar el LCD con el Arduino, en nuestro caso con un Arduino UNO la podemos ver en el esquema siguiente que he realizado con el software Fritzing:

La implementación física:


Destacar que el chip de controlador del LCD, el HD44780, todo y ser muy común, debemos verificar la asignación de cada uno de los 16 pines de que dispone para asegurarnos de que el fabricante en cuestión no haya cambiado el orden de asignaciones.


ESQUEMA LCD 20x4
La información del datasheet del LCD 20x4 adquirido tiene las siguientes características:

Fabricante: Xiamen Ocular
Modelo: GDM2004D (ver datasheet)
Controlador: S6A0060 (compatible 100% HD44780)
Características: 5x8 dots, +5V power supply, 1/16 dutycycle, LED Backlight
  • Pin 1: Vss
  • Pin 2: Vdd
  • Pin 3: Vo
  • Pin 4: RS
  • Pin 5: R/W
  • Pin 6: E
  • Pin 7 a 10: DB0-DB3
  • Pin 11 a 14: DB4-DB7
  • Pin 15: LED+ (ánodo)
  • Pin 16: LED- (GND)

PROGRAMA ARDUINO
El programa que utilizaremos para probar la comunicación del Arduino con el LCD es el siguiente:

/*
Arduino - FreeNAS

The circuit:
LCD 1 (0V) to arduino ground pin 14 o al pin GND de power
LCD 2 (5V) to arduino +5 V
LCD 3 (V0) to output from potentiometer 10kOhm connected between +5 V and GND
LCD 4 (RS) to arduino pin 7
LCD 5 (R/W) to arduino ground
LCD 6 (E) to arduino pin 6
LCD 11 (DB4), 12 (DB5), 13 (DB6), 14 (DB7) on arduino pins 2, 3, 4, 5
LCD 15 (LED+) through resistor 12 Ohm to arduino +5 V
LCD 16 (LED-) to arduino ground
*/

LiquidCrystal lcd(7,6,5,4,3,2);

void setup() {
lcd.begin(20, 4);
lcd.setCursor(2,0);
lcd.print("DISPLAY LCD 4x20");
lcd.setCursor(6,1);
lcd.print("Proyecto");
lcd.setCursor(3,2);
lcd.print("Arduino-FreeNAS");
lcd.setCursor(1,3);
lcd.print("by RFKsolutions.es");
}

void loop() {
}


TEST DE FUNCIONAMIENTO
Podemos ver en el video como la placa Arduino envía desde su programa interno la información al display LCD y que en este caso hemos conectado la placa a una fuente USB externa, por lo que no necesitamos de un PC con puerto USB.



Se aprecia en el vídeo que si eliminamos la alimentación al pin 15 (en este caso abriendo el circuito eliminando la resistencia de 12 ohm) el LCD queda sin retroiluminación, y tenemos un LCD 100% operativo pero sin dicha característica.

4 comentarios:

David Puerto dijo...

En el codigo falta introducir la libreria del lcd al principio:

#include

alejandro dijo...

Hola David, ¿De donde es esa plataforma metálica donde tienes la placa Arduino?. Me hace mucha falta y no se como buscarla.

Un saludo.

David Puerto dijo...

Hola Alejandro antes de nada de nada decir que el post no es mío.la plataforma parece una lámina de metaclilato (tipo de plastico).

Ricard Forner dijo...

Hola Alejandro,

Esta base para arduino la compre en http://www.cooking-hacks.com/ pero veo que ya no la venden.