Tutorial: LCD Gráfico Nokia 5110 con Arduino

El siguiente tutorial esta basado en el LCD Gráfico 84×48 – Nokia 5110, ofrecido por ELECTRONILAB.CO. Puedes adquirir este módulo en nuestra tienda.

El LCD Gráfico de Nokia 5110, es una pequeña pantalla gráfica LCD montada sobre un PCB de 45mm x 45mm, que tiene una resolución de 84 x 48 píxeles sobre los que podemos dibujar gráficos o textos.

Existen varias librerias que funcionan con este LCD, sin embargo, como existen varios modelos, los pines pueden cambiar de nombre y posición y por tanto su uso puede resultar complicado. Aquí explicaremos algunas de las librerías más comunes para este modelo.

Los pines del LCD son los siguientes:

lcd_nokia5110_3_Electronilab

Número de Pin
Nombre de Pin
Función de Pin
¿Entrada/Salida?
Notas
1
RST
Reset
Entrada
2
CE
Chip Selection (Selección de chip)
Entrada
3
DC
Data/Commands choice
Entrada
4
DIN
Serial data in
Entrada
5
CLK
Serial clock
Entrada
6
VCC
Positive power supply (Alimentación positiva)
Entrada
2.7V a 3.3V
7
LIGHT
LED backlight supply
Entrada
Conectar a GND para max brillo
8
GND
Ground (Tierra)
Entrada

Uso de las líneas de control

El LCD Nokia 5110 tiene 5 líneas de control; la interfaz es del tipo SPI. Cuando no se utilizan otros dispositivos SPI, el pin 2 (CE), de selección de chip se puede conectar a GND, de modo que se pueden usar solo 4 líneas de control. Para ahorrar más pines de Arduino, hay una opción para usar sólo 3 líneas de control, cuando el pin de reset del LCD está conectado al pin reset de Arduino. Esto sólo funciona cuando se utiliza una terminal serial, no con un Arduino independiente.

Puede usarse un pin adicional de tipo PWM, para controlar el brillo de forma dinámica de la luz de fondo de la pantalla (backlight).

Alimentación

La pantalla utiliza el chip controlador PCD8544 de Philips que fue utilizado en el Nokia 3310 y el 5110. Este chip está diseñado para funcionar sólo a 3.3V y tienen niveles de comunicación de 3V, por lo que para los microcontroladores de 5V se requiere un conversor de nivel lógico o resistencias de limitación de corriente (de lo contrario podría dañar fácilmente la pantalla).

Esquema de conexión

El esquema muestra el diagrama de conexión para el LCD y su uso con Arduino UNO. Se puede observar que se utilizaron resistencias de 10kΩ, para limitar la corriente por los pines y no dañar la pantalla.

 LCD_nokia-5110_Arduino_Electronilab_co-compressor

Librerías y ejemplos en Arduino

Existen varias librerías compatibles con Arduino, que hemos usado satisfactoriamente como demostración. Cada una tiene sus ventajas y dependiendo de la aplicación, se puede escoger la que más convenga. El código de las librerías es compatible y fácilmente adaptable para todas las versiones de Arduino existentes.

1. Adafruit PCD8544 Nokia 5110 LCD library: Esta librería posee una gran variedad de gráficos, entre ellos círculos, lineas, cuadros, triángulos, además de varios tipos de fuentes y la posibilidad de imprimir imágenes como logos o figuras.

Esta librería requiere de la instalación adicional de la librería gráfica GFX para su utilización.

Pasos de instalación y uso

  • Descargar la librería Adafruit PCD8544 Nokia 5110 LCD haciendo click en el siguiente botón:

[button style="download" link="https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip"]Descargar la librería Adafruit PCD8544 Nokia 5110 LCD[/button]

  • Descomprimir y renombrar la carpeta como “Adafruit_PCD8544_Nokia_5110_LCD
  • Abrir el IDE de Arduino. Click en Sketch > Import Library > Add Library y seleccionar la carpeta anterior. Con esto ya tendremos instalada la librería.

Para utilizar los ejemplos también tenemos que instalar la librería gráfica GFX.

  • Descargar la librería gráfica GFX haciendo click en el siguiente botón:

