Cum sa citesti temperaturile cu Arduino

Citirea temperaturii cu un Arduino este o funcție extrem de utilă. Este un fel de funcție care este esențială în multe proiecte, de la construirea propriului termostat de acasă la crearea unei stații meteorologice. În plus, este suficient de simplu să fie implementat în câteva minute cu orice Arduino și doar cu două componente simple.

În acest tutorial, vă voi arăta cum să utilizați un Arduino pentru a citi temperatura de la un termistor și a le tipări pe portul serial. Un termistor este o componentă electronică simplă care modifică rezistența pe baza temperaturii. Acest tutorial se concentrează pe mijloacele cele mai simple și mai puțin costisitoare pentru citirea temperaturii. De-a lungul modului în care veți învăța un simplu bloc de bază de electronică, care vă permite să explorați o întreagă lume de senzori cu Arduino.


Cum Arduino citește temperatura

Există mai multe moduri de a citi temperatura cu un Arduino. Câteva dintre acestea includ:

  • I2C sau senzori seriali - Există module avansate de senzori care pot măsura adesea presiunea barometrică, temperatura, umiditatea și alte condiții, toate într-un singur pachet. Cu toate acestea, aceste module sunt de obicei mult mai scumpe și necesită utilizarea cititorului I2C sau serial. Acestea ar putea fi excelente pentru un proiect mai avansat de senzori meteo.
  • Senzor analogic termic - O componentă cu trei pini care captează puterea, solul și transmite o tensiune variabilă pe baza temperaturii prin implementarea unui nucleu de bandă în interiorul unei singure componente. Această clasă de componente este utilă și o voi examina într-un tutorial viitor.
  • termistor - Rezistor care modifică rezistența pe baza temperaturii ambientale.

Acest tutorial se concentrează pe utilizarea metodei termistor din mai multe motive. În primul rând, răspunde rapid la schimbările de temperatură, în al doilea rând, este ieftin și, în cele din urmă, este ușor de utilizat.

Există, de asemenea, două concepte foarte importante de învățat din acest tutorial:

  1. Citirea unei valori de la un pin analog Arduino.
  2. Utilizând un circuit de divizor de tensiune pentru a citi senzorii cu rezistență variabilă.

Senzorii cu rezistență variabilă sunt fabricați pentru a măsura tot felul de lucruri, în lumea fizică, iar abilitatea de a citi acești senzori cu Arduino va fi o excelentă abilitate de bază de a stăpâni. Rotația, presiunea, tensiunea, flexia, lumina și căldura sunt exemple de lucruri pe care le puteți măsura folosind un pin analog și un circuit de divizare a tensiunii.


Strângeți piesele

Pentru acest proiect veți avea nevoie

  • breadboard
  • Arduino (An Uno este folosit în exemplele mele, dar orice model ar trebui să facă)
  • 10K Ohm termistor
  • Rezistor 10K Ohm (maro, negru, portocaliu)
  • Cabluri de conectare
  • Calculatorul cu IDE Arduino instalat (instalarea și utilizarea IDE nu sunt acoperite în acest tutorial)
  • Cablu USB (pentru a conecta Arduino și PC)

Cum functioneaza

Arduino analog pins citi o tensiune care este de așteptat să se întindă de la 0V la 5V. Un mod standard de a transforma o schimbare de rezistență într-un termistor într-o schimbare de tensiune pe care pinul analogic Arduino poate citi este crearea unui circuit de divizor de tensiune. Circuitul utilizează două rezistențe într-un circuit cu o tensiune cunoscută pentru a crea o valoare de tensiune previzibilă matematic: Vout.

Este un circuit foarte simplu, după cum se arată mai jos. Pe măsură ce valoarea R1 (rezistor 1) se modifică, Vout se modifică. În tutorialul nostru R1 va fi termistor și valoarea lui se va schimba în raport cu temperatura. Vout este conectat la portul nostru analog pe Arduino, astfel încât să îl putem monitoriza.

Circuitul circuitului divizorului de tensiune

Teoria destulă, hai să mergem să construim panza și Arduino.


Configurare

Configurați placa de prăjitură și placa Arduino ca în diagrama de mai jos. Diagrama a fost făcută cu ajutorul lui Fritzing, un instrument excelent pentru conectarea logică a proiectelor înainte de a prinde firele și componentele. Componenta de vârf, gri, este termistorul, sau R1, în diagrama de mai sus. Aceasta este una dintre multele moduri de a sârmă circuitul, l-am ales pentru că respectă câteva practici bune, de bază, de panificație.

Plan de bord cu termistor și circuit de divizor de tensiune

Programarea Arduino

Citirea pinului analog pe un Arduino este destul de simplă. Inelele etichetate A0 - A5 de pe arduino sunt ace speciale care atunci când sunt citite cu analogRead () funcția va returna valoarea de la 0 la 1023 unde tensiunea de intrare este de la 0V la 5V. Deoarece valoarea R1, termistor, se modifică în funcție de temperatură, tensiunea din pinul A0 se va schimba previzibil între 0V și 5V.

