Anda di halaman 1dari 28

 

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

graficar caracteres, posicionándose en la primera fila y primera columna, mostrando el cursor


parpadeante.

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.

Funciones para imprimir caracteres


Lcd_Chr_Cp(char out_char)

Cuando está función es invocada imprime en la pantalla el carácter correspondiente al código


ASCII, que está en el parámetro de entrada out_char. Con la impresión de un nuevo carácter la
pantalla LCD, incrementa automáticamente el cursor en una posición.

Lcd_Chr(char row, char column, char out_char)

Esta función imprime el carácter out_char, en la columna column y en la fila row.

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” 
 

Funciones para imprimir cadenas de texto


El uso de cadenas de texto es similar a las dos funciones anteriores, para esto se pueden
imprimir cadenas de texto en el punto donde está el flujo de la impresión del LCD, o en un punto
arbitrario por medio de las coordenadas de filas y columnas. Para hacer la impresión de una
cadena de texto en el punto de impresión se utiliza la siguiente función: Lcd_Out_Cp(char *text);
esta cuenta con un único parámetro de entrada que es un apuntador a la cadena de caracteres
en este caso la función la denota como text.

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.

En la figura 6 se muestra un pequeño programa con un ejemplo de uso de las funciones de


imprimir cadenas de texto, en el cual no se muestra la asignación de pines para manejo del
display LCD y en la figura 7 el resultado en simulación.

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 
 

Impresión de valores numéricos


La impresión de valores numéricos es de vital importancia en muchos de los desarrollos. Por
ejemplo, cuando se desea visualizar el estado de una variable como temperatura, humedad,
presión, o cualquier otro que se esté manipulando. Para lograr este objetivo se puede recurrir a
funciones de conversión predefinidas por el compilador. Para esto se puede utilizar la librería:
Conversions. Esta librería cuenta con funciones que hacen la conversión de un valor numérico

7
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores

a una cadena de caracteres. Si se requiere visualizar un valor entero se usa la función:


IntToStr(int input, char *output); para la conversión de entero a texto, esta función tiene dos
parámetros de entrada que son: input, que es un valor entero a visualizar, y output, que es el
apuntador a una cadena de caracteres donde se quiere escribir el forma de texto el valor de
intput. Enseguida de esta función se utiliza la función de imprimir cadena de texto.

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);

En la figura 8 se muestra un pequeño programa con un ejemplo de uso de las funciones de


conversión de valores numéricos y de imprimir cadenas de texto, en el cual no se muestra la
asignación de pines para manejo del display LCD y en la figura 9 el resultado en simulación.

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 
 

Para cualquier duda consultar la ayuda del propio compilador MikroC.

1.2 Sensor ultrasónico


El sensor ultrasónico HC-SR04 mostrado en la figura 10, usa un sonar para determinar la
distancia a un objeto como lo hacen los murciélagos o los delfines. Ofrece excelente detección
de rango sin contacto con alta precisión y lecturas estables en un paquete fácil de usar. El rango
es de 2 cm a 400 cm. Su operación no es afectada por la luz del sol o material negro.

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

Trig= Entrada disparo del sensor

Echo= Salida Eco del sensor

GND= Referencia

Figura 10.‐ Sensor ultrasónico HC‐SR04 
Fuente: www.AccuDIY.com 

HC-SR04 consiste en un transmisor ultrasónico, un receptor y circuitos de control. Cuando se


activa, envía una serie de pulsos ultrasónicos de 40 KHz y recibe eco desde un objeto como se
ilustra en la figura 11. La distancia entre la unidad y el objeto se calcula midiendo el tiempo de
viaje del sonido y lo da como el ancho de un pulso TTL.

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.

La distancia se puede calcular con la siguiente fórmula.

Donde:

Distancia en metros

Ancho del pulso en segundos

Velocidad del sonido en metros/segundo.

Normalmente, la velocidad del sonido es de 340 m/s.

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

1.3 Módulo OC (Output Compare)


El módulo compara el valor de un timer con el valor de uno o dos registros de comparación
según el funcionamiento modo seleccionado. El estado del pin de salida cambia cuando el valor
del temporizador coincide con valor de registro del registro de comparación.

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.

También puede generar interrupciones en eventos de coincidencia en la comparación.

El módulo Output Compare tiene múltiples modos de operación:

• Modo activo bajo de un solo disparo

• Modo activo alto de un solo disparo

• Modo de alternar de nivel

• Modo demorado de un solo disparo

• Modo de pulsos continuos

• Modo PWM sin protección contra fallas

• Modo PWM con protección contra fallas

En la figura 13 se muestra el diagrama a bloques del módulo OC

Cada módulo OC tiene los siguientes registros:

• OCxCON: registro de control del módulo

• OCxR: registro de comparación

• OCxRS: registro secundario de 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.

MODO PWM SIN PROTECCIÓN CONTRA FALLAS


El modo PWM se usa para generar una salida de ciclo de trabajo variable. El ciclo de trabajo
PWM se especifica a través del registro de comparación Secundario (OCxRS), y actúa como
un registro de sombra para el registro de comparación (OCxR). Esto evita problemas técnicos
en la salida de PWM. En el modo PWM, el registro (OCxR) es un registro de solo lectura. La
figura 15 muestra el diagrama a bloques del módulo Output Compare en el modo PWM.

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 modo PWM está habilitado, el pin OCx es:

• Puesto en alto si el valor del registro OCxR no es cero

• Puesto en bajo si el valor del registro OCxR es cero

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:

• Puesto en alto si el valor del registro OCxR no es cero

• Puesto en bajo si el valor del registro OCxR es cero

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
í

Ciclo de trabajo PWM


