Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta...

18
PC Factory Área de profesionales y especialistas Equipo de computación y electrónica Manual de usuario Proyecto DIY Termómetro Digital Guía de conceptos y armado

Transcript of Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta...

Page 1: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

PC FactoryÁrea de profesionales y especialistasEquipo de computación y electrónica

Manual de usuarioProyecto DIY Termómetro Digital

Guía de conceptos y armado

Page 2: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Índice1 Introducción............................................................................................... 2

2 Esquemático y componentes ...................................................................... 2

3 Conceptos claves ........................................................................................ 43.1 Lectura de variables analógicas........................................................................... 43.2 Forma de uso de display LCD............................................................................. 53.3 Funcionamiento de piezoeléctrico (buzzer).......................................................... 73.4 Comunicación serial con PC (UART) ................................................................. 83.5 Interrupciones en el programa............................................................................. 8

4 Ensamblado................................................................................................ 94.1 Conexión potenciómetros .................................................................................... 94.2 Conexión pantalla LCD ...................................................................................... 94.3 Conexión buzzer.................................................................................................. 104.4 Conexión sensor de temperatura......................................................................... 114.5 Circuito final ....................................................................................................... 11

5 Código Arduino.......................................................................................... 13

1

Page 3: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

1. Introducción

Con este proyecto aprenderás acerca del funcionamiento de pantallas LCD, con conside-ración de sus conexiones y protocolo de comunicación. Además, abordarás conceptos acercadel uso de sensores analógicos para la medición de variables naturales y manejo de piezoelec-tricos (buzzer). Esto será logrado a través de la programación de un microcontrolador en Co algún otro lenguaje compatible.

Este proyecto consiste en armar un termómetro digital con alarma a través de la progra-mación de un Arduino UNO. En este se utilizarán mediciones de temperatura proporcionadaspor un sensor analógico LM35D para determinar la información a mostrar en un display LCDde 16x2, además se hará sonar una alarma implementada con un zumbador (buzzer) una vezalcanzada cierta temperatura.

Los conceptos asociados a esta actividad son:

Lectura de variables analógicas

Forma de uso de display LCD

Funcionamiento de piezoeléctrico (buzzer)

Comunicación serial con PC (UART)

Interrupciones en el programa

En las próximas secciones se utilizarán nombres en inglés de algunas componentes paraevitar ambigüedades

2. Esquemático y componentes

En la Tabla 1 se presenta el listado de componentes necesarias para el armado de esteproyecto, en la tercera columna están los IDs de los productos de PC Factory compatiblescon cada requerimiento.

*Cuantas protoboards se requieran dependerá del tamaño de la elegida.

Proyecto DIY Termómetro Digital 2

Page 4: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Cantidad Nombre PCF ID Compatibles1 Arduino UNO 269181 Display LCD 16x2 273931 Sensor Temperatura LM35D 273821 Buzzer 273873 Potenciómetro 10k -2* Protoboard 27378, 27569, 275971 USB-B to USB Cable 278291 Pack cables Dupont/Jumper M-M 273791 Pack cables Dupont/Jumper M-H 27380

Tabla 1: Componentes necesarias para el proyecto.

En la Figura 1 se encuentra el esquemático del circuito, en este se han de tener lassiguientes consideraciones:

El sensor LM35D está representado como un transistor debido a su packaging TO-92. Para determinar que pin corresponde a VDD, GND y Vout se invita a revisar eldatasheet del componente.

Conectado al pin A del display LCD se conecta una resistencia variable para tenercontrol sobre el nivel de brillo de la retroiluminación, si no requieres de este controlpuedes cambiarla por una resistencia fija de 1kΩ

30-04-2018 10:25 C:\Users\rmunoz\Documents\eagle\Digital_Thermometer\Digital_Thermometer.sch (Sheet: 1/1)

10k

10k

EB2209A

GND

10k

GND

Sensor Temperatura

GND

VDD

VDDGND

VDD

1k

K16

A15

DB714

DB613

