The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

SOBRE ESTE MANUAL:

El siguiente documento es una herramienta de la Academia de Ingeniería Informática para la realización de prácticas de la asignatura de Arquitectura de Computadoras.
Está dirigida a docentes y alumnos adscritos a la carrera con el fin de brindar una guía de actividades para su impartición en las modalidades de curso normal, curso de verano o asesoría, así como para la elaboración de planeaciones didácticas.

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Yasser Lombard, 2020-11-08 21:04:38

ARQUITECTURA DE COMPUTADORAS - MANUAL DE PRÁCTICAS

SOBRE ESTE MANUAL:

El siguiente documento es una herramienta de la Academia de Ingeniería Informática para la realización de prácticas de la asignatura de Arquitectura de Computadoras.
Está dirigida a docentes y alumnos adscritos a la carrera con el fin de brindar una guía de actividades para su impartición en las modalidades de curso normal, curso de verano o asesoría, así como para la elaboración de planeaciones didácticas.

Keywords: arduino,motherboard,assembler,sensors,digital,programming,actuators,lcd

P á g i n a | 234

IMAGEN 347: CLAVIJA PARA EL SUMINISTRO DE VOLTJAE DE AC PARA EL FOCO

PASO 2: Adaptar dos cables al foco para su conexión con el protoboard:

IMAGEN 348: FOCO A UTILIZAR, CON DOS SECCIONES DE CABLE CONECTADOS AL SOCKET

PASO 3: Implementar el siguiente sketch y cargarlo a la tarjeta antes de realizar la conexión:

IMAGEN 349: SKETCH A IMPLEMENTAR, PRIMERA PARTE, PRUEBA 2

P á g i n a | 235

IMAGEN 350: SKETCH A IMPLEMENTAR, SEGUNDA PARTE, PRUEBA 2

PASO 4: Conectar el siguiente esquema eléctrico después de programar la tarjeta:

IMAGEN 351: ESQUEMA ELÉCTRICO, PRUEBA 2

Nota: en la sección del relevador, hay un símbolo de un fusible, que representa en realidad al
foco. El esquema de prototipado (aproximado) se muestra a continuación:

P á g i n a | 236

IMAGEN 352: ESQUEMA DE PROTOTIPADO, PRUEBA 2

P á g i n a | 237
Nota: en el esquema, se utiliza un generador de funciones que es el equivalente de un
contacto de AC; en su formato real, el punto positivo (rojo) sería la fase o línea viva y el punto
negativo (negro) sería el neutro, como se muestra en la imagen 270:

IMAGEN 353: ESQUEMA DE TERMINALES EN UN CONTACTO DE AC, PARA EL ESQUEMA DE PROTOTIPADO Y
REFERENCIA PARA LA CLAVIJA

PASO 5: Conectar la fuente de alimentación a la tarjeta y, con precaución la clavija a la línea
de AC mediante la extensión:

IMAGEN 354: ESTADO 1: BAJO NIVEL DE ILUMINACIÓN, SÓLO LED 1 ENCENDIDO

P á g i n a | 238

IMAGEN 355: ESTADO 2: NIVEL INTERMEDIO DE ILUMINACIÓN, SÓLO LED’S 1 Y 2 ENCENDIDOS

IMAGEN 356: ESTADO 3, ALTO NIVEL DE ILUMINACIÓN, TODO EL SISTEMA ENCENDIDO

PRUEBA SUGERIDA: Ajuste el sketch para que el encendido de los LED’s y el foco se realice
cuando el nivel de iluminación sea bajo, y se apaguen conforme éste aumente.

P á g i n a | 239

PRUEBA 3: IMPLEMENTACIÓN DE UN PUENTE H CON TRANSISTORES

En esta prueba se implementará un Puente H a base de transistores NPN, para cambiar el
sentido de giro de un Motor DC y su detención mediante señales digitales. Los materiales a
utilizar son los siguientes:

ARDUINO® UNO R3 CABLE USB A A USB B 4 RESISTORES DE 1kΩ

4 TRANSISTORES NPN (MISMO 1 MOTOR DC (9 V A 12 V) 4 DIODOS 1N4007 O EQUIVALENTES
MODELO)

2 LED (CUALQUIER COLOR) 2 RESISTORES DE 220 Ω O 330 Ω 1 PILA 9 V CON BROCHE

PROTOBOARD 2 RESISTORES DE 10 KΩ 2 BOTONES PULSADORES NA

CABLES DUPONT (JUMPERS) DOBLE MACHO IDE DE ARDUINO

Para esta prueba, se seguirá el comportamiento de la siguiente tabla de verdad:

BTN1 BTN2 LED1 LED2 MOTOR

0 0 APAGADO APAGADO DETENIDO
0 1 APAGADO ENCENDIDO GIRO A LA DER
1 0 ENCENDIDO APAGADO GIRO A LA IZQ.
1 1 APAGADO APAGADO
DETENIDO

TABLA 19: TABLA DE VERDAD, PRUEBA 3

P á g i n a | 240

PASO 1: Implementar el siguiente diagrama eléctrico:

IMAGEN 357: ESQUEMA ELÉCTRICO, PRUEBA 3

El esquema de prototipado es el siguiente:

P á g i n a | 241

IMAGEN 358: ESQUEMA DE PROTOTIPADO, PRUEBA 3

P á g i n a | 242
PASO 2: Implementar y descargar el siguiente sketch, que corresponde a la tabla de verdad
de la prueba:

IMAGEN 359: CÓDIGO DEL SKETCH A IMPLEMENTAR, PARTE 1, PRUEBA 3

IMAGEN 360: CÓDIGO DEL SKETCH A IMPLEMENTAR, PARTE 2, PRUEBA 3

PASO 3: Descargar el sketch a la tarjeta y efectuar las combinaciones indicadas en la tabla 4:

P á g i n a | 243

IMAGEN 361: COMBINACIÓN 1: BOTONES SIN PRESIONAR, LEDS APAGADOS Y MOTOR APAGADO

