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.
Există mai multe moduri de a citi temperatura cu un Arduino. Câteva dintre acestea includ:
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:
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.
Pentru acest proiect veți avea nevoie
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 tensiuneTeoria destulă, hai să mergem să construim panza și Arduino.
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 tensiuneCitirea 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.
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ă.
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.
#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.
analogRead ()
valori bazate pe schimbări de iluminare (indiciu: utilizați primul segment de cod)Cam despre asta e. Acum puteți merge și creați orice fel de invenție folosind un termistor foarte ieftin.
În plus, din acest tutorial ați învățat cum să:
analogRead ()
analogRead ()
funcţieÎ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.