DB512

DB411

DB310

DB29

DB18

DB07

E6

RW5

RS4

VO3

VDD2

VSS1

R6

1 3

2

R8

1 3

2

BU

ZZER

_PCF27387

-+

D0D1D2D3D4D5D6D7

D8D9

D10D11D12D13GNDAREF

A5/SCLA4/SDAA3A2A1A0

VINGND1GND25V3V/RESETIOREFRESERVED

SCLSDA

R5*

1 3

2

LM35D_PCF27382

R1

ARD

UIN

OU

NO

R3

El poteciometro R5*se puede cambiar por una resistencia de 1k

Figura 1: Esquemático

Proyecto DIY Termómetro Digital 3

Page 5: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

3. Conceptos claves

A continuación se explicarán conceptos y formas de uso de diferentes componentes eléc-tricos.

3.1. Lectura de variables analógicas

Para que la adquisición de datos obtenidos mediante señales analógicas se requiere dealgún dispositivo capaz transformar dichas señales en señales digitales. Antes de esto esnecesario entender lo que son las señales analógicas y las señales digitales.

Las señales analógicas son aquellas que pertenecen al mundo analógico, es decir, a lanaturaleza. Estas tienen la característica de ser continuas y, por tanto, abarcar una infinidadde valores intermedios. Por ejemplo, si colocamos agua fría (5°C) en un hervidor hasta queebulla (100°C), la temperatura del agua irá variando desde 5°C hasta 100°C pasando portodos los valores intermedios en el camino (5.1°C, 6.2831853°C, 16.18°C, 46°C, etc).

Por otro lado, las señales digitales son aquellas pertenecientes al mundo digital, es decir,un mundo virtual creado por el humano con los sistemas informáticos. Este mundo tienela característica de ser discreto y además binario, por lo que sus valores están limitadosa secuencias de 2 opciones (típicamente 0 y 1). Por ejemplo, si asumimos que 1 = ONy 0 = OFF podemos describir la secuencia de encendido de un semáforo de la siguientemanera:

Semáforo Rojo Amarillo Verde Señal digitalLuz roja (Alto) ON OFF OFF 100Luz amarilla (Transición) OFF ON OFF 010Luz verde (Pase) OFF OFF ON 001

Tabla 2: Codificación de luces de un semáforo

Entonces se requiere un dispositivo o mecanismo capaz de traspasar una señal del mun-do natural al mundo virtual, para este proyecto, ocuparemos el más común utilizado paratransducciones de voltaje analógico a voltaje digital: el ADC (Analog-Digital Converter). UnADC corresponde a un dispositivo que recibe entradas de voltajes analógicas y a través dealgún circuito interno (generalmente un arreglo de comparadores de voltaje) obtener salidasdigitales. Generalmente, esta transducción (o codificación) se realiza comparando el voltajemedido con respecto a una escala de referencia y la cantidad de memoria disponible paraguardarla. Entonces, si tenemos como referencia el intervalo [Vss, Vdd] y un espacio de me-moria de n kB para guardar la medición, la lectura digital de una medición de Vi será x convalor de:

x =Vi − Vss

Vdd − Vss

n

Proyecto DIY Termómetro Digital 4

Page 6: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

De esta manera, un voltaje de 1.25V con referencia de 0V a 5V y 10bits (hasta el n°210 = 1024) de espacio para almacenar el dato se traduce en un valor digital de:

x =1.25V − 0V

5V − 0V· 210

x =1.25

5· 210

x = 0.25 · 210

x = 0.25 · 1024

x = 256

Finalmente, en el proyecto utilizaremos un microcontrolador Arduino UNO R3 el cualtiene un modulo ADC integrado y realiza este tipo de conversiones por defecto al momentode utilizar funciones como analogRead(analogPin) dentro del código de programación.

3.2. Forma de uso de display LCD