IMAGEN 362: COMBINACIÓN 2: SÓLO BOTÓN 2 PRESIONADO, SÓLO LED 2 ENCENDIDO Y MOTOR GIRANDO A LA
IZQUIERDA

P á g i n a | 244

IMAGEN 363: COMBINACIÓN 3: SÓLO BOTÓN 1 PRESIONADO, SÓLO LED 1 ENCENDIDO Y MOTOR GIRANDO A LA
DERECHA

IMAGEN 364: COMBINACIÓN 4: SÓLO BOTONES PRESIONADOS, LEDS ENCENDIDOS Y MOTOR APAGADO

P á g i n a | 245

PRUEBA 4: CONTROL DE UN SERVOMOTOR CON CICLOS FOR

En esta prueba se activará un servomotor utilizando únicamente ciclos for, al tiempo que se
analizará cómo se da de alta una librería o header y cómo asociar un nombre de objeto para
hacer referencia a sus funciones. Los materiales a utilizar son los siguientes:

ARDUINO® UNO R3 CABLE USB A A USB B 3 LED (CUALQUIER COLOR)

3 RESISTORES DE 220 Ω O 330 Ω 1 MICROSERVO DE 33 gr DE TORQUE 1 TIRA DE PINES O ESPADINES
(CUALQUIER MARCA) MACHO (OPCIONAL)

PROTOBOARD CABLES DUPONT (JUMPERS) DOBLE MACHO IDE DE ARDUINO

La prueba seguirá el siguiente diagrama de flujo:

INICIO

GIRAR SERVO DE 0 A
180 GRADOS

ESPERAR 1 SEGUNDO

GIRAR SERVO DE 180
A 0 GRADOS

ESPERAR 1 SEGUNDO

IMAGEN 365: DIAGRAMA DE FLUJO. PRUEBA 4

P á g i n a | 246

PASO 1: Implementar el siguiente esquema eléctrico:

IMAGEN 366: ESQUEMA ELÉCTRICO, PRUEBA 4

Dependiendo del modelo del servomotor que se utilice, analice la combinación de colores
del cable de señal y de alimentación. Consulte la introducción a esta práctica para consultar
la configuración.

El esquema de prototipado se muestra en la página siguiente:

P á g i n a | 247

IMAGEN 367: ESQUEMA DE PROTOTIPADO, PRUEBA 4

P á g i n a | 248
PASO 2: Implementar código requerido de acuerdo al diagrama de flujo:

IMAGEN 368: CÓDIGO DEL SKETCH A IMPLEMENTAR, PARTE 1, PRUEBA 4

IMAGEN 369: CÓDIGO DEL SKETCH A IMPLEMENTAR, PARTE 2, PRUEBA 4

IMAGEN 370: CÓDIGO DEL SKETCH A IMPLEMENTAR, PARTE 3, PRUEBA 4

P á g i n a | 249

Analizando las nuevas funciones en el código, la primera es la siguiente:

IMAGEN 371: CABECERA O LIBRERÍA SERVO.H

