Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe Practica Nro. 03
Informe Practica Nro. 03
Vicerrectorado Académico
Decanato de Docencia
Departamento de Ingeniería Electrónica
Núcleo de Electrónica y Sistemas y Digitales
Laboratorio de Sistemas Digitales II
Autor:
Victorino Villamizar Delgado, CIV.-23.541.989
San Cristóbal, Julio, 2021
Introducción
Dia a día vemos como nos acercamos mas a una era cada vez más digital, donde
implícitamente en nuestra vida esta presente el lenguaje digital, para que esto sea posible
debemos transformar a este lenguaje variables que están presentes en nuestro ambiente e
influyen en cualquier proceso que queramos controlar , como lo son el caso de la temperatura,
humedad y presión. Pero ya que son variables tan cambiantes, primero debemos aprender a
monitorearlas, para saber como regular o proteger nuestro proceso de dicha influencia.
Para este proceso de monitoreo se crean dispositivos que cambian sus propiedades por la
influencia de dichas variables y que tendrá efecto en la señal análoga que nos entregara, de esta
manera permitiendo su medición al convertir dicha señal análoga a una digital, la cual será más
fácil trabajar y llevarla a su unidad y escala de medición respectiva.
El PIC18F4550 nos permite tomar estas lecturas análogas y transformarlas a digitales por medio
de un conversor interno, para hacer un monitoreo y también si queremos compartir dichos datos
poder comunicarnos con otros dispositivos y enviarlos en tiempo real. Para que todo esto sea
posible, se debe saber utilizar el conversor interno del PIC y configurar esa interfaz de conexión
para poder comunicarnos.
Marco Teórico
El pinout del LM35 es bastante simple, la primera patilla o pin es para la alimentación necesaria
para el sensor, que va de 4 a 30v, aunque puede variar en función del fabricante. Luego, en el
centro, tenemos la patilla para la salida, es decir, la que dará una tensión u otra en función de la
temperatura. Y la tercera patilla es de tierra.
Características y datasheets
El LM35 es un dispositivo que no necesita de circuitería extra para calibrarlo, por tanto, resulta
muy sencillo de usar, solo nos tenemos que preocupar del rango de voltajes que da a su salida
conociendo la temperatura máxima y mínima que puede medir y transformar esa señal
analogica a digital y que en la pantalla aparezca la temperatura en ºC o hacer conversiones a la
escala que quieras.
5𝑉
𝑉 = ∗𝑁 =𝑉
1024
Y a su vez la ecuación dada por el fabricante para determinar el voltaje de salida está dada por
𝑚𝑉
𝑉 = 10 ∗𝑇
º𝐶
125
𝑇= º𝐶 ∗ 𝑁
256
El pinout del MPXA6115 consta de 8 pines de los cuales solo se utilizan tres para conexión,
siendo el pin 2 Vs, donde alimentaremos el circuito trabajando una tención mínima de 4,75 a
5,25 máximo; el pin 3 GND será la conexión a tierra y el pin 4 Vout, el cual nos dará una tensión
en función de la presión recibida. Los demás pines no deben ser conectados ni a tierra ni a otro
circuito externo, solo son para fijar el integrado a la placa.
De la ecuación anterior podemos hallar la relación Presión/Nº digital, ya que el numero digital
esta relacionado con el voltaje de salida por
5𝑉
𝑉 = ∗𝑁 =𝑉
1024
Son sensores de humedad de circuito integrado cubierto, es de bajo voltaje, operan hasta 2.7 V,
lo que es ideal en sistemas a batería en los que el suministro es un nominal de 3 V. El
empaquetado SMD en cinta y carrete permite su uso en procesos de fabricación automatizada
de clasificación y ubicación de alto volumen, con lo cual se eliminan los errores de alineación
en orificios pasantes de placas de circuitos impresos.
Características:
- Funciona hasta 2,7 V CC, a menudo ideal en sistemas alimentados por batería donde
el suministro es de 3 V CC nominales.
- Carcasa de plástico termoestable moldeado.
- Salida de voltaje casi lineal vs% RH.
- Intercambiabilidad recortada con láser.
- Diseño de bajo consumo
- Precisión mejorada
- Tiempo de respuesta rápido
- Rendimiento estable y de baja deriva
- químicamente resistente
5𝑉
𝑉 = ∗𝑁 =𝑉
1024
Y a su vez la ecuación dada por el fabricante para determinar el voltaje de salida está dada por
Igualando las 2 ecuaciones tenemos que la relación Humedad relativa/Nº Digital es,
𝑁 − 155,136
𝑆𝑒𝑛𝑠𝑜𝑟 𝑅ℎ =
6,51264
Características:
Un ADC convierte mide el voltaje V en un pin (que tendrá que estar declarado como entrada
con el correspondiente registro TRISA) y lo convierte en un número. El voltaje se mide en
referencia a un voltaje mínimo, Vref(-) , y a un voltaje máximo, Vref (+):
𝑉−𝑉 ( )
𝑉 =
𝑉 ( )−𝑉 ( )
Nivel Voltaje
0 <r
1 [r,2r]
2 [2r,3r]
… …
1023 >1023r
Aunque un PIC puede tener del orden de 8-12 posibles canales (pines) de entrada analógica,
solo tiene normalmente un único módulo ADC, lo que significa que no podemos tomar medidas
simultáneas de varios canales. Si es necesario, lo que podemos hacer es ir conectando
(seleccionando) los sucesivos canales al ADC para ir midiendo sus voltajes.
Hay que seguir los siguientes pasos para una correcta conversión AD:
El módulo interno A/D del PIC incorpora un condensador de muestreo como muestra la imagen
de arriba. Entonces antes de dar inicio a una conversión A/D hay que asegurarnos de que el
condensador haya sido cargado con la tensión suministrada en el canal seleccionado, esto viene
a ser como el tiempo de adquisición. Existen 2 formas de generar este tiempo.
Por Software: se establece por código un tiempo simbólico igual al tiempo de adquisición y
luego se inicia una conversión A/D.
Luego de saber cuál es el Tacq mínimo y Tad por cada bit, es necesario saber cuánto debe ser
el tiempo total requerido para una correcta conversión A/D. Para una resolución de 10 bits.
El tiempo de descarga es necesario para dar inicio a un nuevo muestreo por el canal A/D
En la siguiente imagen se muestra una tabla del Tad respecto a la Fosc, esto nos indica cual
debe ser el divisor de la Fosc para respetar el Tiempo de Adquisición y Conversión.
5. Directivas del compilador para el conversor análogo digital que maneja el PIC
18F4550.
#DEVICE ADC=10
6. Funciones en C que se utilizan para el conversor análogo digital que maneja el PIC
18F4550.
setup_adc(modo)
set_adc_channel(canal)
valor=read_adc()
Lectura del resultado y almacenado en valor, que viene a ser un numero entero dependiendo de
la directiva #DEVICE ADC= empleada
La comunicación serial es una de las más simples que podremos emplear en nuestro
microcontrolador PIC. La comunicación UART o comunicación serial sólo utiliza tres líneas:
una para recibir los datos Rx, otra para trasmitir los datos Tx y la línea común GND.
En nuestro caso específico para el PIC18F4550 las líneas TX y RX corresponden a los pines 25
y 26 (Puerto RC6 y RC7 respectivamente).
El pic 18F4550 solo tiene un puerto UART físico, es por eso que solo tiene un solo RX y un
solo TX para realizar la comunicación serial. Existen otros PICS que poseen más de un UART
facilitando realizar varias comunicaciones con el dispositivo al tiempo. Si necesitamos
adicionar más puertos de comunicación serial con pic, podremos hacerlo con ayuda del PIC C
Compiler creando UARTS VIRTUALES.
Cada dato se transmite bit a bit, un bit a la vez, por lo tanto, se hace mucho más lenta, pero tiene
la ventaja de necesitar menos líneas y las distancias a las cuales se puede transferir la
información son mayores, además con el uso del módem se puede trasmitir a cualquier parte
del mundo.
A continuación, se describen las características de este módulo UART.
1. Configurar las líneas pin RX y pin TX como entrada y salida respectivamente, a través
del registro TRISC.
2. Configurar el modo Síncrono o Asíncrono.
3. Configurar el Baud-Rate del USART a través del registro UBRRH y
4. Configurar Tamaño de byte 8/9 bits.
5. Habilitar la Transmisión y Recepción a través de los
bits TXEN y RCEN respectivamente.
6. Habilitar la Interrupción de Transmisión/Recepción a través de los
bits TXIE y RCIE respectivamente (opcional).
Para realizar esta configuración de la comunicación, se requiere adicionar una línea que
contenga pulsos de reloj que indiquen que el dato que viaja en la otra línea de datos es válido;
la duración del bit está determinada por la duración del pulso de sincronismo.
En esta comunicación los pulsos de reloj no son necesarios y se utilizan otros mecanismos para
realizar la transferencia de datos.
La duración de cada bit está determinada por la velocidad con la cual se realiza la trasferencia
de datos, por ejemplo si se transmite a 1200 bits por segundo (baudios), la duración de cada bit
es de 833 micro segundos.
Las velocidades de transmisión más comunes son 300, 600,1200, 2400, 9600, 14400 y 28800
baudios.
Esto significa que la configuración de la transmisión serial es: 1 bit start, 8 bits datos, no paridad
y 1 bit de stop.
La transición de alto a bajo de la línea del transmisor, activa el receptor y este generan un conteo
de tiempo de tal manera que realiza una lectura de la línea medio bit después del evento; si la
lectura realizada es un estado alto, asume que la transición ocurrida fue ocasionada por ruido
en la línea; si por el contrario la lectura es un estado bajo, considera como válida la transición
y empieza a realizar lecturas secuenciales a intervalos de un bit hasta conformar el
dato transmitido.
Lógicamente tanto el transmisor como el receptor deberán tener los mismos parámetros de
configuración (velocidad, número bits del dato, paridad y bits de parada)
Configurar BAUD-RATE:
Para enviar un dato no basta con escribir el valor que se desea enviar en el registro TXREG.
Sin embargo, si se quiere enviar varios datos consecutivos debe tenerse cuidado de NO escribir
un nuevo valor en TXREG antes de que el valor anterior haya sido enviado. Para ello es
necesario saber si el registro TXREG ha quedado libre o está vacío. Esto puede hacerse de 2
formas.
1. Por Sondeo: En este caso el programa debe monitorizar el estado del bit TXIF. Si este
bit está a “1” significa que TXREG está vacío y por tanto
podemos escribir el siguiente dato.
2. Por Interrupción: En este caso se habilita la Interrupción a través del bit TXIE, entonces
se producirá una interrupción cada vez que el registro TXREG esté vacío. Por tanto,
esto nos permite detectar cuando TXREG está libre para enviar un nuevo dato, sin
embargo, si habilitamos dicha Interrupción cuando NO estamos Transmitiendo datos se
generarán Interrupciones continuas mientras TXREG este vacío. Por tanto, solo se
debe habilitar esta Interrupción después de haber escrito un nuevo dato en
el registro TXREG y se deshabilitará cuando se ha escrito el ultimo
Para recibir un dato no basta con leer el valor en el registro RCREG, es necesario esperar a que
la recepción del dato se haya completado correctamente para poder realizar el proceso de lectura
del registro. Esto puede hacerse de 2 formas.
1. Por Sondeo: En este caso el programa debe monitorizar el estado del bit RCIF. Si este
bit está a “1” significa que el dato recibido podrá ser leído del registro RCREG.
2. Por Interrupción: En este caso se habilita la Interrupción a través del bit RCIE, entonces
se producirá una interrupción cada vez que el registro RCREG posea un nuevo Por
tanto esto nos permite detectar cuando RCREG está listo para ser leído.
Una vez dentro ya de la función principal del programa, hay que habilitar la interrupción por
recepción RS232.
enable_interrupts(INT_RDA);
Y la correspondiente habilitación global de interrupciones:
enable_interrupts(GLOBAL);
Para recibir un carácter se usa la instrucción:
C=getc(); Esta instrucción espera un carácter por el pin RCV del puerto RS232 y retorna el
carácter recibido.
Hacen lo mismo las instrucciones GETCH() y GETCHAR()
Se configurará el puerto C como salida. En este puerto se conectarán los pines de control de la
LCD grafica. A excepción del pin RST quedara en RB7.
Para el PUERTO E se configuro como salida para los 3 leds necesarios para indicar las subidas
de las variables leídas por los sensores, por encima de los limites establecidos. Aplica solo en
el PIC principal.
Sensor de temperatura LM35
Este sensor no necesita circuitería externa para su funcionamiento, así que sus pines irán directo
a GND el pin 3, a VCC el pin 1 y el pin 2 será su salida y se conectará al Pin AN0 del PIC, a
través de su pin 2 y por medio del modulo A/D se tomará su lectura para indicar la temperatura
percibida.
En cada función llamada en el ciclo while, después de hacer la conversión se enviará el valor
del número digital equivalente a la medición tomada. A continuación, el diagrama de flujo de
los procesos en el PIC2.
La parte más compleja del PIC2 está en la función habilitada por la interrupción, donde se
recibe la información enviada por el PIC1 y se modifica para hacer los cálculos respectivos y
mostrarlos.
d) Procedimiento de diseño de la aplicación.
1) Primero se realizó una investigación de los temas centrales en los cuales se basa la
aplicación de esta práctica, estos temas son el del manejo del módulo A/D y la interfaz
serie de periféricos (USART), para el PIC18F4550.
2) Se realizo un análisis de los requerimientos a cumplir, tanto de los elementos que se
podían utilizar como de sus funciones a realizar.
3) Se procedió a realizar el esquema de conexión en proteus con los elementos a utilizar
para la aplicación.
4) Empezó a desarrollarse la lógica de programación para poder cumplir todos los
requerimientos.
5) Por último, se fue simulando a medida que se desarrollaba el código hasta llegar a su
estado final cumpliendo todas las pautas.
Resultados
Para esta practica se lograron cumplir todos los requerimientos de la práctica, las cuales eran
las siguientes:
1. Las variables físicas deben ser visualizadas en el sitio de censado a través de un LCD.
Para este caso para cada variable llamamos a una función específica para cada sensor, donde
leeremos el valor de voltaje análogo por el canal respectivo de cada sensor y luego de
convertirlo a un valor digital, calculamos su valor equivalente en la unidad especifica que
medimos, por medio de la ecuación en función de el numero digital. Luego de esto mostramos
la medición en la pantalla LCD. Esto lo podemos apreciar en la siguiente imagen y también en
el anexo donde se encontrará el link donde estará el código del programa.
Las funciones de presión() y humedad() tienen la misma estructura, solo cambia la ecuación
para calcular el valor de la variable física en función de el numero digital, y la selección del
canal a realizar la lectura, por eso no se agregó su imagen.
Para entrar en estas funciones se hace por medio de un ciclo while en la función principal, que
ira haciendo un recorrido por cada una de las funciones.
2. Las variables físicas deben ser visualizadas en la sala de control en donde se encuentra
un microcontrolador que recibirá los datos por puerto serial conectado a un LCD.
Para cumplir esta condición se envía desde el PIC1 la cadena de caracteres que contiene el
numero digital, esta se recibe utilizando la interrupción por transmisión de datos y utilizando
la función gets() para guardarla. Este número es nuevamente convertido a un número entero y
luego se calcula nuevamente su equivalente medición por medio de la ecuación de la variable
respectiva en función de su numero digital. Podemos apreciar en la siguiente imagen el
proceso de recepción de datos y también encontrar el código en el anexo donde se encuentra
el link para descargar el archivo de programación respectivo.
Para poder diferenciar que datos ingresan si es de temperatura, presión o humedad y mostrarlos
en pantalla en su respectivo orden sin errores se implementó el siguiente código el cual podr
encontrarse en el anexo.
Nota: el membrete no se imprimió igual que en el PICC1 ya que no se podían visualizar las
variables, por eso se simplifico.
Luego de mostrar en pantalla el valor medido por el sensor, se procede a verificar que su valor
no sobrepase el limite establecido, y de pasarse, encendra un led de alerta en el invernadero.
Para ello implementamos el siguiente código que también podemos apreciar en el anexo.
Conclusión
https://drive.google.com/drive/folders/1L0KoV2sfiEfyJMSsCoXBrFj_0tXHDswy?usp=sharin
g