Los display comúnmente son clasificados de acuerdo a su tecnología (LCD, TFT, OLED,etc) y por su funcionalidad (mostrar caracteres, mostrar imágenes, otras). Para este proyectose utilizará un display acorde al propósito de este proyecto, esto es el aprendizaje en manejode piezas electrónicas, por lo que se ocupara un display pequeño capaz de conectarse direc-tamente a un microcontrolador. En específico, en este proyecto se utilizará un display LCDde naturaleza alfanumérica, es decir, esta diseñado para mostrar caracteres (texto) dentrode su pantalla.

Los display LCD alfanuméricos suelen tener un modo de funcionamiento similar, en dondese organiza el espacio dentro de la pantalla por medio de una matriz separada en filasy columnas. Cada columna se ve representada por el espacio para imprimir un carácter,como se ve en la Figura 2(a) estos espacios corresponden a los cuadros oscuros dentro dela pantalla. Los espacios para cada carácter en realidad corresponden a un subconjuntode pequeños píxeles los cuales forman cada símbolo en la pantalla, estos se definen comose muestra en la Figura 2(b). La LCD cuenta con 8 espacios de memoria para almacenarsímbolos personalizados.

El pin-out correspondiente al display LCD se presenta en la Figura 3, en este cabedestacar la presencia de: registros de control (3:VEE a 7:E), alimentación (1:VSS a 2:VCC y15:LED+ a 16:LED-) y bits de data (D0 a D7). Dependiendo de la resolución del controladory requerimientos del mensaje, es posible utilizar án solo conectando los bits de datosD0 hastaD4. Para tener control sobre el nivel de brillo de la pantalla, se conecta un voltaje controlableen el pin VEE.

En este proyecto, el manejo de la comunicación con la LCD y manejo de registros lorealizará el microcontrolador Arduino Uno por medio de la librería <LiquidCrystal.h>.

Proyecto DIY Termómetro Digital 5

Page 7: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Cabe destacar que el uso de esta librería conlleva la inicialización de un objeto que posee lospines de conexión con la LCD, un ejemplo de constructo y uso son las siguientes:

//... Setup ...const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);// ... Uso ...lcd.begin(16, 2);lcd.print("Irasshai mase!");

(a) Espacios display LCD (b) Creación de caracter personalizado

Figura 2: Display LCD

Figura 3: Display LCD

Proyecto DIY Termómetro Digital 6

Page 8: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

3.3. Funcionamiento de piezoeléctrico (buzzer)

Los piezoeléctricos corresponden a materiales que se deforman al estar sujetos a una di-ferencia de potencial, esta deformación generalmente se utiliza para producir un movimientoespecifico o vibración. Los buzzer, o zumbadores, corresponden a piezoeléctricos construi-dos para reproducir vibraciones a frecuencias determinadas dadas ciertas señales de voltaje,además cuentan con un armazón capaz de amplificar el sonido generado por las vibraciones.Con esto, los buzzer se convierten en dispositivos que permiten una fácil transducción desdeseñales de voltajes a sonido. Estos componentes reciben el nombre de zumbadores dada sunaturaleza de vibrar a una sola frecuencia a la vez, luego el sonido generado corresponde alde un zumbido correspondiente a la frecuencia de vibración.

En el proyecto utilizaremos un buzzer como el de la Figura 5, como piezoeléctrico quees requiere una señal de voltaje con la frecuencia necesaria para su funcionamiento. Enparticular, la señal ha de tener la forma de una onda cuadrada cuyo período sea el delsonido que desees escuchar (ver Figura 4). Para generar estas señales utilizaremos los Timersinternos del microcontrolar ATMega328/P, de manera que podamos tener señales cuadradasde frecuencia variable.

Figura 4: Ondas cuadradas de diferentes frecuencias

Proyecto DIY Termómetro Digital 7

Page 9: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Figura 5: Piezoeléctrico Buzzer

3.4. Comunicación serial con PC (UART)