Să scriem un cod și să îl împingem spre Arduino.

  1. Conectați dispozitivul Ardunio la computer cu ajutorul cablului USB
  2. Deschideți ID-ul Arduino
  3. Copiați și inserați codul de mai jos
  4. apasă pe Încărcați pentru a încărca codul în Arduino
  5. Deschideți monitorul serial al IDE-ului Arduino apăsând CTRL SHIFT M sau Selectarea meniului Instrumente> Monitor serial.
 void setup () // Această funcție devine apelată când Arduino pornește Serial.begin (115200); // Acest cod stabilește portul serial la 115200 baud rate void loop () // Această funcție buclează în timp ce arduino este alimentat int val; // Creați o variabilă întregă val = analogRead (0); // Citiți portul analog 0 și stocați valoarea în val Serial.println (val); // Tipăriți valoarea la întârzierea portului serial (1000); // Așteptați o secundă înainte să o facem din nou

Bacsis: Asigurați-vă că rata baud a monitorului serial se potrivește cu ceea ce am setat în înființat() funcţie. În acest exemplu: 115200.

Rezultatul ar trebui să arate cam așa:

463
463
463
463
463
463

Cu excepția cazului în care panza dvs. este într-un cuptor foarte fierbinte, aceste valori nu au sens. Acest lucru se datorează faptului că acestea sunt simple probe de tensiune transformate într-o scară de la 0 la 1023. Apoi, trebuie să le transformăm într-o valoare de temperatură utilizabilă.


Convertirea valorilor analogice la temperatură

Mai sus am menționat că utilizarea termistorului ar fi simplă, și asta pentru că putem sta pe umerii giganților. Există o ecuație de a face traducerea de la valoarea eșantionului la temperatura numită ecuația Steinhart-Hart. (http://en.wikipedia.org/wiki/Thermistor) Ecuația Steinhart-Hart a fost deja tradusă pentru Arduino. Unele exemple pot fi găsite la playground.arduino.cc într-un articol al lui Milan Malesevic și al lui Zoran Stupic. Le-am ilustrat funcția Termistorul () de mai jos și a adăugat comentarii cu privire la modul de utilizare a acesteia.

  1. Copiați și inserați codul de mai jos în ID-ul Arduino, înlocuind exemplul original
  2. Faceți clic pe Încărcați pentru a împinge acest cod până la Arduino.
  3. Deschideți din nou fereastra Monitorului serial Arduino, deoarece a dispărut când ați încărcat codul.
 #include  // Încarcă funcțiile matematice mai avansate void setup () // Această funcție devine apelată când Arduino pornește Serial.begin (115200); // Acest cod stabilește portul serial la 115200 baud rate dublu Thermister (int RawADC) // Funcție pentru a efectua matematica fantezie a ecuației Steinhart-Hart dublă Temp; Temp = log (((10240000 / RawADC) - 10000)); Temp = 1 / (0,001129148 + (0,000234125 + (0.0000000876741 * Temp * Temp)) Temp *); Temp = Temp - 273,15; // Convertiți Kelvin la Celsius Temp = (Temp * 9.0) / 5.0 + 32.0; // Celsius în Fahrenheit - comentează această linie dacă ai nevoie de Celsius return Temp;  void loop () // Această funcție buclează în timp ce arduino este alimentat int val; // Creați o variabilă întreagă double temp; // variabilă pentru a ține o valoare de temperatură val = analogRead (0); // Citiți portul analog 0 și stocați valoarea în val temp = Thermister (val); // Efectuează matematica fantezie pe valoarea analogică brut Serial.println (temp); // Tipăriți valoarea la întârzierea portului serial (1000); // Așteptați o secundă înainte să o facem din nou

Acum, producția ar trebui să arate mult mai mult:

69.22
69.07
69.22
69.22
70.33
72.07
72,86
73,34
74.13

Acum, acest lucru are sens. Atelierul meu este într-adevăr 69 de grade Fahrenheit. În acest exemplu am atins vârful termistorului cu degetul și mi-a simțit creșterea temperaturii după cum puteți vedea.

Încercați să experimentați setările pentru a vă face mai confortabil cu aceste noi abilități. Iată câteva sugestii.

  • Reduceți valoarea întârzierii în buclă pentru a vedea cât de repede poate reacționa termistorul la schimbările de temperatură. (Nu sugerez să schimbați acest lucru sub 50 sau ar putea să vă depășiți tamponul serial.)
  • Încercați să modificați programul pentru a obține valorile Celsius (sugestie: citiți comentariile din cod)
  • Modificați panoul și codul pentru a utiliza pinul A1 în loc de A0
  • Credit suplimentar: Reconfigurați circuitul pentru a utiliza un rezistor de fotografie și un document de 10K Ohm analogRead () valori bazate pe schimbări de iluminare (indiciu: utilizați primul segment de cod)

rezumat

Cam despre asta e. Acum puteți merge și creați orice fel de invenție folosind un termistor foarte ieftin.

  • Ați angajat abilitățile de a construi un circuit de pană
  • Compilarea și încărcarea unei schițe la arduino

În plus, din acest tutorial ați învățat cum să:

  • citiți valorile analoage de la Arduino utilizând analogRead ()
  • să înțeleagă și să manipuleze valoarea returnată de la analogRead () funcţie
  • utilizați un circuit de divizor de tensiune pentru a citi modificările la un senzor bazat pe rezistență, cum ar fi termistorul
  • conversia valorilor termistorului analogic în valorile temperaturii

În timp ce la început programați-vă arduinul să citească și să înțeleagă lumea din jurul său poate părea complicată, în realitate există o serie întreagă de senzori simpli și necostisitori disponibili, care vă vor permite să interfați cu lumea reală rapid și ușor. Circuitul de divizare a tensiunii și un cod simplu vă pot da următoarea creație simțuri noi și puternice.