This is an old revision of the document!


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 MXL90614.
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).

Hardware Design

Voi avea nevoie de următoarele componente:
* Arduino Uno
* 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.

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 odata cu refresh-ul senzorului. Daca se cere schimbarea filtrului, inainte de citire, se reseteaza datele de acumulare si e schimbata functia de filtru.

Rezultatul Obtinut

Downloads

Bibliografie/Resurse

Link proiect
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.1622570949.txt.gz · Last modified: 2021/06/01 21: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