SISTEMA DE MEDICION DE TEMPERATURA CON CONTROL SERIAL

Dependencies:   mbed TextLCD

PROYECTO FINAL CONTROL DE TEMPERATURA POR PUERTO SERIAL

El siguiente proyecto representa un prototito de medicion de temperatura utilizando librerias mbed. Para este ejemplo se utilizo el sensor LM35 con la siguiente configuracion como muestra en la siguiente figura. https://os.mbed.com/media/uploads/jlemap/lm35.jpg

Las diferentes temperaturas son simuladas mediantes 4 leds.

Led 1 Azul Alarma temperatura baja <25grados C

Led 2 Verde temperatura normal desde >25-30 grados C

Led 3 Amarillo temperatura media alta >30 hasta 35 grados C

Led 4 Rojo Alarma temperatura Alta >40 grados C

Al iniciar la programacion de escalizo el sensor de temperatura donde se midio con un multimetro que mide 10mv por grado de temperarura. Este es un dato importante para entender el programa en el compilador esta programado de la siguiente manera.

sensor=ain.read()*290; Donde los 290 significa 29 grados centigrados.

Para visualizar los grados de temperatura se utilizo una LCD 16*2 donde esl costo es de $5 La configuracion de los pines de la pantalla es la siguiente.

VCC -GND

VDD-5V

VO-Contraste con una resistencia de 1k

RS-PB7

RW-GND

E-PB8

D4-PB15

D5-PB14

D6-PB13

D7-PB12

A-VCC con una resistencia de 220 ohmios

K-GND

Se representa en la siguiente imagen.

https://os.mbed.com/media/uploads/jlemap/lcd16x2_interfacing.png

Para visualizar en la pantalla se utilizo la siguiente libreria.

#include "TextLCD.h"

TextLCD lcd(PB_7, PB_8, PB_15, PB_14, PB_13, PB_12);