Un aspecto relevante al momento de construir un dispositivo es la posibilidad de comu-nicar los datos al usuario. Dentro de los diversos tipos de comunicación, para efectos de esteproyecto, se utilizará comunicación serial con el PC. El microcontrolador Arduino UNO autilizar cuenta con un chip integrado que maneja la conversión de datos para tener una salidade información serial UART via USB.

La comunicación serial UART consiste de separar la información en bytes y enviarlossecuencialmente a través de un protocolo determinado (ver Figura 6). El protocolo UARTconsiste de dos bits de señalización, el de comienzo (start bit) y el de término (stop bit)y 8 bits (1 byte) de datos (bit 0 - bit 7). Esta comunicación requiere definir la velocidada la que se envian los datos, a esta se le suele denominar baud rate.

Figura 6: Protocolo UART

En este proyecto visualizaremos la comunicación UART a través de monitor serial del soft-ware Arduino, para esto utilizaremos las funciones Serial.begin(baudRate), configuraciónde la comunicación, y Serial.println(texto), función para enviar un mensaje.

3.5. Interrupciones en el programa

En general los procesadores tienen unos registros dedicados a alertar acerca de eventosprioritarios dentro del funcionamiento normal de este, por ejemplo cuando en un computadorcon Windows se presiona Ctrl+Alt+Supr y se detienen los procesos para abrir el administra-dor de tareas. De esta misma manera, en los microcontroladores hay registros de interrupciónque son habilitables para ejecutar funciones prioritarias en determinados momentos.

Las interrupciones tienen el comportamiento de detener el flujo normal de un programay redireccionarlo hacia la ejecución de una función de interrupción, mejor conocida como

Proyecto DIY Termómetro Digital 8

Page 10: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Interrupt Service Routine (ISR). Esta función tiene una prioridad mayor a aquellasejecutadas en el flujo normal del programa y, dentro de ella, se pueden alterar variablesy registros utilizados en el programa normal. Es por esto, que hay que ser cuidadosos encomo se utilizan, pues se podría alterar una variable que sea fundamental para el correctofuncionamiento del programa normal.

En este proyecto se utilizarán interrupciones provenientes de un contador interno (timer),para asegurar una tasa de refresco constante para la pantalla LCD. Para esto habrá unasección dedicada a configurar los registros necesarios dentro del código.

4. Ensamblado

4.1. Conexión potenciómetros

Con los potenciómetros se pueden construir sencillos divisores de voltaje entre VDD yGND, para tener control manual de voltajes analógicos en un nodo dado. En la Figura7 se muestran imágenes de un potenciómetro y el esquemático de un divisor de voltajeimplementado con uno, en este hay que tener en cuenta que el pin n°2 corresponde a aquelcon un valor intermedio entre aquellos de los pines 1 y 3, es decir, se conecta VDD y GNDa 1 y 3 para luego obtener en 2 el resultado del divisor de voltaje.

(a) Potenciómetro (b) Divisor de voltaje con poten-ciómetro

Figura 7: Piezas para divisor de prueba

4.2. Conexión pantalla LCD

Al momento de conectar la pantalla se recomienda utilizar una de las tiras multicolor decables jumper/dupont SIN separarlos, para mayor orden y facilidad de conexión. Con estoen mente, se pueden obtener conexiones como las de la Figura 8. En la configuración de lafigura se utilizó el reemplazo indicado para R5* en el esquemático [2], de esta manera elpotenciómetro presente corresponde al que sirve de control para el contraste de los cuadrosde la LCD (ver Figura 9).

Proyecto DIY Termómetro Digital 9

Page 11: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Figura 8: Conexión pantalla LCD

(a) Alto contraste, cuadros casi blancos (b) Bajo contraste, cuadros invisibles

Figura 9: Prueba LCD

4.3. Conexión buzzer

Tal como se muestra en el esquemático y en la Figura 10, se utiliza una resistenciavariable (potenciómetro) en serie con el buzzer. La idea de este potenciómetro es funcionarcomo control de volumen de la alarma.

Proyecto DIY Termómetro Digital 10

Page 12: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

Figura 10: Conexión buzzer

