categorii: Circuite de micro-controler
Număr de vizualizări: 18998
Comentarii la articol: 0

Conectarea senzorilor analogici la Arduino, citirea senzorilor

 

Senzorii sunt folosiți pentru a măsura cantitățile, condițiile de mediu și reacțiile la schimbările în stări și poziții. La ieșirea lor, pot exista atât semnale digitale constând din acelea și zerouri, cât și analogice constând dintr-un număr infinit de tensiuni într-un anumit interval.


Despre senzori

În consecință, senzorii sunt împărțiți în două grupuri:

1. Digital.

2. Analogic.

Pentru a citi valorile digitale, pot fi utilizate atât intrări digitale cât și analogice ale microcontrolerului, în cazul nostru Avr pe bordul Arduino. Senzorii analogici trebuie conectați printr-un convertor analog-digital (ADC). ATMEGA328, este instalat în majoritatea plăcilor ARDUINO (mai multe despre acest lucru) există un articol pe site), conține în circuitul său ADC încorporat. Din câte 6 intrări analogice sunt disponibile.

Dacă acest lucru nu este suficient pentru dvs., puteți utiliza un ADC extern suplimentar pentru a vă conecta la intrările digitale, dar acest lucru va complica codul și va crește volumul acestuia, datorită adăugării algoritmilor de procesare și a controlului ADC. Subiectul convertoarelor analog-digital este suficient de larg încât puteți face un articol sau un ciclu separat despre acestea. Este mai ușor să utilizați o placă cu un număr mare de ele sau multiplexoare. Să ne uităm la modul de conectare a senzorilor analogici la Arduino.

Conectarea senzorilor analogici la Arduino, citirea senzorilor

Schema generală a senzorilor analogici și conectarea acestora

Senzorul poate fi chiar un potențiometru convențional. De fapt, acesta este un senzor de poziție rezistiv, pe acest principiu pun în aplicare controlul nivelului lichidelor, unghiul de înclinare, deschiderea a ceva. Poate fi conectat la arduino în două moduri.

Schema generală a senzorilor analogici și conectarea acestora

Circuitul de mai sus vă permite să citiți valori de la 0 la 1023, datorită faptului că toată tensiunea scade pe potențiometru. Aici principiul divizorului de tensiune funcționează, în orice poziție a motorului, tensiunea este distribuită liniar pe suprafața stratului rezistiv sau pe o scară logaritmică (depinde de potențiometru) acea parte a tensiunii care rămâne între ieșirea glisorului (contact glisant) și pământ (gnd) ajunge la intrare. Pe panou, această conexiune arată astfel:

Schema de cablare pentru senzori analogici

A doua opțiune este conectată în funcție de circuitul clasic al divizorului rezistiv, aici tensiunea în punctul de rezistență maximă a potențiometrului depinde de rezistența rezistenței superioare (în figura R2).

Divizor rezistent clasic

În general, divizorul rezistiv este foarte important nu numai în domeniul de lucru cu microcontrolere, ci și în electronică în general. Mai jos vedeți schema generală, precum și raporturile calculate pentru determinarea valorii tensiunii pe brațul inferior.

Relații de schemă și proiectare pentru determinarea valorii tensiunii pe brațul inferior

O astfel de conexiune este caracteristică nu numai pentru un potențiometru, ci pentru toți senzorii analogici, deoarece majoritatea lucrează pe principiul schimbării rezistenței (conductivitate) sub influența surselor externe - temperatură, lumină, radiații de diferite tipuri etc.

Următoarea este cea mai simplă diagramă de conectare termistor, în principiu, un termometru poate fi realizat pe baza sa. Dar precizia citirilor sale va depinde de precizia tabelului de conversie a rezistenței la temperatură, de stabilitatea sursei de putere și de coeficienții de schimbare a rezistenței (inclusiv rezistența brațului superior) sub aceeași temperatură. Acest lucru poate fi redus la minimum prin selectarea rezistențelor optime, a puterii și a curenților de funcționare.

Cea mai simplă diagrama de conexiune pentru un termistor