[button style="download" link="https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip"]Descargar la librería gráfica GFX[/button]

  • Descomprimir y renombrar la carpeta como “Adafruit_GFX_Library
  • Abrir el IDE de Arduino. Click en Sketch > Import Library > Add Library y seleccionar la carpeta anterior. Con esto ya tendremos instalada la librería.
  • Por último reinicia el IDE de Arduino.

Ejemplo:

  • Abre el ejemplo de Arduino que instalamos junto con las librerías anteriores llamado pcdtest. En el siguiente video mostramos el resultado:

 

Si queremos modificar el contraste de nuestro LCD, basta con editar la siguiente linea:

display.setContrast(50);

Nosotros encontramos buenos resultados con un valor de 60.

2. Library: LCD5110_Basic: Esta librería esta desarrollada no solo para Arduino sino además para Chipkit. Es de uso sencillo e integra varios tamaños de números, letras y la posibilidad de mostrar bitmaps.

Pasos de instalación y uso

  • Descargar la librería LCD5110_Basic haciendo click en el siguiente botón:

[button style="download" link="http://www.henningkarlsen.com/electronics/download.php?f=LCD5110_Basic.rar"]Descargar la libreríaLCD5110_Basic[/button]

  • Descomprimir el archivo.
  • Abrir el IDE de Arduino. Click en Sketch > Import Library > Add Library y seleccionar la carpeta descomprimida. Con esto ya tendremos instalada la librería.

Ejemplo:

Esta librería viene con varios ejemplos. Para abrirlos damos click en File >Examples > LCD5110_Basic > Arduino (AVR) y seleccionamos algún ejemplo.

Esta librería usa una configuración distinta de pines del Arduino Uno. Para que los ejemplos funcionen con la configuración que hemos venido siguiendo, basta con cambiar esta linea de código:

LCD5110 myGLCD(8,9,10,11,12);

Por esta:

LCD5110 myGLCD(7,6,5,3,4);

En el siguiente vídeo se aprecia el ejemplo LCD5110_Bitmap de esta librería.

 

Para insertar Bitmaps personalizados como nuestro logo hacemos uso de una sencilla aplicación llamada LCD Assistant. Puedes descargarla del siguiente enlace:

[button link="http://en.radzio.dxp.pl/bitmap_converter/LCDAssistant.zip"]Descargar LCD Assistant[/button]

En LCD Asistant cargamos la imagen hecha en Paint de nuestro logo. En este caso la imagen es de 84×48 pixeles en formato .bmp.

LCDAssistant logo

Para guardarla hacemos click en File > Save Output y seleccionamos el nombre agregando la extensión .txt al final.

Abrimos el archivo .txt y copiamos el arreglo de números hexadecimales. Este arreglo de números lo podemos pegar en el ejemplo LCD5110_Bitmap, creando un arreglo llamado por ejemplo logo_electronilab_84x48, de la siguiente manera.

uint8_t logo_electronilab_84x48 [] PROGMEM={ 0xFF, 0xFF, ...........};

Luego basta con ejecutar la siguiente instrucción para mostrarlo en pantalla.

myGLCD.drawBitmap(0, 0, logo_electronilab_84x48, 84, 48);

Otros ejemplos de esta librería muestran el uso de distintos tamaños de números como el LCD5110_NumberFonts y la forma de imprimir varios mensajes como el ejemplo LCD5110_ViewFont. Depende de tí, explorar todas las posibilidades de esta gran librería.

 

ELECTRONILAB invierte tiempo y recursos en el desarrollo de estos tutoriales y provee código fuente abierto, por favor apoya a ELECTRONILAB mediante la compra de productos en nuestra tienda.
Leer más
15

Tutorial: Uso de Driver L298N para motores DC y paso a paso con Arduino

El siguiente tutorial esta basado en el Driver dual para motores (Full-Bridge) – L298N, ofrecido por ELECTRONILAB.CO. Puedes adquirir este módulo en nuestra tienda.

Este módulo basado en el chip L298N te permite controlar dos motores de corriente continua o un motor paso a paso bipolar de hasta 2 amperios.

El módulo cuenta con todos los componentes necesarios para funcionar sin necesidad de elementos adicionales, entre ellos diodos de protección y un regulador LM7805 que suministra 5V a la parte lógica del integrado L298N. Cuenta con jumpers de selección para habilitar cada una de las salidas del módulo (A y B). La salida A esta conformada por OUT1 y OUT2 y la salida B por OUT3 y OUT4. Los pines de habilitación son ENA y ENB respectivamente.