4.4. Conexión sensor de temperatura

Como se aclara en el datasheet del LM35, este requiere ser conectado a un voltaje superiora 4V en su pin +Vs, por lo que lo conectaremos a los 5V del Arduino. En este proyectoutilizaremos la configuración más sencilla (ver Figura 11), donde solo se conecta alimentacióny la salida tiene tiene una relación de 10 mV/°C con la temperatura.

Figura 11: Conexión LM35

4.5. Circuito final

Con todas estas consideraciones, en la Figura 12 se muestran

Proyecto DIY Termómetro Digital 11

Page 13: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

(a) Vista frontal sin alarma (b) Vista con perspectiva sin alarma

(c) Circuito final

Figura 12: Circuito total armado

Proyecto DIY Termómetro Digital 12

Page 14: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

5. Código Arduino

A continuación esta el código utilizado para este proyecto.

#define F_CPU 16000000UL#include <avr/io.h>#include <avr/interrupt.h>#include <LiquidCrystal.h>

/*** Notas musicales (con nombre y Hz) ***/#define pause 0#define note_C3 131 //130.81 //Do3#define note_C3b 139 //138.59 //Do3_b#define note_D3 147 //146.83 //Re3#define note_E3 165 //164.81 //Mi3#define note_F3 175 //174.61 //Fa3#define note_F3b 185 //Fa3##define note_G3 196 //Sol3#define note_G3b 208 //207.65 //Sol3b#define note_A3 220 //La3#define note_A3b 233 //233.08 //A3b#define note_B3 247 //246.94 //Si3#define note_C4 260 //261.63 //Do#define note_C4b 277 //277.183 //Do_b#define note_D4 294 //293.66 //Re#define note_D4b 311 //311.13 //D4b#define note_E4 329 //329.63 //Mi#define note_F4 349 //349.23 //Fa#define note_F4b 370 //369.99 //Fa##define note_G4 391 //392.00 //Sol#define note_G4b 415 //415.30 //G4b#define note_A4 440 //La#define note_A4b 455 //466.16 //A4b#define note_B4 466 //466.16 //Si#define note_B4b 494 //493.88 //Si_b#define note_C5 523 //523.25 //Do_5#define note_C5b 554 //554.37 //Do_b#define note_D5 587 //587.33 //Re5#define note_D5b 622 //622.25 //D5b#define note_E5 659 //659.25 //Mi5#define note_F5 698 //698.46 //Fa5#define note_F5b 740 //739.99 //F5b

Proyecto DIY Termómetro Digital 13

Page 15: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

#define note_G5 784 //783.99 //Sol5#define note_G5b 830 //830.61 //G5b#define note_A5 880 //880.00 //La5#define note_B5 988 //987.77 //Si5#define note_Do_6 104 7 //1046.50 //Do6#define note_Do_6b 1109 //1108.73 //Do_6 bemol?#define note_Re_6 1175 //1174.66#define note_Mi_6 1319 //1318.51#define note_Fa_6 1397 //1396.91#define note_Sol_6 1568 //1567.98#define note_La_6 1760 //1760.00#define note_Si_6 1976 //1975.53

/* Variables globables a utilizar */int count = 0;int hot = 0;/* Pin en donde se conectara el sensor de temperatura */int tempSensor1 = A0;/* Variable en la cual se guardara las medicion del sensor */int temp_Reading = 1023;double temp = 25.0;/* Parametros utilizados para configurar las conexiones del display LCD

*/const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void startUP(void);void toogle_ON(void);

/* Seccion de inicializacion de registros y modulos*/void setup()

/* Aqui se configura el microcontrolador a partir de los parametros* presentes en las funciones startUP() y sei(). Esta ultima permite* activar las interrupciones */

startUP();sei();/* Se configura el display LCD 16x2 y se borra lo que tenga enpantalla*/

lcd.begin(16, 2);lcd.clear();

Proyecto DIY Termómetro Digital 14

Page 16: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