În același mod, puteți conecta fotodioduri, fototransistori ca un senzor de lumină. Fotoelectronica a găsit aplicație în senzori care determină distanța și prezența unui obiect, unul dintre care vom lua în considerare ulterior.

photoresistor

Figura arată legătura fotorezistorului cu arduino.

Schema de conectare a fotorezistorului la arduino

Partea software

Înainte de a vorbi despre conectarea anumitor senzori, am decis să iau în calcul software-ul pentru procesarea lor. Toate semnalele analogice sunt citite din aceleași porturi folosind comanda analogRead ().De remarcat este faptul că Arduino UNO și alte modele cu 168 și 328 atmega au ADC pe 10 biți. Aceasta înseamnă că microcontrolerul vede semnalul de intrare ca un număr de la 0 la 1023 - un total de 1024 valori. Dacă considerați că tensiunea de alimentare este de 5 volți, atunci sensibilitatea la intrare:

5/1024 = 0,0048 V sau 4,8 mV

Adică, cu o valoare de 0 la intrare, tensiunea este 0, și cu o valoare de 10 la intrare - 48 mV.

În unele cazuri, pentru a converti valorile la nivelul dorit (de exemplu, pentru a transfera la ieșirea PWM), 1024 este împărțit la un număr și, ca urmare a divizării, ar trebui obținut maximul necesar. Funcția hărții (sursă, scăzut, mare, mare, mare, scăzut) funcționează mai clar, unde:

  • număr redus - mai mic înainte de conversie după funcție;

  • vch - superior;

  • VCh - numărul mai mic după procesare de către funcție (la ieșire);

  • VHV - top.

Aplicație practică pentru conversia unei funcții a unei valori de intrare pentru transmisie într-un PWM (valoarea maximă 255, pentru conversia datelor de la un ADC la o ieșire PWM 1024 împărțită la 4):

Opțiunea 1 - diviziune.

int x;

x = analogRead (pot) / 4;

// se va primi un număr de la 0 la 1023

// Împărțiți-o cu 4, obținem un număr întreg de la 0 la 255 analogWrite (led, x);

Opțiunea 2 - funcția MAP - deschide mai multe oportunități, dar mai multe despre asta mai târziu.

nul buclă ()

{int val = analogRead (0);

val = hartă (val, 0, 1023, 0, 255);

analogWrite (led, val); }

Sau chiar mai scurt:

analogWrite (led, hartă (val, 0, 1023, 0, 255))

Nu toți senzorii au 5 volți la ieșire, adică. numărul 1024 nu este întotdeauna convenabil de împărțit pentru a obține același 256 pentru PWM (sau pentru oricare altul). Acesta poate fi de 2 și 2,5 volți și alte valori, când semnalul maxim va fi, de exemplu, 500.


Senzori analogici populari

O imagine generală a senzorului pentru arduino și conexiunea acestuia este prezentată mai jos:

Cum să conectați un senzor analogic

De obicei, există trei ieșiri, poate exista o a patra - digitală, dar acestea sunt caracteristici.

Explicația desemnării ieșirilor senzorului analogic:

  • G - putere minus, autobuz comun, sol. Poate fi desemnat GND, „-”;

  • V - plus putere. Poate fi notat ca Vcc, Vtg, "+";

  • S - semnal de ieșire, notare posibilă - Semn, SGN, Vout, semn.

Începătorii să învețe cum să citească valorile senzorilor aleg proiecte de tot felul de termometre. Astfel de senzori sunt în design digital, de exemplu DS18B20, și în analog - acestea sunt tot felul de microcircuite precum LM35, TMP35, TMP36 și altele. Iată un exemplu de design modular al unui astfel de senzor de pe placă.

Senzor analogic pe TMP36

Precizia senzorului este de la 0,5 până la 2 grade. Construit pe un cip TMP36, la fel ca multe dintre analogiile sale, valorile sale de ieșire sunt de 10 mV / ° C. La 0 °, semnalul de ieșire este 0 V, apoi se adaugă 10 mV pe 1 grad. Adică, la 25,5 grade, tensiunea este de 0,255 V, este posibilă o abatere în eroarea și autoîncălzirea cristalului IC (până la 0,1 ° C).


