Uređaj za nadzor temperature, koristi temperaturni senzor koji mjeri temperaturu. Na LCD-u se ispisuje mjerena temperatura te ovisno o rasponu temperature ispisuje se "Prohladno", "Toplo", "Vruce". Korisnik ima mogućnost uključenja ventilatora pomoći tipkala te postoje i signalne diode koje korisniku signaliziraju da li je ventilator uključen, nije uključen te kada je potrebno uključiti ventilator upravljan preko releja.

Dependencies:   TextLCD mbed

Opis rada:

Ovaj sklop sadrži temperaturni senzor (LM35), LCD zaslon, četiri signalne led diode (zelena, žuta, crvena i plava), tipkalo, relej i 5V ventilator. Prilikom uključenja na napajanje ispisuje se početna poruka korisniku. Temperaturni senzor svaku sekundu mjeri temperaturu koja se prikazuje na zaslonu lcd-a nakon početne poruke. Također ovisno o rasponu temperature na zaslonu se ispisuje „Prohladno!“ ako je temperatura manja od 18 °C, ako je temperatura između 18 °C i 24 °C, na zaslonu se ispisuje „Toplo!“, ako je temperatura veća od 24 °C na zaslonu se ispisuje „Vruce!“. Četiri navedene led diode služe kao signalizacija. Pritiskom na tipkalo se upravlja relejom koji isključuje ili isključuje ventilator na svom izlazu ovisno o potrebi korisnika. Crvena led dioda je uključena kada je ventilator na izlazu isključen. Žuta led dioda treperi svaku sekundu te signalizira da temperaturni senzor očitava temperaturu. Zelena led dioda je uključena kada je ventilator uključen. Plava led dioda je isključena ako je temperatura manja od 18 °C, uključena ako je temperatura između 18 °C i 24 °C, treperi svakih pola sekunde ako je temperatura veća od 24 °C te signalizira da je potrebno uključiti ventilator pritiskom na tipkalo.

NAPOMENA: Za ovaj rad korišten je Nucleo-64 STM32F072RB sa već izvedenim pinovima na pločici (64 pina). Radi jednostavnijeg prikaza na električnoj shemi korišten je samo čip sa 64 pina na koje su spojene komponente.

Električna shema: https://os.mbed.com/media/uploads/tinek/schematic_shema_2022-11-26.png