void loop()/* Lectura del valor analogico de los botones*/temp_Reading = analogRead(tempSensor1);/* Conversion de lectura a temperatura */temp = temp_Reading*5.0/1023.0*100.0;Serial.println(temp);

/* En cada ciclo actualizamos el contador de la alarma */if((temp>26) && (hot<=0))

hot = 250;else if(hot>0)

hot--;

/* Determinamos el estado del buzzer de acuerdo al contador */if(150<hot)

/* Se conecta el buzzer */DDRB |= _BV(PB1);

else if((100<hot) && (hot<=150))

/* Se desconecta el buzzer */DDRB &=~ _BV(PB1);

else if((0<hot) && (hot<=100))

/* Se vuelve a conectar el buzzer */DDRB |= _BV(PB1);

else

/* Se desconecta el buzzer (fin de la alarma)*/DDRB &=~ _BV(PB1);

/* Funcion startUP() encargada de configurar los registros necesariospara:

* 1.- Configurar los pines D9, D13 como salidas* 2.- Configurar el pin A0* 3.- Generar una senal PWM de periodo variable en el pin D9* 4.- Habilitar las interrupciones del Timer1* 5.- Configurar la comunicacion serial con un baud rate de 57600 */void startUP(void)

Proyecto DIY Termómetro Digital 15

Page 17: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

/* Salidas digitales */DDRB &=~ _BV(PB1); // D9: Timer1 (PWM)//DDRB |= _BV(PB3); // D11: Timer2 (OVF2)DDRB |= _BV(PB5); // D13: LEDPORTB &=~ _BV(PB5);/* Entradas analogicas (sensores)*/pinMode(tempSensor1,INPUT);/* Timer/Contador1 de 16-bit: Conectado al Buzzer* DDRB |= 0b00000010 -> PB1 = Salida (OCR1A esta en el PB1)* WGM13:0 = 0b1110 -> PWM Rapida con periodo variable (TOP =ICR1A)* COM1A1:0 = 0b10 -> OC1A (contador del timer1) pasa a cero(0) cuando llega al valor de OCR1A* COM1B1:0 = 0b00 -> OC1B desconectado (PB2)* CS12:0 = 0b100 -> Divisor de clock de 256 -> clk_IO/256* f_PWM = 16MHz/Pre-scalar/ICR1 = 16MHz/256/142 = ~440Hz */

TCCR1A = _BV(COM1A1) | _BV(WGM11);TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS12);ICR1 = int(62500/note_A4); //62500;(1Hz) //1250;(50Hz) //142;(440Hz)//1250;(20Hz)

OCR1A = 0.5*ICR1; //50 % Duty Cycle/* Registros para configurar la interrupcion timer1 */TIFR1 &=~ _BV(TOV1);TIMSK1 |= _BV(TOIE1); //DO NOT ENABLE ISR THAT ARE NOT USED:Timer1 Interrupt Enable

/* Comunicacion serial a 57600 baud/s */Serial.begin(57600);

/* Funcion que cambia de ON a OFF (y viceversa) el led en D13 */void toogle_ON(void)

PORTB ^= _BV(PB5);

/* Funcion a ejecutar durante una interrupcion del Timer1 */ISR(TIMER1_OVF_vect)

toogle_ON();count++;/* Se actualiza la temperatura en la pantalla LCD

Con una frecuencia aproximada de:f_LCD = f_PWM/countMAX = ~440/88 = ~5 Hz*/

if(count>88)

Proyecto DIY Termómetro Digital 16

Page 18: Manual de usuario Proyecto DIY Termómetro Digital · Conectado al pin A del display LCD se conecta una ... el manejo de la comunicación con la LCD y manejo de ... /* Se configura

lcd.clear();lcd.setCursor(0, 0);if(hot>0)

lcd.print(" CALIENTE! ");else

lcd.print(" Temperatura ");lcd.setCursor(0, 1);lcd.print(" ");lcd.print(temp);lcd.print("’C");count = 0;

Proyecto DIY Termómetro Digital 17