În funcție de microcircuitul utilizat, intervalele de măsurare și tensiunile de ieșire pot diferi, vezi tabelul.

Domeniile de temperatură și tensiunile de ieșire ale senzorului

Cu toate acestea, pentru un termometru de înaltă calitate, nu puteți doar să citiți valorile și să le afișați pe indicatorul LCD sau portul serial pentru comunicarea cu un computer, pentru stabilitatea semnalului de ieșire a întregului sistem în ansamblu, trebuie să medieți valorile de la senzori, atât analogici cât și digitali, în anumite limite, în timp ce fără a le afecta viteza și precizia (există o limită la orice). Acest lucru se datorează prezenței zgomotului, interferenței, contactelor instabile (pentru senzori rezistivi, bazați de un potențiometru, a se vedea defecțiunile senzorului de nivel de apă sau de combustibil în rezervorul auto).

Codurile pentru lucrul cu majoritatea senzorilor sunt destul de voluminoase, așa că nu le dau toate, ele pot fi găsite cu ușurință în rețea prin cererea „senzor + nume Arduino”.

Următorul senzor pe care îl folosesc deseori inginerii robotici arduino este senzorul de linie. Se bazează pe dispozitive fotoelectronice, tip de fototransistori.

Senzor de linie

Cu ajutorul lor, un robot care se mișcă de-a lungul liniei (utilizat în producția automatizată pentru livrarea pieselor) determină prezența unei benzi albe sau negre. În partea dreaptă a figurii, sunt vizibile două dispozitive similare cu LED-urile. Unul dintre ele este LED-ul, poate emite în spectrul invizibil, iar al doilea este un fototransistor.

Lumina se reflectă de la suprafață dacă este întunecată - fototransistorul nu primește un flux reflectat, dar dacă lumina primește și se deschide. Algoritmii pe care îi puneți în microcontroler procesează semnalul și determină corectitudinea și direcția de mișcare și le corectează. Mouse-ul optic, pe care cel mai probabil îl țineți în mână în timp ce citiți aceste linii, este aranjat în mod similar.

Voi suplimenta cu un senzor adiacent - un senzor de distanță de la Sharp, este folosit și în robotică, precum și în condiții de monitorizare a poziției obiectelor în spațiu (cu eroarea TX corespunzătoare).

Senzor de distanță accentuată

Acționează pe același principiu. Biblioteci și exemple de schițe și proiecte cu acestea sunt disponibile în număr mare pe site-urile Arduino.


concluzie

Utilizarea senzorilor analogici este foarte simplă, iar cu limbajul de programare Arduino ușor de învățat, înveți rapid dispozitive simple. Această abordare are dezavantaje semnificative în comparație cu omologii digitali. Acest lucru se datorează variației largi a parametrilor, ceea ce provoacă probleme la înlocuirea senzorului. Este posibil să fie necesar să editați codul sursă al programului.

Adevărat, dispozitivele analogice individuale încorporează surse de tensiune de referință și stabilizatori de curent, ceea ce are un efect pozitiv asupra repetabilității produsului final și a dispozitivului în producția de masă. Toate problemele pot fi evitate folosind dispozitive digitale.

Circuitul digital ca atare reduce nevoia de a regla și regla circuitul după asamblare. Acest lucru vă oferă posibilitatea de a asambla mai multe dispozitive identice pe același cod sursă, ale cărui detalii vor da aceleași semnale, cu senzori rezistivi, acest lucru este rar.

Vedeți și pe site-ul nostru:Conectarea dispozitivelor externe la Arduino

Consultați și la i.electricianexp.com:

  • Care este diferența dintre senzorii analogici și cei digitali
  • Măsurarea temperaturii și umidității pe Arduino - o selecție de moduri
  • Cum se face conversia semnalului analog în digital
  • Cele mai populare senzori pentru Arduino
  • Modul de funcționare și funcționarea senzorului de linie

  •