Committer:
tinek
Date:
Sun Nov 27 12:31:44 2022 +0000
Revision:
1:4d8e03a15c9a
Parent:
0:e4464d786d40
Final version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tinek 0:e4464d786d40 1 #include "mbed.h"
tinek 0:e4464d786d40 2 #include "Signal.h"
tinek 0:e4464d786d40 3 #include "TextLCD.h"
tinek 0:e4464d786d40 4
tinek 0:e4464d786d40 5 Signal led4(PB_4);
tinek 0:e4464d786d40 6 AnalogIn LM35(PA_0);
tinek 0:e4464d786d40 7 DigitalOut led1(PA_8);
tinek 0:e4464d786d40 8 DigitalOut led2(PB_3);
tinek 0:e4464d786d40 9 DigitalOut led3(PA_5);
tinek 0:e4464d786d40 10 DigitalOut fan(PA_6);
tinek 0:e4464d786d40 11 InterruptIn button(PB_10);
tinek 0:e4464d786d40 12 Timer debounce;
tinek 0:e4464d786d40 13 Ticker signal;
tinek 0:e4464d786d40 14 TextLCD lcd(PA_10,PB_5,PA_9,PC_7,PB_6,PA_7); //RS,E,D4,D5,D6,D7
tinek 0:e4464d786d40 15
tinek 0:e4464d786d40 16 void toggle(void);
tinek 0:e4464d786d40 17 float temperature(float value);
tinek 0:e4464d786d40 18
tinek 0:e4464d786d40 19 void signal_diode()
tinek 0:e4464d786d40 20 {
tinek 0:e4464d786d40 21 led2 = !led2;
tinek 0:e4464d786d40 22 }
tinek 0:e4464d786d40 23
tinek 0:e4464d786d40 24 float temperature(float value)
tinek 0:e4464d786d40 25 {
tinek 0:e4464d786d40 26 float temp;
tinek 0:e4464d786d40 27 float Vout;
tinek 0:e4464d786d40 28 int Vref = 5000;
tinek 0:e4464d786d40 29 Vout = (value * Vref);
tinek 0:e4464d786d40 30 temp = (Vout/10);
tinek 0:e4464d786d40 31 return temp;
tinek 0:e4464d786d40 32 }
tinek 0:e4464d786d40 33
tinek 0:e4464d786d40 34 int main()
tinek 0:e4464d786d40 35 {
tinek 0:e4464d786d40 36 float value;
tinek 0:e4464d786d40 37 float T;
tinek 0:e4464d786d40 38 char c = '.';
tinek 0:e4464d786d40 39 int i;
tinek 0:e4464d786d40 40 button.mode(PullUp);
tinek 0:e4464d786d40 41 debounce.start();
tinek 0:e4464d786d40 42 button.rise(&toggle);
tinek 0:e4464d786d40 43 led2 = 0;
tinek 0:e4464d786d40 44 led3 = 1;
tinek 0:e4464d786d40 45 signal.attach(&signal_diode, 1);
tinek 0:e4464d786d40 46 for (i = 7; i < 16; i++) {
tinek 0:e4464d786d40 47 lcd.locate(0,0);
tinek 0:e4464d786d40 48 lcd.printf("LOADING");
tinek 0:e4464d786d40 49 lcd.locate(0,1);
tinek 0:e4464d786d40 50 lcd.printf("Please wait.");
tinek 0:e4464d786d40 51 lcd.locate(i,0);
tinek 0:e4464d786d40 52 lcd.printf("%c", c);
tinek 0:e4464d786d40 53 wait(0.5);
tinek 0:e4464d786d40 54 }
tinek 0:e4464d786d40 55 while(1) {
tinek 0:e4464d786d40 56 lcd.cls();
tinek 0:e4464d786d40 57 lcd.printf("Temp:");
tinek 0:e4464d786d40 58 value = LM35.read();
tinek 0:e4464d786d40 59 T = temperature(value);
tinek 0:e4464d786d40 60 lcd.locate(6,0);
tinek 0:e4464d786d40 61 lcd.printf("%.2f C",T);
tinek 0:e4464d786d40 62 if (T < 18) {
tinek 0:e4464d786d40 63 lcd.locate(3,1);
tinek 0:e4464d786d40 64 lcd.printf("Prohladno!");
tinek 0:e4464d786d40 65 led4.light(0);
tinek 0:e4464d786d40 66 } else if (T >= 18 && T < 24) {
tinek 0:e4464d786d40 67 lcd.locate(5,1);
tinek 0:e4464d786d40 68 lcd.printf("Toplo!");
tinek 0:e4464d786d40 69 led4.light(1);
tinek 0:e4464d786d40 70 } else if (T >= 24) {
tinek 0:e4464d786d40 71 lcd.locate(5,1);
tinek 0:e4464d786d40 72 lcd.printf("Vruce!");
tinek 0:e4464d786d40 73 led4.light(2);
tinek 0:e4464d786d40 74 }
tinek 0:e4464d786d40 75 wait(1);
tinek 0:e4464d786d40 76 }
tinek 0:e4464d786d40 77 }
tinek 0:e4464d786d40 78
tinek 0:e4464d786d40 79 void toggle()
tinek 0:e4464d786d40 80 {
tinek 0:e4464d786d40 81 if (debounce.read_ms()>200)
tinek 0:e4464d786d40 82 fan=!fan;
tinek 0:e4464d786d40 83 if (fan) {
tinek 0:e4464d786d40 84 lcd.cls();
tinek 0:e4464d786d40 85 led1 = 1;
tinek 0:e4464d786d40 86 led3 = 0;
tinek 0:e4464d786d40 87 lcd.locate(0,0);
tinek 0:e4464d786d40 88 lcd.printf("Fan: ON");
tinek 0:e4464d786d40 89 wait(1);
tinek 0:e4464d786d40 90 } else {
tinek 0:e4464d786d40 91 lcd.cls();
tinek 0:e4464d786d40 92 led1 = 0;
tinek 0:e4464d786d40 93 led3 = 1;
tinek 0:e4464d786d40 94 lcd.locate(0,0);
tinek 0:e4464d786d40 95 lcd.printf("Fan: OFF");
tinek 0:e4464d786d40 96 wait(1);
tinek 0:e4464d786d40 97 }
tinek 0:e4464d786d40 98 debounce.reset();
tinek 0:e4464d786d40 99 }
tinek 0:e4464d786d40 100