while(1) {

lcd.locate(0,0);

lcd.printf("sensor:%2.3f%",sensor);

lcd.printf("ALAR TEMP. BAJA \n");

device.printf("ALARMA TEMPERATURA BAJA\n");

Se reprenta las siguientes imagenes del proyecto.

https://os.mbed.com/media/uploads/jlemap/img_20200215_123438.jpg


https://os.mbed.com/media/uploads/jlemap/img_20200215_123418.jpg

El programa es el siguiente.

  1. include "mbed.h"

#include "sub_temp.h"

  1. include "TextLCD.h"

AnalogIn ain(PC_1);

DigitalOut led1(PD_13); rojo

DigitalOut led2(PD_12); amarillo

DigitalOut led3(PD_14);verde

DigitalOut led4(PD_15);azul

float sensor=0;

Serial device(PA_2,PA_3,115200);

TextLCD lcd(PB_7, PB_8, PB_15, PB_14, PB_13, PB_12);

int main()

{

device.baud(115200);

while(1) {

lcd.locate(0,0);

lcd.printf("sensor:%2.3f%",sensor);

sensor=ain.read()*290;

wait(0.5);

if (sensor < 25) {

led3=0;

led1=0;

led2=0;

led4=1;

lcd.locate(0, 1);

lcd.printf("ALAR TEMP. BAJA \n");

device.printf("ALARMA TEMPERATURA BAJA\n");

}

if (sensor>=25 and sensor<30) {

wait(0.5);

led3=1;

led1=0;

led2=0;

led4=0;

lcd.locate(0, 1);

lcd.printf("TEMPER. NORMAL \n");

device.printf("TEMPERATURA NORMAL\n");

}

if (sensor>=30 and sensor<35) {

wait(0.5);

led2=1;

led1=0;

led3=0;

led4=0;

lcd.locate(0, 1);

lcd.printf("TEMPER. MEDIANA \n");

device.printf("TEMPERATURA MEDIANA\n");

}

if (sensor>=35) {

wait(0.5);

led1=1;

led2 = 0;

led3=0;

led4=0;

lcd.locate(0, 1);

lcd.printf("ALAM TEMP. ALTA \n");

device.printf("ALARMA TEMPERATURA ALTA\n");

}

comparacion();

device.printf("Valor de temperatura:%2.3f grados%\n",sensor);2.1

device.printf("ain:%2.3f grados%\n",sensor);2.1

/* if(sensor>=40.0) { TEMPERATURA >=50 GRADOS LED ROJO

wait(0.5);

led1=1;

device.printf("ALARMA TEMPERATURA ALTA\n");

} else {

wait(0.5);

led1=0; }

if(sensor>=30.0 and sensor<40.0) { TEMPERATURA DE 30-40 GRADOS LED AMARILLO

wait(0.5);

led2=1;

device.printf("TEMPERATURA NORMAL");

} else {

led2=0;

}

if(sensor>=12.0 and sensor<30.0) { TEMPERATURA DE 12-30 GRADOS LED VERDE

wait(0.5);

led3=1;

device.printf("TEMPERATURA MEDIA BAJA\n");

} else {

led3=0;

}

if(sensor<12.0) { TEMPERATURA DE 0-12 GRADOS LED AZUL

wait(0.5);

led4=1;

device.printf("ALARMA TEMPERATURA BAJA\n");

} else {

led4=0;

}

  • /

wait(0.2);

} }

Committer:
jlemap
Date:
Sat Feb 15 17:16:55 2020 +0000
Revision:
0:99c6b18bb805
PROYECTO FINAL DE TEMPERATURA MAESTRIA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jlemap 0:99c6b18bb805 1 #include "mbed.h"
jlemap 0:99c6b18bb805 2 //#include "sub_temp.h"
jlemap 0:99c6b18bb805 3 #include "TextLCD.h"
jlemap 0:99c6b18bb805 4
jlemap 0:99c6b18bb805 5 AnalogIn ain(PC_1);
jlemap 0:99c6b18bb805 6 DigitalOut led1(PD_13); //rojo
jlemap 0:99c6b18bb805 7 DigitalOut led2(PD_12); //amarillo
jlemap 0:99c6b18bb805 8 DigitalOut led3(PD_14);//verde
jlemap 0:99c6b18bb805 9 DigitalOut led4(PD_15);//azul
jlemap 0:99c6b18bb805 10
jlemap 0:99c6b18bb805 11
jlemap 0:99c6b18bb805 12 float sensor=0;
jlemap 0:99c6b18bb805 13 Serial device(PA_2,PA_3,115200);
jlemap 0:99c6b18bb805 14
jlemap 0:99c6b18bb805 15 TextLCD lcd(PB_7, PB_8, PB_15, PB_14, PB_13, PB_12);
jlemap 0:99c6b18bb805 16
jlemap 0:99c6b18bb805 17 int main()
jlemap 0:99c6b18bb805 18 {
jlemap 0:99c6b18bb805 19
jlemap 0:99c6b18bb805 20 device.baud(115200);
jlemap 0:99c6b18bb805 21
jlemap 0:99c6b18bb805 22 while(1) {
jlemap 0:99c6b18bb805 23 lcd.locate(0,0);
jlemap 0:99c6b18bb805 24 lcd.printf("sensor:%2.3f%",sensor);
jlemap 0:99c6b18bb805 25 sensor=ain.read()*290;
jlemap 0:99c6b18bb805 26 wait(0.5);
jlemap 0:99c6b18bb805 27 if (sensor < 25) {
jlemap 0:99c6b18bb805 28 led3=0;
jlemap 0:99c6b18bb805 29 led1=0;
jlemap 0:99c6b18bb805 30 led2=0;
jlemap 0:99c6b18bb805 31 led4=1;
jlemap 0:99c6b18bb805 32 lcd.locate(0, 1);
jlemap 0:99c6b18bb805 33 lcd.printf("ALAR TEMP. BAJA \n");
jlemap 0:99c6b18bb805 34 device.printf("ALARMA TEMPERATURA BAJA\n");
jlemap 0:99c6b18bb805 35 }
jlemap 0:99c6b18bb805 36 if (sensor>=25 and sensor<30) {
jlemap 0:99c6b18bb805 37 wait(0.5);
jlemap 0:99c6b18bb805 38 led3=1;
jlemap 0:99c6b18bb805 39 led1=0;
jlemap 0:99c6b18bb805 40 led2=0;
jlemap 0:99c6b18bb805 41 led4=0;
jlemap 0:99c6b18bb805 42 lcd.locate(0, 1);
jlemap 0:99c6b18bb805 43 lcd.printf("TEMPER. NORMAL \n");
jlemap 0:99c6b18bb805 44 device.printf("TEMPERATURA NORMAL\n");
jlemap 0:99c6b18bb805 45 }
jlemap 0:99c6b18bb805 46 if (sensor>=30 and sensor<35) {
jlemap 0:99c6b18bb805 47 wait(0.5);
jlemap 0:99c6b18bb805 48 led2=1;
jlemap 0:99c6b18bb805 49 led1=0;
jlemap 0:99c6b18bb805 50 led3=0;
jlemap 0:99c6b18bb805 51 led4=0;
jlemap 0:99c6b18bb805 52 lcd.locate(0, 1);
jlemap 0:99c6b18bb805 53 lcd.printf("TEMPER. MEDIANA \n");
jlemap 0:99c6b18bb805 54 device.printf("TEMPERATURA MEDIANA\n");
jlemap 0:99c6b18bb805 55 }
jlemap 0:99c6b18bb805 56 if (sensor>=35) {
jlemap 0:99c6b18bb805 57 wait(0.5);
jlemap 0:99c6b18bb805 58 led1=1;
jlemap 0:99c6b18bb805 59 led2 = 0;
jlemap 0:99c6b18bb805 60 led3=0;
jlemap 0:99c6b18bb805 61 led4=0;
jlemap 0:99c6b18bb805 62 lcd.locate(0, 1);
jlemap 0:99c6b18bb805 63 lcd.printf("ALAM TEMP. ALTA \n");
jlemap 0:99c6b18bb805 64 device.printf("ALARMA TEMPERATURA ALTA\n");
jlemap 0:99c6b18bb805 65 }
jlemap 0:99c6b18bb805 66 //comparacion();
jlemap 0:99c6b18bb805 67
jlemap 0:99c6b18bb805 68 device.printf("Valor de temperatura:%2.3f grados%\n",sensor);//2.1
jlemap 0:99c6b18bb805 69 // device.printf("ain:%2.3f grados%\n",sensor);//2.1
jlemap 0:99c6b18bb805 70 /* if(sensor>=40.0) { //TEMPERATURA >=50 GRADOS LED ROJO
jlemap 0:99c6b18bb805 71 wait(0.5);
jlemap 0:99c6b18bb805 72 led1=1;
jlemap 0:99c6b18bb805 73 device.printf("ALARMA TEMPERATURA ALTA\n");
jlemap 0:99c6b18bb805 74 } else {
jlemap 0:99c6b18bb805 75 wait(0.5);
jlemap 0:99c6b18bb805 76 led1=0;
jlemap 0:99c6b18bb805 77 }
jlemap 0:99c6b18bb805 78 if(sensor>=30.0 and sensor<40.0) { //TEMPERATURA DE 30-40 GRADOS LED AMARILLO
jlemap 0:99c6b18bb805 79 wait(0.5);
jlemap 0:99c6b18bb805 80 led2=1;
jlemap 0:99c6b18bb805 81 // device.printf("TEMPERATURA NORMAL");
jlemap 0:99c6b18bb805 82 } else {
jlemap 0:99c6b18bb805 83 led2=0;
jlemap 0:99c6b18bb805 84 }
jlemap 0:99c6b18bb805 85
jlemap 0:99c6b18bb805 86 if(sensor>=12.0 and sensor<30.0) { //TEMPERATURA DE 12-30 GRADOS LED VERDE
jlemap 0:99c6b18bb805 87 wait(0.5);
jlemap 0:99c6b18bb805 88 led3=1;
jlemap 0:99c6b18bb805 89
jlemap 0:99c6b18bb805 90 device.printf("TEMPERATURA MEDIA BAJA\n");
jlemap 0:99c6b18bb805 91 } else {
jlemap 0:99c6b18bb805 92 led3=0;
jlemap 0:99c6b18bb805 93 }
jlemap 0:99c6b18bb805 94
jlemap 0:99c6b18bb805 95 if(sensor<12.0) { //TEMPERATURA DE 0-12 GRADOS LED AZUL
jlemap 0:99c6b18bb805 96 wait(0.5);
jlemap 0:99c6b18bb805 97 led4=1;
jlemap 0:99c6b18bb805 98 device.printf("ALARMA TEMPERATURA BAJA\n");
jlemap 0:99c6b18bb805 99 } else {
jlemap 0:99c6b18bb805 100 led4=0;
jlemap 0:99c6b18bb805 101 }
jlemap 0:99c6b18bb805 102
jlemap 0:99c6b18bb805 103 */
jlemap 0:99c6b18bb805 104 // wait(0.2);
jlemap 0:99c6b18bb805 105
jlemap 0:99c6b18bb805 106
jlemap 0:99c6b18bb805 107 }
jlemap 0:99c6b18bb805 108 }