El ciclo de trabajo PWM se especifica escribiendo al registro OCxRS. El valor del ciclo de trabajo
puede ser escrito en cualquier momento, pero el valor del ciclo de trabajo no se cargará en el
registro OCxR hasta que el timer se reinicie. Esto proporciona un doble buffer para el ciclo de
trabajo PWM y es esencial para el buen funcionamiento del PWM. En el modo PWM, OCxR es
un registro de solo lectura.

Algunos parámetros de límites importantes del ciclo de trabajo PWM incluyen:

• 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

(100% ciclo de trabajo)

• Si el registro OCxR es igual a PRy, el pin OCx es bajo para el primer conteo y alto para todos
los conteos siguientes.

Configuración de módulo OC para generar el trigger del sensor ultrasónico


Para generar la señal de trigger ilustrada en la figura 16, el módulo OC1 se configura en modo
PWM sin falla utilizando como base de tiempo al timer 2. Entonces los bits del registro OC1CON
quedan de la manera siguiente:

16
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores

OCM<0:2> 110 Modo PWM sin falla

OCTSEL 0 Timer 2 como base de tiempo

OCSIDL 0 Módulo OC continúa operación en CPU idle

Por lo tanto, el registro OC1CON se carga con el valor 0X0006.

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.

Prescalador PR2+1 # Tcy´s Observaciones


8 62500 500000 Válido
64 7812 499968 Válido
256 1953 499968 Válido

Se selecciona un Prescalador de 8 y por lo tanto PR2 se debe cargar con 62499.

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

OC1R y OC1RS = 12 tiempo en alto = 19.2 µs

OC1R y OC1RS = 13 tiempo en alto = 20.8 µs

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

Selección de pines para periféricos


La configuración de selección de pines para periféricos permite a estos seleccionar dentro de
todos los pines del microcontrolador marcados como RPn sus líneas de entrada y/o salida, lo
cual es muy importante sobre todo para dispositivos de pocos pines.

Al aumentar las opciones de pines disponibles en un dispositivo particular, los programadores


pueden adaptar el microcontrolador para su aplicación, en lugar de recortar la aplicación para
que se ajuste al dispositivo.

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:

• Comunicaciones serie en general (UART y SPI)

• Entradas de reloj con temporizador de uso general

• Periféricos relacionados con temporizadores (captura en entrada y salida en comparación).

• Entradas de interrupción por cambio de nivel.

Algunos módulos periféricos solo digitales nunca se incluyen en la característica de selección


de pin periférico. Esto se debe a que la función del periférico requiere circuitería especial en un
puerto específico y no puede ser fácilmente conectado a múltiples pines. Estos módulos
incluyen I2C.

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

entradas de periférico con característica de selección de pines y el correspondiente registro de


configuración se muestran en la tabla z.

Tabla 1.‐   Entradas de periférico con pines seleccionables y su registro correspondiente 
Fuente: Microchip Technology Inc. 

Como ejemplo en la figura 18 se muestra el registro RPINR3 en el cual se selecciona el pin


remapeable RPn para la entrada externa de reloj del módulo Timer 2 (T2CK) y la entrada
externa de reloj del módulo Timer 3 (T3CK).

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 

Registro RPOR Pines RP


RPOR0 RP0, RP1
RPOR1 RP2, RP3
RPOR2 RP4, RP5
RPOR3 RP6, RP7
RPOR4 RP8, RP9
RPOR5 RP10, RP11
RPOR6 RP12, RP13
RPOR7 RP14, RP15

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

1.3 Medición de distancia

Timer en modo Gate


Cuando el módulo del timer funciona con el reloj interno (TCS = 0), el timer en modo Gate se
puede utilizar para medir la duración de una señal externa en la entrada TnCK. En este modo,
el temporizador aumenta en uno en cada flanco ascendente del reloj de entrada, siempre que
la señal de puerta externa en el pin TnCK sea alta. La interrupción del temporizador se genera
en el borde descendente del pin TnCK. La Figura 20 ilustra el funcionamiento del timer en modo
Gate.

Para configurar el timer en modo Gate:

• 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:

Timer 1 en modo Gate, prescalador=8, PR1=50000

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.

1) Crear un nuevo proyecto con el nombre med_ultrasonico, usando compilador MikroC.


2) Calcular a) valor máximo conteo de TMR1, asignar un valor mucho mayor a PR1 b)
valor de período y ciclo útil de la señal trigger para cargar los registros PR2, OC1R,
OC1RS.
3) Adicionar al proyecto un archivo con nombre med_ultrasonico con el programa en
lenguaje C que cumpla con la lógica mostrada en el diagrama de flujo de la figura 18.

Figura 18.‐ Diagrama de flujo aplicación med_ultrasonico 
fuente: Propia 
 

4) Compilar y corregir errores en su caso.


5) Simular y verificar funcionamiento del diseño, tanto en MikroC como en Proteus.
6) Determinar los componentes necesarios para el circuito físico.
7) Cargar archivo .hex del diseño en el dispositivo.
8) Verificar funcionamiento en físico.

26
Instituto Tecnológico de Durango
Práctica 6.- Medidor de distancia con sensor ultrasónico y pantalla LCD Microcontroladores

2.2 Elaborar reporte correspondiente


Elaborar el reporte de acuerdo con el formato propuesto en este manual de prácticas.

3. Material y equipo a utilizar


 PC con el software compilador MikroC y Proteus.
 Dispositivo dsPIC.
 Programador de PIC’s.
 Pulsera antiestática.
 Sensor ultrasónico HC-SR04
 Display LCD
 Resistencias y otro material necesario.
 Cables de conexión.

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

Anda mungkin juga menyukai