Pistol de măsurat temperatura

Autor: Stănică Ovidiu-Ștefan
Grupa: 336CA

Introducere

Pistolul de măsurat temperatura nu intră în contact cu suprafața a cărei temperatură este măsurată.
Pentru eșantionarea temperaturii se folosește un senzor de temperatură cu raze infraroșii MLX90614.
Pentru măsurarea cât mai potrivită, vor fi introduse 3 moduri de măsurare, specifice unor medii de temperatură.
Se poate folosi exact ca un pistol de măsurat temperatura găsit în supermarket-uri.

Descriere generală

Senzorul de temperatură are un interval de măsurare de -70 până la +360. Deoarece deviația senzorului este procentuală cu temperatura masurată, am ales să ignor extremele intervalului și să constrâng măsurarea între -30 si +300.

Pistolul are 2 butoane prin care e controlată măsurarea temperaturii. Un buton, numit declanșator, activează măsurarea temperaturii cât timp e apăsat, în continuu. Temperatura este afișată pe LCD, pe rândul de jos, în partea stângă. În partea dreaptă e afișată temperatura trecută prin filtrul de procesare.

Pistolul oferă 2 filtre de procesare:
* Minim (MIN) păstrează doar minimul temperaturilor măsurate;
* Maxim (MAX) păstrează doar minimul temperaturilor măsurate;
* None (—) afișează ultima temperatură măsurată;

Filtrul de procesare e resetat când se începe o nouă măsuratoare (adică când se apasă declanșatorul).

Schema bloc

Hardware Design

Voi avea nevoie de următoarele componente:
* Arduino Nano
* LCD 1602
* Adaptor I2C
* Buton schimbat mod măsurare
* Buton declanșat măsurarea
* Baterie
* Fire
* Întrerupător on/off

Display-ul și senzorul le-am pus pe aceeași “placă”, conectate la Arduino printr-un cablu de Ethernet. Am folosit cablu de ethernet pentru că are ecranare cât de cât bună, și I2C este gândit să fie folosit pe același circuit board, deci nu suportă interferențe prea mari.

Butoanele sunt conectare direct lângă Arduino.

Schema electrică

Software Design

Am folosit un timer (timer2) pe Atmega ca să fac citirea senzorului de 2500 ori pe secundă.

Pentru că senzorul de temperatură este interfațat pe I2C, și comunicația pe I2C are nevoie ca interrupt-urile să fie pornite, nu pot face citirea senzorului direct în interrupt-ul de timer. În loc, interrupt-ul setează un flag global. Bucla principală verifică constant acest flag, și dacă este setat, îl elimină și face o citire a senzorului.

Afișarea la display se face de 10 ori pe secundă. În mod ideal, afișarea s-ar putea face mai des, dar refresh rate-ul display-ului nu permite (durează ~70ms ca un pixel să-și schimbe starea).

Filtrele sunt evaluate odată cu refresh-ul senzorului. Dacă se cere schimbarea filtrului, înainte de citire, se resetează datele de acumulare si e schimbată funcția de filtru.

Rezultatul Obținut

Am obținut un dispozitiv care poate măsura temperatura în timp real și care poate afișa maximul și minimul temperaturii dintr-un loc.

Concluzii

În urma realizării acestui proiect, am observat cât de ușor și de distractiv este să creezi proiecte folositoare folosindu-mă de arduino.

Download

Arhiva conține o poză cu proiectul, schema bloc, schema electrică și codul sursă al proiectului: Arhivă Resurse

Jurnal

2021/04/25 - Creare pagină wiki
2021/05/16 - Creare schemă bloc și actualizare pagină wiki
2021/06/01 - Finalizare parte hardware și software a proiectului + creare schemă electrică
2021/06/02 - Finalizare pagină wiki

Bibliografie/Resurse

Link pdf
Link proiect
https://www.youtube.com/watch?v=xAeO1ZQtwKc - Link cu video demo
https://app.diagrams.net/ - Program folosit pentru schema bloc
https://www.kicad.org/download/ - Program folosit pentru schema electrică

pm/prj2021/apredescu/pistol-de-masurare-temperatura.txt · Last modified: 2021/06/03 17:09 by ovidiu.stanica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0