Este es un llamado a la librería (o formalmente llamada biblioteca) preinstalada Servo.h, la
cual contiene configuraciones internas y rutinas para gestionar el funcionamiento del
microservo de forma directa, es decir, no se tenga que colocar líneas de código que han más
grande el sketch o realizar funciones específicas de funcionamiento específicas de los
controladores de los dispositivos, como LCD’s, módulos de comunicación, etc. Para hacer el
llamado a una librería siempre se inicia con el símbolo de numeral (#) y la palabra include, la
cual puede ir junta o separada.

IMAGEN 372: FORMATO Y ESTRUCTURA DEL LLAMADO A LIBRERÍAS (CUALQUIERA)

El siguiente es la configuración del objeto que será asociado a las configuraciones y rutinas
de Servo.h:

IMAGEN 373: LLAMADO DEL OBJETO 'MICROSERVO', REFERENTE A LA LIBRERÍA SERVO.H

En esta línea, la palabra microservo es el nombre de objeto que haremos referencia durante
el resto del código. El nombre es libre, sin uso de comillas o apóstrofes y siempre y cuando no
coincida con otras palabras reservadas; en este caso, no se requieren argumentos (como en
otras librerías)

La función extra es la siguiente:

P á g i n a | 250

IMAGEN 374: FUNCIÓN DEFINE

Este es un ejemplo para declarar valores constantes; normalmente éstas se declaran cuando
se necesitan referencias o datos fijos, o bien para hacer configuraciones de pines fácilmente
(se emplearán constantes en prácticas posteriores para observar ésta ventaja). El formato
para declarar constantes es el símbolo de numeral (#) seguido de la palabra define, la cual
puede ir junta o separada. Posteriormente se da un espacio para el nombre, que también es
libre, sin uso de comillas o apóstrofes y siempre y cuando no coincida con otras palabras
reservadas y, por último, un espacio más el valor numérico que puede ser entero, decimal o
en formato de carácter.
La siguiente función es la siguiente:

IMAGEN 375: FUNCIÓN DE CONFIGURACIÓN .ATTACH

La rutina .attach, asociada al nombre de objeto microservo, se coloca en la función void
setup() para configurar el pin por el cual saldrá la señal de control para el servo. Aquí se
observa que, en vez de escribir el pin en forma numérica, se da el nombre de la constante
SIGNAL, la cual tiene predefinida el valor 3. Esto es útil ya que, si se quiere cambiar el pin de
salida, se cambia desde #define y el compilador tomará el nuevo valor.

IMAGEN 376: FORMATO Y ESTRUCTURA DE .ATTACH

La última función, ya dentro de void loop(), es la siguiente:

P á g i n a | 251

IMAGEN 377: FUNCIÓN .WRITE

Esta rutina indica al compilador que el valor dado al argumento, sea de una variable o un
número entero, será el valor al cual se moverá el servomotor. Los detalles se muestran en la
imagen siguiente:

IMAGEN 378: FORMATO Y ESTRUCTURA DE .WRITE

PASO 3: Descargar el sketch a la tarjeta y observar lo que ocurre. Para una mejor referencia
en la imagen se ha colocado un elemento para señalar las posiciones del servomotor que se
corresponden con 0°, 90° y 180°, asociados a los Verde, Amarillo y Rojo respectivamente:

IMAGEN 379: SERVOMOTOR EN POSICIÓN INICIAL A 0°

P á g i n a | 252

IMAGEN 380: SERVOMOTOR EN POSICIÓN A 90°

IMAGEN 381: SERVOMOTOR EN POSICIÓN FINAL A 180°

Usando un servo únicamente, la alimentación del puerto USB basta. Si se requieren 2 o más
servomotores, se debe utilizar fuente externa o módulos de expansión para manejar servos.

P á g i n a | 253

PRUEBAS A REALIZAR POR PARTE DEL ALUMNO

PRUEBA 1 Sistema de control de temperatura (Versión 2)
PRUEBA 2 Modificar el circuito de la Prueba 2 de la Práctica 4, de manera que incluya dos relevadores que activarán un
PRUEBA 3 ventilador (12 V, 120 VAC) y un foco de 100 W como fuente de calor. Cuando se alcance la temperatura
máxima se debe apagar el foco y encender el ventilador, hasta que la temperatura se estabilice por debajo
PRUEBA 4 del nivel normal, sólo entonces el ventilador se apagará y el foco volverá a encender.
Prueba 2: Control de Encendido de Motores (Versión 1)
Dos motores de AC (simular con focos de AC de color diferente) estarán apagados hasta que no se presione
un botón de Arranque; al presionarlo encenderá un foco color verde y un buzzer por 2 segundos, después
encenderá en motor 1 por 3 segundos y después el motor 2 por 4 segundos, y al final todo vuelve a su estado
normal. Si se mantiene presionado un botón de Paro y se presiona el botón de Arranque, se encenderá el
buzzer de forma intermitente 4 veces y tanto motores como el foco debe permanecer apagados hasta que
dicho lapso se cumpla y el botón de paro se suelte.
Prueba 3: Sistema básico de posicionamiento (Versión 1)
A un sistema están conectadas tres fotorresistencias, separadas a una distancia aproximada de 10 a 15 cm, un
servomotor y tres LED. Los LED servirán como indicadores de posición (Izquierda, Derecha y Centro). Cuando se
incida luz en alguna de las fotorresistencias, el servomotor se moverá hacia la derecha, la izquierda o hacia el
centro y se mantendrá ahí hasta que no se incida luz en otra fotorresistencia, y al mismo tiempo el LED
correspondiente se encenderá. Si se incide luz en dos o más fotorresistencias, el servo debe detenerse.
Prueba 4: Puerta de Elevador (Versión 2)
Retomar la prueba 5 de la práctica 3, y realizar las siguientes modificaciones:

 Adicional un motor eléctrico que gire en un sentido cuando el elevador suba y en el contrario cuando
baje.

 Un servo debe será una aguja indicadora del movimiento y del piso correspondiente; si el elevador
está detenido, hasta que no se presione un botón que indique el piso, el servo no debe moverse; una
vez seleccionado el piso, el servo debe moverse al igual que el motor hasta que alcance su destino;
en ese momento el servo debe detenerse y mantenerse, y el motor debe detenerse.

 Los pisos estarán indicados por LED’s indicadores o un LED RGB.
 Una alarma sonora deberá emitir una alerta corta al momento en que el elevador se detiene y se

abre la puerta.
Control de auto dirigido por radiofrecuencia (Versión 2)

PRUEBA 5  Retomar la prueba 7 de la práctica 3, y realizar las siguientes modificaciones:
 Adicionar dos servomotores que se moverán a la derecha o a la izquierda, de acuerdo a la

combinación de los botones de dirección.
 Adicionar dos motores de cd que simularán las ruedas del vehículo; cuando se indique el movimiento

hacia adelante, éstos deberán moverse en un sentido y al mismo tiempo; similar será el
comportamiento si se indica el movimiento hacia atrás, sólo que el sentido será al contrario. Si se
indica movimiento a la derecha o a la izquierda, un motor debe moverse y el otro no.
 Retirar los indicadores de batería baja y enlace con control.
 Adicionar dos relevadores que permitan activar y desactivar dos focos de forma intermitente cuando
se indique que el vehículo se mueva a la derecha o a la izquierda, a modo de direccionales. Si se
mueve hacia adelante o hacia atrás, los relevadores deben estar desactivados.

RESULTADOS Y CONCLUSIONES

Al término de la práctica, con las pruebas de configuración básica como las sugeridas, el
alumno obtendrá las habilidades para entender y resolver problemas sencillos donde se
combinen elementos analógicos, como sensores de cualquier tipo, así como el uso de
actuadores sencillos o didácticos que le permitan controlar la activación de elementos de
potencia con las precauciones necesarias. Los sistemas de control retroalimentados más
avanzados basan su lógica con estos ejemplos sencillos.

P á g i n a | 254

EVALUACIÓN

CRITERIOS/INDICADORES EXCELENTE BUENO SUFICIENTE INSUFICIENTE
(20 Puntos) (17 Puntos) (14 Puntos) (0 Puntos)
EJECUCIÓN DE
PRUEBAS DE Se ejecutan Se ejecutan Se ejecutan Se ejecutan de forma
correctamente TODAS adecuadamente TODAS adecuadamente parte regular o errónea buena
CONFIGURACIÓN parte de las pruebas de
BÁSICA las pruebas de las pruebas de de las pruebas de configuración solicitadas.
configuración solicitadas. configuración solicitadas. configuración solicitadas.
EJECUCIÓN DE La prueba presenta
PRUEBA 1 Y2 La prueba se ejecuta La prueba se ejecuta La prueba se ejecuta múltiples fallas en la
correctamente y adecuadamente, adecuadamente, lógica o requerimientos
EJECUCIÓN DE
PRUEBA 3 y 4 conforme a la lógica o conforme a la lógica o aunque se presentan 3 solicitados en el
requerimientos requerimientos fallas en la lógica o problema o no se lleva a
EJECUCIÓN DE solicitados en el solicitados en el requerimientos
PRUEBAS problema. solicitados en el cabo.
problema, presentado al problema.
SUGERIDAS La prueba se ejecuta menos 2 fallas La prueba se ejecuta La prueba presenta
correctamente y adecuadamente, múltiples fallas en la
REPORTE DE La prueba se ejecuta lógica o requerimientos
PRÁCTICA conforme a la lógica o adecuadamente, aunque se presentan 3
requerimientos fallas en la lógica o solicitados en el
solicitados en el conforme a la lógica o requerimientos problema o no se lleva a
problema. requerimientos solicitados en el
solicitados en el problema. cabo.
Las pruebas se ejecutan
correctamente y problema, presentado al Las pruebas se ejecutan Las pruebas presentan
menos 2 fallas adecuadamente, múltiples fallas en la
conforme a la lógica o
requerimientos La pruebas se ejecutan aunque se presentan 3 lógica o requerimientos
solicitados en los adecuadamente, fallas en la lógica o solicitados en los
problemas. requerimientos
conforme a la lógica o solicitados en los problemas o no se llevan
El alumno utiliza el requerimientos problemas. a cabo.
formato de prácticas solicitados en los El alumno utiliza el
formato de prácticas El alumno utiliza el
suministrado por el problemas, presentado suministrado por el formato de prácticas
docente, todas las al menos 2 fallas docente, al menos el
suministrado por el
secciones están El alumno utiliza el 60% las secciones están docente, pero menos del
correctamente formato de prácticas correctamente
documentadas, sus 50% de las secciones
evidencias y resultados suministrado por el documentadas, sus están correctamente
son claros y siguen las docente, al menos el evidencias y resultados documentadas, sus
especificaciones del 80% las secciones están son poco claros, aunque evidencias y resultados
son imprecisos, y no se
formato. correctamente siguen las
documentadas, sus especificaciones de siguen las
evidencias y resultados especificaciones de
son claros y siguen las formato.
especificaciones de formato.

formato.

BIBLIOGRAFÍA

Arduino: Sitio Oficial. (27 de Junio de 2016). Obtenido de https://www.arduino.cc

Dorf, R. C. (2005). Sistemas de Control Moderno (10 ed.). España: Pearson Prentice Hall.

Fitzgerald, S., Shiloh, M., & Igoe, T. (2013). Arduino Projects Book. Torino, Italia: Arduino LCC.

Floyd, T. L. (2008). Dispositivos Electrónicos. México: Pearson.

Instruments, N. (2018). National Instruments México. Obtenido de
http://digital.ni.com/public.nsf/allkb/039001258CEF8FB686256E0F005888D1

Lajarra Vizcaíno, J. R., & Pelegrí Sebastiá, J. (2014). Sistemas Integrados con Arduino (Primera
ed.). México, DF: Alfaomega.

Tojeiro Calaza, G. (2015). Taller de Arduino: Un Enfoque Práctico Para Principiantes. Mexico,
DF: Alfaomega.

Torrente Artero, Ó. (2013). Arduino: Curso Práctico de Formación. México, DF: Alfaomega.

P á g i n a | 255

PRÁCTICA 10: CONEXIÓN, CONFIGURACIÓN Y GESTIÓN DE UNA LCD EN
ARDUINO

INTRODUCCIÓN

LCD DE MATRIZ DE PUNTOS BASADA EN CONTROLADOR HITACHI HD44780
Las pantallas de cristal líquido (en inglés “Liquid Crystal Displays” [LCDs]) ofrecen una manera
muy rápida y vistosa de mostrar mensajes. Las podemos clasificar en LCDs de caracteres y
LCDs gráficas (estas últimas también llamadas GLCDs). Las primeras sirven para mostrar texto
ASCII y se comercializan en diferentes tamaños (16x2, 20x4...) donde el primer número indica
la cantidad de caracteres que caben en una fila, y el segundo número es el número de filas
que caben en la pantalla. Las segundas sirven para mostrar, además de texto, dibujos e
imágenes, y también se comercializan en diferentes tamaños, los cuales están definidos por
la cantidad de píxeles que pueden mostrar (128x64, 128x128...). Las LCDs de caracteres, por
su parte, pueden mostrar pequeños iconos de 5x7 píxeles o similar.

IMAGEN 382: LCD DE 16X2 ESTÁNDAR

IMAGEN 383: TAMAÑOS TÍPICOS DE LCD’S: 20X4 (IZQ.), 40X2 (CENTRO) Y 128X128 (DER.)

Las LCDs de caracteres más habituales son de 4-bit o 8-bit, dependiendo del número de
cables (bits) que necesitan tener conectados al circuito para poder recibir o enviar datos.
Ojo, solo se cuentan los cables que son estrictamente de transferencia de datos ya que en
realidad una LCD necesita no solo 4 o 8 cables para funcionar, sino varios más (como los de
alimentación, tierra, reseteado...). Otras características que pueden tener (o no) las LCDs de
caracteres son la posibilidad de iluminar el fondo de la pantalla (opción ideal para entornos
con poca luz ambiental) o la posibilidad de utilizar varios colores de fondo (y no solamente el
blanco/negro sobre azul/verde, que suele ser lo habitual), etc.

P á g i n a | 256

Cada modelo de LCD es diferente, por lo que es imprescindible consultar su datasheet
concreto para poder distinguir los diferentes pines de conexión que ofrece y sus características
generales. De todas formas, lo más habitual es que una LCD estándar ofrezca:

Un pin para recibir la alimentación (normalmente con los 5 V que proporciona la placa
Arduino ya está bien, pero hay modelos que requieren 3,3 V, así que hay que vigilar esto) y
otro pin para conectar la pantalla a tierra. Es conveniente conectar un divisor de tensión entre
la fuente de alimentación y el pin de alimentación de la pantalla para evitar posibles daños.
Para calcular el valor óptimo de esta resistencia, se deben consultar dos valores en el
datasheet del LCD: la corriente máxima soportada para la luz de fondo y la caída de tensión
causada por esta. Haciendo uso de la Ley de Ohm, si se resta dicha caída de tensión de los 5
V y se divide el resultado entre esa corriente máxima, obtendremos el valor de la resistencia
(redondeando al alza) que necesitamos. Por ejemplo, si la corriente máxima es de 16 mA y la
caída de tensión es de 3,5 V, la resistencia debería ser (5 – 3,5)/0,016 = 93,75 ohmios (o 100
ohmios redondeando a un valor estándar). Si no se puede consultar el datasheet, un valor
seguro para usar son 220 ohmios, aunque un valor tan alto hará que la luz de fondo sea más
tenue.

Un pin para regular el contraste de la pantalla. Este pin se debe conectar a la patilla central
de un potenciómetro de nuestro circuito (el cual a su vez ha de tener sus patillas exteriores
conectadas a la alimentación y tierra, respectivamente), de manera que regulando el
potenciómetro podremos regular el contraste de la pantalla.

Tres pines de control generalmente marcados como “RS”, “EN” y “RW”, que se deberán
conectar cada uno a un pin digital de la placa Arduino. El pin “RS” sirve para que el
microcontrolador le diga a la LCD si quiere mostrar caracteres o si lo que quiere es enviar
comandos de control (como cambiar la posición del cursor o borrar la pantalla por ejemplo).
Concretamente, si por ese pin el LCD detecta una señal LOW, los datos recibidos serán
tratados como comandos a ejecutar, y si detecta una señal HIGH, los datos recibidos serán el
texto a mostrar en la pantalla. El pin “EN” establece la línea “enable”, la cual sirve para advertir
a la LCD que el microcontrolador le va a enviar datos (ya sean de control o para imprimir).
Esta advertencia se produce cada vez que la señal recibida por ese pin cambia de HIGH a
LOW. Finalmente, el pin “RW” sirve para definir si se desea enviar datos a la LCD (lo más común)
o recibirlos de ella (muy poco común); si estamos en el primer caso, este pin deberá recibir
una señal LOW y en el segundo caso deberá recibir una señal HIGH, por lo que, como
normalmente no lo necesitaremos para nada, lo conectaremos casi siempre a tierra.

Varios pines (4 u 8, según si la LCD es de “4-bit” o “8-bit”) que se deberán conectar también
cada uno a un pin digital de la placa Arduino. Se usan para establecer las líneas de
comunicación en paralelo por donde se transfieren los datos y los comandos de control de la
placa Arduino hacia el LCD. Hay que saber que una LCD de 8 bits puede funcionar
perfectamente con solo cuatro cables de datos conectados (es decir, funcionando como
una LCD de 4 bits), pero lo hará a una velocidad menor. Dos pines exclusivos para el circuito
de la luz de fondo (uno para recibir la alimentación y el otro pin para conectar a tierra). Si la
pantalla no dispone de luz de fondo (también llamada de “retroalimentación”), estos pines o
no existirán o no serán usados para nada.

P á g i n a | 257
La memoria DDRAM(Data Display Ram): corresponde a una zona de memoria donde se
almacenan los caracteres que se van a representar en pantalla. Es decir es la memoria donde
se almacenan los caracteres a mostrar con su correspondiente posición.

IMAGEN 384: REPRESENTACIÓN DE UN CARACTER EN UN BLOQUE DE LA PANTALLE DEL LCD, ALMANCENADO EN
DDRAM

La memoria CGROM es una memoria interna donde se almacena una tabla con los
caracteres que podemos visualizar en el LCD.

IMAGEN 385: CARACTERES IMPRIMIBLES EN UNA LCD

P á g i n a | 258

OBJETIVO

Implementar sketches en Arduino y realizar las conexiones eléctricas necesarias para el control
y gestión de una LCD de 16x2, con las librerías necesarias, para la impresión de mensajes y
valores numéricos.

METODOLOGÍA

 Preparar las conexiones necesarias para la conexión de una LCD al protoboard
 Analizar la librería para el control de LCD’s basadas en el controlador Hitachi HD44780

o Librería y rutinas de LiquidCrystal.h
 Desplegar mensajes en pantalla

o Función .setCursor
o Función .home
o Función .print

 Cadena de caracteres
 Números

 Decimal
 Binario

o Hexadecimal
o Función .clear
 Desplegar valores de variables o constantes

RECURSOS MATERIALES Y EQUIPO NECESARIO

 1 Arduino UNO REV 3 (Original o Genérica) con cable USB
 3 LED (Cualquier color)
 3 Resistores de 200 Ω o 300Ω
 2 Potenciómetros (Cualquier Valor)
 Protoboard (Cualquier tamaño)
 Cables Conductores (Dupont M-M) o alambre estañado calibre 22
 Cautín
 Estaño
 Tira de pines o espadines macho
 IDE de Arduino®

CORRESPONDENCIA CON LA ASIGNATURA

UNIDAD NOMBRE TEMA(S) Y SUBTEMA(S) ACTIVIDADES, COMPETENCIAS U
5 OBJETIVOS
ARQUITECTURAS 5.3 – Características y uso
EMBEBIDAS O de elementos del Analizar el conjunto de terminales
microcontrolador y sus señales de interfaz con que
MICROCONTROLADORES
(MCU’s) 5.4.- Aplicaciones de los cuenta un microcontrolador
microcontroladores seleccionado.

Utilizar dispositivos de interfaz
humana (HID) para interactuar

con el usuario y el
microcontrolador

P á g i n a | 259

DESARROLLO DE LA PRÁCTICA

PRUEBA 1: DESPLEGAR MENSAJES Y VALORES NUMÉRICOS CON Y SIN FORMATO EN UNA LCD

En esta prueba se brindarán las conexiones necesarias para conectar la LCD al protoboard.
Posteriormente se realizará el sketch necesario para habilitar las funciones del componente
para imprimir, limpiar, mover y trasladar mensajes por la pantalla. Los materiales a utilizar son
los siguientes:

ARDUINO® UNO R3 CABLE USB A A USB B 1 LCD 16X2 BASADA EN PROTOBOARD
CONTROLADOR HITACHI

CABLES DUPONT (JUMPERS) TIRA DE PINES O ESPADINES PINZAS DE CORTE CAUTÍN de 30 W O 40 W
DOBLE MACHO MACHO

ESTAÑO IDE DE ARDUINO 1 POTENCIÓMETRO
(CUALQUIER VALOR)

En esta práctica no se seguirá un diagrama de flujo, pero sí se harán los procedimientos
necesarios de gestión y configuración.

PASO 1: Recortar la tira de espadines para que queden 16, las necesarias que muestra la LCD:

P á g i n a | 260

IMAGEN 386: LCD Y TIRA DE PINES CORTADA DE ACUERDO A LOS PINES DE ENTRADA SALIDA

IMAGEN 387: PINES COLOCADOS PARA SOLDAR

PASO 2: Soldar los pines recortados a la LCD, poniendo especial cuidado en no poner en
cortocircuito alguno de los pines.

P á g i n a | 261

IMAGEN 388: PINES SOLDADOS A LA LCD, PREPARADA PARA SU CONEXIÓN EN LA LCD

PASO 3: Implementar el siguiente esquema eléctrico:

IMAGEN 389: ESQUEMA ELÉCTRICO, PRUEBA 1 (PINES LCD 1-16 DE IZQ. A DER.)

El esquema de prototipado es el siguiente:

P á g i n a | 262

IMAGEN 390: ESQUEMA DE PROTOTIPADO, PRUEBA 1

P á g i n a | 263
PASO 4: Conectar la tarjeta para verificar que la LCD enciende, así como ajustar el contraste
de la pantalla:

IMAGEN 391: DEMOSTRACIÓN DE LCD CORRECTAMENTE CONECTADA Y ENCENDIDA, CON CONTRASTE ALTO

Como puede apreciarse, la LCD imprime una serie de cuadros, que indican que el LCD no
está habilitado por parte de la tarjeta. Esto nos ayudará a verificar cuando, una vez
implementado un código, si la conexión de los pines de la LCD y lo colocado en el sketch
coinciden. Para este caso, también servirá para ajustar el contraste con el potenciómetro;
ajuste de manera que sólo los cuadros sean visibles.

IMAGEN 392: LCD CON CONTRASTE MUY BAJO

P á g i n a | 264

PASO 5: Implementar el siguiente código de configuraciones básicas:

IMAGEN 393: CÓDIGO DE CONFIGURACIONES BÁSICAS 1, PRUEBA 1

El primer elemento es el llamado a la librería LiquidCrystal.h, que contiene todas las funciones
y rutinas de la LCD; el llamado y el formato se realizan exactamente igual que con la librería
Servo.h así como todas las relacionadas:

IMAGEN 394: LIBRERÍA LIQUIDCRYSTAL.H

La siguiente sección del código contiene una serie de constantes definidas que serán los pines
de configuración de la LCD, marcadas con comentarios:

P á g i n a | 265

IMAGEN 395: CONSTANTES PARA CONFIGURACIÓN DE PINES DEL LCD EN EL SKETCH

Cabe destacar que cualquier pin digital de la tarjeta puede configurarse para la LCD, y
también puede darse cualquier nombre a las constantes, como se vio anteriormente.
Las siguiente es la configuración del objeto para LiquidCrystal.h:

IMAGEN 396: CREACIÓN DEL OBJETO PARA REFERENCIAR A LIQUIDCRYSTAL

La creación del objeto sigue la misma dinámica que se vio para configuración de Servo.h,
con la diferencia de que LiquidCrystal.h requiere de una serie de argumentos que se
describen a continuación:

IMAGEN 397: FORMATO Y ARGUMENTOS PARA EL OBJETO DE LIQUIDCRYSTAL.H

Nota: para los pines de datos se deben ocupar los 4 bits menos significativos (D0, D1, D2, D3)
o los 4 bits más significativos (D4, D5, D6, D7) de la LCD en ese orden estrictamente; en algunas
aplicaciones se requieren los 8 bits; en ese caso, en los argumentos se colocan los 8 pines de
datos. Para estas prácticas sólo se requieren 4 bits.

P á g i n a | 266

La siguiente es una rutina de configuración:

IMAGEN 398: RUTINA LCD.BEGIN

Esta rutina, que se coloca en void setup(), inicia la LCD, y solicita dos argumentos en forma de
número entero que indica el número de COLUMNAS y el número de FILAS, respectivamente,
del LCD, es decir, el tamaño de la misma. Como se está trabajando con una LCD de 16
columnas por 2 filas, el tamaño se indica mediante 16,2; si ocupa una LCD más grande,
declare su tamaño correspondiente.

La siguiente rutina es de control:

IMAGEN 399: RUTINA LCD.CLEAR

Esta rutina sin argumentos indica a la LCD que el contenido que se halle en la pantalla sea
borrado completamente. Se puede invocar en cualquier parte del código.

La siguiente rutina es de navegación o impresión:

IMAGEN 400: RUTINA LCD.SETCURSOR

Esta rutina ubica el cursor de la LCD en la posición que se indique en los argumentos. Al igual
que en la rutina .begin, se indica la COLUMNA y luego la FILA respectivamente; los números
están en función del tamaño de la LCD. En la siguiente imagen se indica qué número
corresponde a cada fila y a cada columna:

P á g i n a | 267

IMAGEN 401: DESIGNACIÓN DE FILAS Y COLUMNAS EN UNA LCD

La siguiente rutina es de impresión:

IMAGEN 402: RUTINA LCD.PRINT SIMPLE

Intuitivamente esta rutina nos sirve para imprimir cadenas de caracteres o valores numéricos,
que se verán en los siguientes pasos. Si es una cadena se debe colocar el contenido a imprimir
entre comillas, teniendo cuidad que el mensaje no exceda la cantidad de columnas, porque
el mensaje se desplegaría en forma incompleta (aunque existen rutinas para desplazamiento
que se pueden consultar en la ayuda de Arduino®) y que los caracteres sean imprimibles.
PASO 6: Descargar el sketch a la tarjeta y observar lo que ocurre:

IMAGEN 403: IMPRESIÓN DE MENSAJES EN LA LCD DE ACUERDO AL CÓDIGO DEL PASO 5, PRUEBA 1

P á g i n a | 268
PASO 7: Implementar el siguiente sketch con las modificaciones que se muestran y descargarlo
a la tarjeta:

IMAGEN 404: PROGRAMA MODIFICADO PARA PASO 7, PRUEBA 1

Note que las rutinas .setCursor(0,0) fueron sustituidas por las siguiente rutina:

IMAGEN 405: RUTINA LCD.HOME

Esta rutina es el equivalente de .setCursor(0,0), es decir, la LCD traslada el cursor a la primera
columna y la primera fila. Como se aprecia, no se requieren argumentos.

P á g i n a | 269
Aunque ya conocida, la rutina .print tiene otros elementos para imprimir valores de constantes
o variables (definidas o provenientes de sensores u otros elementos) y en diferentes formatos,
como se mostrará en las imágenes siguientes y en las modificaciones para observar las
diferencias:
Si la variable valor_dec (como en este ejemplo) o cualquier otra de tipo entera o numérica,
la LCD mostrará su valor tal cual:

IMAGEN 406: RUTNIA LCD.PRINT PARA IMPRESIÓN DE VARIABLES O CONSTANTES, SIN FORMATO DEFINIDO

En cambio, se puede indicar a qué base numérica se desea imprimir el valor, colocando la
base con las palabras clave DEC (DECIMAL), OCT (OCTAL), BIN (BINARIO) o HEX
(HEXADECIMAL) como segundo argumento, separado por una coma y en mayúsculas, como
se muestra en la imagen siguiente:

IMAGEN 407: RUTINA LCD.PRINT CON FORMATO DE IMPRESIÓN DEFINIDO

Las imágenes siguientes muestran la variable valor_dec impresa en distintos formatos; se
modificó el código sólo para demostrar los equivalentes de la imagen 324:

IMAGEN 408: IMPRESIÓN DE UNA VARIABLE EN FORMATO DECIMAL

P á g i n a | 270

IMAGEN 409: IMPRESIÓN DE UNA VARIABLE EN FORMATO BINARIO
IMAGEN 410: IMPRESIÓN DE UNA VARIABLE EN FORMATO OCTAL
IMAGEN 411: IMPRESIÓN DE UNA VARIABLE EN FORMATO HEXADECIMAL

P á g i n a | 271
Para las variables con decimales o flotantes, la rutina .print, en su segundo argumento se
puede indicar hasta cuántos decimales de la mantisa deben imprimirse. Las imágenes
siguientes mostrarán cómo la rutina .print modificada despliega diferentes tamaños de la
mantisa de la variable valor_float:

IMAGEN 412: IMPRESIÓN DE UNA VARIABLE TIPO FLOTANTE Y UN DECIMAL

IMAGEN 413: IMPRESIÓN DE UNA VARIABLE TIPO FLOTANTE Y DOS DECIMALES

IMAGEN 414: IMPRESIÓN DE UNA VARIABLE TIPO FLOTANTE Y TRES DECIMALES

P á g i n a | 272

La rutina .print funciona también para variables o constantes que guardan caracteres
individuales:

IMAGEN 415: IMPRESIÓN DE CARACTERES EN LA LCD

PRUEBA 1 PRUEBAS A REALIZAR POR PARTE DEL ALUMNO

Círculo Cromático con LED RGB (VERSIÓN 2)
Realizar un sketch en Arduino que permita modificar los colores emitidos por un LED RGB. Los colores que se
deben mostrar deben corresponder al círculo cromático disponible en Plataforma Moodle. Para cada color
habrá un valor entero definido (1, 2, 3…) y mediante botones se debe ascender o descender en el valor de los
colores, mientras que con otro botón el LED se deberá apagar y se reiniciará la cuenta. Si la cuenta es cero y
se presiona el botón de descenso, se debe colocar o iniciar con el valor más grande de los colores; si se llega
al valor máximo y se presiona el botón de ascenso, el LED RGB se colocará en cero y empezará la cuenta
nuevamente. Además, mediante un LED regular y un buzzer se indicará cuando un botón cualquiera sea
presionado. Adicionalmente, tanto los nombres de los colores y la posición actual se mostrarán en una LCD.
Control de auto dirigido por radiofrecuencia (Versión 3)

Retomar la prueba 5 de la práctica 5, adicionando una LCD, y los botones serán colocados en la sección de
los pines analógicos (CONSULTAR CONEXIÓN CON EL DOCENTE) y mostrará lo siguiente:

PRUEBA 2  Tras las combinaciones de botones de movimiento y el comportamiento tanto de servos como de
motores, la LCD indicará en la sección de arriba EL SENTIDO DE MOVIMIENTO y en la sección de abajo
mostrará “MOVIENDO… “.

 Si se presiona el botón de BATERÍA BAJA, se debe detener todo el sistema, la LCD mostrará el mensaje
“BATERÍA BAJA” por 4 segundos y se apagará; volverá a mostrarse la LCD cuando se suelte el botón.

PRUEBA 3  Si se presiona el botón de PÉRDIDA DE ENLACE CON CONTROL, la LCD mostrará un mensaje que diga
“CONTROL PERDIDO”.

Prueba 3: Sistema básico de posicionamiento (Versión 2)
Modificar el circuito de la Prueba 3 de la práctica 5, adicionando una LCD que un mensaje en la posición
actual del servomotor (DERECHA, IZQUIERDA Y CENTRO) y el valor del ángulo. Si el servomotor no está en una
posición fija, se debe visualizar un mensaje que diga “MOVIENDO…”. Si el servo se detiene (por la condición de
paro indicada en la prueba) se debe desplegar un mensaje que diga “SERVO STOP”

RESULTADOS Y CONCLUSIONES

Al final de la práctica, y al ejecutar las pruebas de configuración y las sugeridas, e alumno
será capaz de monitorear los datos arrojados por un sistema de control simple, como las
señales de diferentes sensores, estado de dispositivos y notificaciones de eventos en su idioma,
adicionales a los representaciones visuales o sonoras. Además, será capaz de trabajar con
librerías específicas para funciones futuras.

P á g i n a | 273

EVALUACIÓN

CRITERIOS/INDICADORES EXCELENTE BUENO SUFICIENTE INSUFICIENTE
(20 Puntos) (17 Puntos) (14 Puntos) (0 Puntos)
EJECUCIÓN DE
PRUEBAS DE Se ejecutan Se ejecutan Se ejecutan Se ejecutan de forma
correctamente TODAS adecuadamente TODAS adecuadamente parte regular o errónea buena
CONFIGURACIÓN parte de las pruebas de
BÁSICA las pruebas de las pruebas de de las pruebas de configuración solicitadas.
configuración solicitadas. configuración solicitadas. configuración solicitadas.
EJECUCIÓN DE La prueba presenta
PRUEBA 1 Y2 La prueba se ejecuta La prueba se ejecuta La prueba se ejecuta múltiples fallas en la
correctamente y adecuadamente, adecuadamente, lógica o requerimientos
EJECUCIÓN DE
PRUEBA 3 y 4 conforme a la lógica o conforme a la lógica o aunque se presentan 3 solicitados en el
requerimientos requerimientos fallas en la lógica o problema o no se lleva a
EJECUCIÓN DE solicitados en el solicitados en el requerimientos
PRUEBAS problema. solicitados en el cabo.
problema, presentado al problema.
SUGERIDAS La prueba se ejecuta menos 2 fallas La prueba se ejecuta La prueba presenta
correctamente y adecuadamente, múltiples fallas en la
REPORTE DE La prueba se ejecuta lógica o requerimientos
PRÁCTICA conforme a la lógica o adecuadamente, aunque se presentan 3
requerimientos fallas en la lógica o solicitados en el
solicitados en el conforme a la lógica o requerimientos problema o no se lleva a
problema. requerimientos solicitados en el
solicitados en el problema. cabo.
Las pruebas se ejecutan
correctamente y problema, presentado al Las pruebas se ejecutan Las pruebas presentan
menos 2 fallas adecuadamente, múltiples fallas en la
conforme a la lógica o
requerimientos La pruebas se ejecutan aunque se presentan 3 lógica o requerimientos
solicitados en los adecuadamente, fallas en la lógica o solicitados en los
problemas. requerimientos
conforme a la lógica o solicitados en los problemas o no se llevan
El alumno utiliza el requerimientos problemas. a cabo.
formato de prácticas solicitados en los El alumno utiliza el
formato de prácticas El alumno utiliza el
suministrado por el problemas, presentado suministrado por el formato de prácticas
docente, todas las al menos 2 fallas docente, al menos el
suministrado por el
secciones están El alumno utiliza el 60% las secciones están docente, pero menos del
correctamente formato de prácticas correctamente
documentadas, sus 50% de las secciones
evidencias y resultados suministrado por el documentadas, sus están correctamente
son claros y siguen las docente, al menos el evidencias y resultados documentadas, sus
especificaciones del 80% las secciones están son poco claros, aunque evidencias y resultados
son imprecisos, y no se
formato. correctamente siguen las
documentadas, sus especificaciones de siguen las
evidencias y resultados especificaciones de
son claros y siguen las formato.
especificaciones de formato.

formato.

BIBLIOGRAFÍA

Arduino: Sitio Oficial. (27 de Junio de 2016). Obtenido de https://www.arduino.cc

Dorf, R. C. (2005). Sistemas de Control Moderno (10 ed.). España: Pearson Prentice Hall.

Fitzgerald, S., Shiloh, M., & Igoe, T. (2013). Arduino Projects Book. Torino, Italia: Arduino LCC.

Floyd, T. L. (2008). Dispositivos Electrónicos. México: Pearson.

Instruments, N. (2018). National Instruments México. Obtenido de
http://digital.ni.com/public.nsf/allkb/039001258CEF8FB686256E0F005888D1

Lajarra Vizcaíno, J. R., & Pelegrí Sebastiá, J. (2014). Sistemas Integrados con Arduino (Primera
ed.). México, DF: Alfaomega.

Tojeiro Calaza, G. (2015). Taller de Arduino: Un Enfoque Práctico Para Principiantes. Mexico,
DF: Alfaomega.

Torrente Artero, Ó. (2013). Arduino: Curso Práctico de Formación. México, DF: Alfaomega.

ANE

IMAGEN 416: DIAGRAMA DE PINES DE UNA ARDUINO UNO,

P á g i n a | 274

EXOS

, EXTENDIDO CON FUNCIONES PRIMARIAS Y SECUNDARIAS

IMAGEN 417: DIAGRAMA DE PINES DE UNA ARDUINO MEGA

P á g i n a | 275

A, EXTENDIDO CON FUNCIONES PRIMARIAS Y SECUNDARIAS

IMAGEN 418: DIAGRAMA DE PINES DE UNA ARDUINO NANO

P á g i n a | 276

O, EXTENDIDO CON FUNCIONES PRIMARIAS Y SECUNDARIAS

IMAGEN 419: CÓDIGO DE COLORES Y VALOR

P á g i n a | 277

RES COMERCIALES DE RESISTORES DE CARBÓN

P á g i n a | 278

IMAGEN 420: CÍRCULO CROMÁTICO, PARA PRUEBAS SUGERIDAS CON LED RGB


Click to View FlipBook Version