L298N_pines_Electronilab

En la parte inferior se encuentran los pines de control del módulo, marcados como IN1, IN2, IN3 e IN4.

Conexión de alimentación

Este módulo se puede alimentar de 2 maneras gracias al regulador integrado LM7805.

L298N_power_Electronilab

Cuando el jumper de selección de 5V se encuentra activo, el módulo permite una alimentación de entre 6V a 12V DC. Como el regulador se encuentra activo, el pin marcado como +5V tendrá un voltaje de 5V DC. Este voltaje se puede usar para alimentar la parte de control del módulo ya sea un microcontrolador o un Arduino, pero recomendamos que el consumo no sea mayor a 500 mA.

Cuando el jumper de selección de 5V se encuentra inactivo, el módulo permite una alimentación de entre 12V a 35V DC. Como el regulador no esta funcionando, tendremos que conectar el pin de +5V a una tensión de 5V para alimentar la parte lógica del L298N. Usualmente esta tensión es la misma de la parte de control, ya sea un microcontrolador o Arduino.

[box type="note"]Recomendamos nunca conectar una tensión de entrada al pin de +5V, cuando el jumper de selección de 5V se encuentre activado. Esto provocaría un corto y podría dañar permanentemente el módulo.[/box]

Control de un motor DC

Como demostración, vamos a controlar un motor DC a través de la salida B del módulo. El pin ENB se conectará con el jumper a +5V.

El ejemplo esta desarrollado en Arduino UNO, pero el código es compatible con cualquier Arduino o pinguino.

Esquema de conexión

L298N_1_mot

Código en Arduino

El programa básicamente activa el motor en un sentido por 4 segundos, luego detiene el motor por 0.5 segundos, después activa el motor en sentido inverso por 4 segundos y por último detiene el motor por 5 segundos. Luego repite la acción indefinidamente.

Control de un motor DC variando su velocidad

Si queremos controlar la velocidad del motor, tenemos que hacer uso de PWM. Este PWM será aplicado a los pines de activación de cada salida o pines ENA y ENB respectivamente, por tanto los jumper de selección no serán usados.

Esquema de conexión

L298N_1_mot_PWM

Código en Arduino

El programa controla la velocidad de un motor DC aplicando PWM al pin ENB del módulo L298N.

Control de un motor paso a paso bipolar

Los motores paso a paso pueden ser bipolares o unipolares. En este ejemplo trabajamos con un motor paso a paso bipolar, sin embargo este driver es capaz de controlar un motor paso a paso unipolar si se conecta en configuración bipolar, obviando los cables del tab central de las bobinas del motor. El máximo consumo permitido es de 2 amperios.

Esquema de conexión

Control_Motor_paso_a_paso_arduino_L298N_Electronilab

El esquema de conexión muestra la conexión utilizada entre el modulo L298N y el motor paso a paso. Cada una de las bobinas del motor esta conectada a una salida del módulo. Para identificar las bobinas de un motor paso a paso utilizamos un multímetro en modo de continuidad. Los cables que dan continuidad son los extremos de cada bobina.

En este caso, como el motor paso a paso es de 12 VDC, utilizamos el jumper de selección de +5V, para activar el regulador interno del módulo y solo hacer uso de una fuente de 12 VDC para alimentar el motor.

Los jumper de activación ENA y ENB los hemos activado de igual manera.

Código de Arduino

El código de Arduino hace girar el motor paso a paso una vuelta en un sentido y luego ejecuta otra vuelta en sentido opuesto. Este código hace uso de la librería ‘Stepper.h‘, que se instala por defecto en las ultimas versiones del IDE de Arduino.

El valor de la variable stepsPerRevolution depende del número de pasos del motor paso a paso. Este valor se encuentra en las especificaciones de la hoja de datos del motor. En nuestro caso el motor paso a paso utilizado es de 48 pasos/vuelta.

 Vídeo de demostración:

[box]ELECTRONILAB invierte tiempo y recursos en el desarrollo de estos tutoriales y provee código fuente abierto, por favor apoya a ELECTRONILAB mediante la compra de productos en nuestra tienda.[/box]
Leer más
105