Microcontroladores
Práctica 6
Medidor de distancia con sensor ultrasónico
y display alfanumérico LCD
Miguel Ángel Esparza Ávila
Profesor del I T Durango
Diciembre 2018
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Objetivo:
Utilizar adecuadamente puertos, módulos de timer, pwm, interrupciones, tablas y pantallas LCD
en lenguaje C, en el desarrollo de la aplicación “Medidor de distancia”.
Temas relacionados:
2.2. Ambiente integrado de desarrollo (IDE) para Microcontroladores.
3.1. Introducción a la programación en lenguaje de alto nivel en microcontroladores.
3.2. Puertos de entrada/salida digital.
3.3. Interrupciones.
3.5. Temporizador, generador de señales, medidor de intervalos, decodificador QEP y PWM.
1. Marco teórico
1.1 Display LCD de caracteres alfanuméricos
Los displays de caracteres LCD, son módulos prefabricados que contienen controladores
incluidos. Estos displays cuentan con un bus de datos y un bus de control.
Los displays LCD, permiten graficar los caracteres contemplados en el código ASCII. Además
del código ASCII, los displays LCD admiten graficar hasta 8 caracteres diseñados por el
desarrollador, otra característica fundamental de los LCD, es la conexión del bus de datos,
físicamente tienen 8 bits, pero es posible configurar las conexiones con solo 4 bits. La conexión
de 8 bits implica una mayor cantidad de cables para su uso, pero la velocidad de trabajo es
mayor, por consiguiente, la conexión de 4 bits minimiza las conexiones pero disminuye la
velocidad de trabajo. La apariencia física y la vista en ISIS de estos LCD es la que se puede
apreciar en la figura 1 y figura 2 respectivamente.
1
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 1.‐ Display LCD de caracteres
fuente: Libro “Diseño y simulación de sistemas microcontrolados en lenguaje C”
Figura 2.‐ Display LCD conectado a microcontrolador en modo 4 bits
fuente: Libro “Diseño y simulación de sistemas microcontrolados en lenguaje C”
2
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Para el manejo de estos dispositivos el compilador MikroC PRO, tiene una librería predefinida
que funciona con la configuración de 4 bits.
Para ver la librería predefinida para este dispositivo y otros que tiene MikroC PRO, se debe
picar la paleta de herramientas ubicada en la parte derecha del programa, está paleta se
identifica con una pestaña que tiene el título: Library Manager. Al picar está pestaña se
despliega un menú que muestra las diferentes librerías habilitadas para el microcontrolador que
se está trabajando. En este nuevo menú se identifica el ítem Lcd, posteriormente se puede picar
cualquiera de las funciones que contiene la librería para ver la ayuda correspondiente. La
apariencia visual de está paleta se puede apreciar en la figura 3.
Figura 3.‐ Librería del compilador MikroC
fuente: Libro “Diseño y simulación de sistemas microcontrolados en lenguaje C”
3
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
La implementación del display LCD, requiere del uso de instrucciones y comandos secuénciales
para la configuración y desempeño del display, sin embargo, la librería de MikroC PRO minimiza
este trabajo dado que está se encarga de hacer todas estás configuraciones, haciendo mucho
más simple el trabajo del desarrollador. Como primer paso para el uso del LCD, se requiere
definir los pines de conexión y la ejecución de la función predefinida de inicio del LCD; Lcd_Init().
La definición de los pines de conexión la asume el desarrollador de forma arbitraria según su
criterio. Para cumplir este objetivo se usa la siguiente declaración de constantes:
Para cambiar los pines solo se requiere cambiar el nombre de las declaraciones del ejemplo
anterior. Como se puede ver en la declaración inicial solo se necesitan 6 pines para gobernar
el LCD, con 4 bits de datos y 2 bits de control (RS y EN), el display cuenta con un tercer pin de
control denotado como WR, este pin permite leer si el display está ocupado realizando alguna
operación o permite escribir comandos y caracteres. Para fines de la librería este pin no es
requerido, y simplemente se conecta a referencia, solamente para escribir en el LCD. Por último
se debe invocar la función de inicio del display dentro de la función main después de la
configuración de puertos. Los pines de la LCD, no se deben configurar, está tarea ya la realiza
la función: Lcd_Init(). Con esta función la LCD se inicializa y debe quedar listo para empezar a
4
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Los displays de caracteres se fabrican en diversas formas y colores se pueden conseguir con
pantallas de color verde, azul, y amarillo. Se fabrican con distribuciones de caracteres de forma
matricial como 2 filas, 16 columnas estos se conocen como 2x16, y de la misma forma se
pueden encontrar de 1x16, 2x16, 2x8, 2x20, 4x20, entre otros.
El display LCD cuenta con un pin denominado Vee, este pin funciona como controlador de
contraste de la pantalla, pero para fines de la simulación no tiene efecto, este pin puede ser
conectado a referencia para generar el mayor contraste. Para fines prácticos el contraste se
puede ajustar por medio de un potenciómetro.
El programa que se muestra en la figura 4, ejemplifica el uso de estas funciones cuyo resultado
de la simulación en una LCD 4x20, se ilustra en la figura 5.
Figura 4.‐ Ejemplo de uso de funciones para imprimir caracteres
fuente: Libro “Diseño y simulación de sistemas microcontrolados en lenguaje C”
5
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 5.‐ Resultado de simulación del programa de la figura 4
fuente: Libro “Diseño y simulación de sistemas microcontrolados en lenguaje C”
Para imprimir una cadena de caracteres con una coordenada como punto de inicio se
implementa la función: Lcd_Out(char row, char column, char *text);. Esta función trabaja de
forma similar a la anterior, con la diferencia que se incluyen los datos de row, y column, que
hacen referencia a las filas y las columnas respectivamente.
6
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 6.‐ Uso de funciones para imprimir cadena de texto
Fuente: Propia
Figura 7.‐ Resultado de simulación del programa de figura 6
Fuente: Propia
7
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
La conversión de números con punto decimal a texto se puede hacer con la función:
FloatToStr(float fnum, char *str); La filosofía de funcionamiento de esta función es idéntica a la
anterior que hace las conversiones de números enteros.
El mismo proceso se puede seguir para otros tipos de variables como son:
Las variables tipo short con la función: ShortToStr(short input, char *output);
Las variables tipo long con la función: LongToStr(long input, char *output);
Las variables unsigned short con la función: ByteToStr(unsigned short input, char *output);
Las variables unsigned long con la función:LongWordToStr(unsigned long input, char *output);
Las variables unsigned int con la función: WordToStr(unsigned int input, char *output);
Figura 8.‐ Uso de funciones de conversión y de imprimir cadena de texto
Fuente: Propia
8
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 9.‐ Resultado de simulación del programa de figura 8
Fuente: Propia
Características:
● Fuente de alimentación: + 5V DC
● Corriente en reposo: <2mA
● Corriente de trabajo: 15mA
● Ángulo efectivo: <15 °
● Rango de distancia: 2 cm ‐ 400 cm / 1 "‐ 13 pies
9
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
● Resolución: 0.3 cm
● Ángulo de medición: 30 grados
● Ancho de pulso de entrada de disparador: 10uS
● Dimensión: 45 mm x 20 mm x 15 mm
Vcc= +5 V DC
GND= Referencia
Figura 10.‐ Sensor ultrasónico HC‐SR04
Fuente: www.AccuDIY.com
Figura 11.‐ Operación del sensor ultrasónico HC‐SR04
Fuente: www.AccuDIY.com
10
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Para medir la distancia, es necesario generar una señal de disparo y conducirlo a la entrada
Trig. La señal de disparo debe cumplir con los requisitos de niveles TTL (es decir, alto nivel>
2.4 V, nivel bajo <0.8 V) y su ancho debe ser mayor que 10us. Al mismo tiempo se necesita
monitorear el pin de salida midiendo el ancho de pulso de la señal. En la figura 12 se muestra
el diagrama de tiempos para el sensor.
Donde:
Distancia en metros
Figura 12.‐ Diagrama de tiempos para sensor ultrasónico HC‐SR04
Fuente: www.AccuDIY.com
11
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
El módulo Output Compare genera un solo pulso de salida o una secuencia de pulsos de salida,
cambiando el estado del pin de salida en los eventos de coincidencia en la comparación.
12
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 13.‐ Diagrama a bloques de módulo OC
Fuente: Microchip Technology Inc.
En la figura 14 se muestra el registro OCxCON donde se muestran todos los bits con su función.
13
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 14.‐ Registro OCxCON
Fuente: Microchip Technology Inc.
14
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Cuando el timer seleccionado está habilitado, comienza a incrementarse hasta que alcanza el
valor en el registro de período (PRx). El valor del registro (OCxR) se compara constantemente
con el valor del timer. Cuando se produce una coincidencia, el pin OCx es puesto a nivel bajo.
En la vuelta a cero del timer, el valor OCxRS se carga en el registro OCxR y el pin OCx es:
Figura 15.‐ Diagrama a bloques del módulo OC en modo PWM
Fuente: Microchip Technology Inc.
15
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Periodo PWM
El período PWM se especifica escribiendo a PRy, el registro de Período TMRy. La siguiente
ecuación determina el período del PWM.
í 1 ∗ ∗
1
í
• Si el registro del ciclo de trabajo, OCxR, se carga con 0000h, el pin OCx permanece bajo
(0% ciclo de trabajo)
• Si el registro OCxR es mayor que PRy (registro del Período del timer), el pin permanece alto
• Si el registro OCxR es igual a PRy, el pin OCx es bajo para el primer conteo y alto para todos
los conteos siguientes.
16
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 16.‐ Señal de trigger para sensor ultrasónico
Fuente: Microchip Technology Inc.
La señal de trigger se generará con un período de 100 ms con un tiempo en alto de 20 µs, ya
que el período se carga en el registro PR2 es necesario calcular este valor.
∗
Recordando que # ´ y considerando que fosc = 10 MHz
entonces, # ´ 500,000. Este valor no se puede cargar en el registro PR2 ya que su valor
máximo es de 65535, el prescalador debe ser mayor a 1. Ya que el prescalador de timer 2 tiene
los valores de 1, 8, 64, 256 se determina cual valor de prescalador es el más conveniente
utilizando la ecuación del período del PWM.
17
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Ahora se calcula el valor que se debe cargar en el registro OC1R y OC1RS, para determinar el
tiempo en alto de la señal de trigger.
∗ 20 ∗ 10 ∗ 10 ∗ 10
1 12.5
2∗ 2∗8
El valor de OC1R y de OC1RS puede ser de 12 ó 13
La salida del módulo es OC1, la cual no se encuentra en los pines del microcontrolador
dsPIC33FJ12MC202 como se ilustra en la figura 17. Sin embargo, se tienen los pines RP (Pines
remapeables) en uno de los cuales se puede poner la salida OC1.
Figura 17.‐ Diagrama de pines dsPIC33FJ12MC202
Fuente: Microchip Technology Inc.
18
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
La característica de selección de pines para periféricos se usa con un rango de hasta 16 pines.
La cantidad de pines disponibles depende del dispositivo particular y su número de pines. Los
pines que tienen esta característica incluyen la designación "RPn", donde "RP" significa
remapeable para periférico y "n" es el número de pin remapeable
Los periféricos que pueden seleccionar pines tienen la característica que son solo digitales,
como los siguientes:
Un requisito similar excluye todos los módulos con entradas analógicas, como el convertidor
analógico a digital (ADC).
Asignación de entradas
Para cada entrada de periférico con la característica de selección de pines, se usan 5 bits de
un registro llamado RPINRx y dependiendo de la combinación binaria de estos bits se asigna
esta entrada a la RPn correspondiente. Para el microcontrolador dsPIC33FJ12MC202, las
19
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Tabla 1.‐ Entradas de periférico con pines seleccionables y su registro correspondiente
Fuente: Microchip Technology Inc.
20
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Figura 18.‐ Registro RPINR3 para entradas T2CK y T3CK
Asignación de salidas
A diferencia de las entradas, la asignación de salidas del periférico a un pin RPn se realiza en
función del pin. En este caso, un registro de control asociado con un pin particular dicta la salida
del periférico a mapear. Los registros RPORx se utilizan para controlar el mapeo de salida.
Cada registro contiene conjuntos de campos de 5 bits, con cada conjunto asociado con un pin
RPn. En la tabla 3 se muestra la relación de registros RPOR’s con los pines RP.
21
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Tabla 3.‐ Registros RPOR y pines RP
En la figura 19 se muestra el registro RPOR2 y la combinación en los 5 bits para asignarle una
salida de periférico al pin RPn correspondiente.
Figura 19.‐ Registro RPOR2 para pines RP4 y RP5
22
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
• Configure el bit de control TGATE (TnCON <6>) para habilitar el funcionamiento en modo Gate
• Borre el bit de control del TCS (TnCON <1>) para seleccionar la fuente del reloj interno
Configurar el bit TSYNC (TnCON <2>) no tiene ningún efecto porque el reloj interno siempre
está sincronizado.
Figura 20.‐ Operación de timer en modo Gate
Fuente: Microchip Technology Inc.
23
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
Analizando la figura 20 se puede deducir que el registro PR debe cargarse con un valor mayor
al valor máximo esperado.
La distancia será proporcional al tiempo en alto de la señal de salida del sensor ultrasónico, de
acuerdo con la ecuación:
2
Ahora determinaremos el valor del prescalador, para lo cual se calcula el máximo tiempo en alto
de la señal de salida del sensor ultrasónico. De las especificaciones del sensor, la distancia
máxima es de 4.5 m, por lo tanto utilizando la ecuación anterior se calcula el tiempo en alto para
esta distancia:
∗2 4.5 ∗ 2
0.02647
340
Entonces el tiempo máximo a contar sería de 27 ms, tiempo para el cual se determinan el #Tcy´s
necesarios
∗ 27 ∗ 10 ∗ 10 ∗ 10
# ´ 135000
2 2
Ya que este valor excede al valor máximo del registro TMRn, se utilizará un prescalador de 8.
El tiempo del ancho de pulso es proporcional al valor del registro TMRn de acuerdo con la
siguiente ecuación:
∗ ∗
Entonces:
∗ ∗ ∗
∗ 100
2
Sustituyendo valores
24
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
36.7647
Si se utiliza el timer 1 para medición del ancho de pulso, se configura de la siguiente manera:
25
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
2. Procedimiento
2.1 Diseño de aplicación medidor de distancia ultrasónico.
Se desea diseñar en lenguaje C utilizando el compilador MikroC un sistema basado en un
dsPIC33F, que mida la distancia con un sensor ultrasónico y muestre la medición en un display
LCD.
Figura 18.‐ Diagrama de flujo aplicación med_ultrasonico
fuente: Propia
26
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores
4. Fuentes de información
Microchip Technology Inc. (2007) dsPIC33FJ12MC201/202 Data Sheet.
Microchip Technology Inc. (2005) dsPIC30F/33F Programmer’s Reference Manual.
Microchip Technology Inc. (2007-2012) dsPIC33F/PIC24H Family Reference Manual.
Microchip Technology Inc. (2013-2016) MPLAB XC16 ASSEMBLER, LINKER AND
UTILITIES User´s Guide.
García Breijo Eduardo (2008). Compilador C CCS y simulador PROTEUS para
microcontroladores PIC. Alfaomega.
Clavijo Mendoza J. Ricardo (2011) Diseño y simulación de sistemas microcontrolados en
lenguaje C.
27
Instituto Tecnológico de Durango