Lecția 98-9: Indicator de nivel al tensiunii cu LED folosind Arduino sau lumină circulantă cu potențiometru
Acest proiect vă arată cum să construiți un voltmetru cu nivel de tensiune care folosește cinci LED-uri ca afișaj cu bare grafică, comandat în întregime de un Arduino și un singur potențiometru. Pe măsură ce rotiți butonul, Arduino citește tensiunea variabilă de pe un pin analogic și aprinde câte un LED pentru fiecare volt, astfel încât rândul de lumini „merge" literalmente în sus și în jos odată cu butonul. Este una dintre cele mai clare modalități de a înțelege intrarea analogică, deoarece puteți vedea conversia analog-digitală întâmplându-se în timp real ca o bară de lumină fizică.
Valoarea practică aici depășește cu mult un simplu spectacol de lumini. Odată ce înțelegeți cum să mapați o tensiune măsurată către un set de ieșiri, puteți reutiliza exact același model pentru instrumentație reală. De exemplu, ați putea construi:
- Un indicator de încărcare a bateriei care arată capacitatea rămasă a unei surse de alimentare de 12 V sau USB ca un rând de LED-uri.
- Un indicator de nivel pentru rezervorul de apă, unde un senzor cu flotor emite o tensiune proporțională cu adâncimea.
- Un afișaj cu bare pentru temperatură folosind un senzor analogic de temperatură precum LM35.
- Un metru de putere a semnalului sau de nivel audio pentru un receptor radio sau amplificator.
- O citire simplă a senzorului pentru orice traductor analogic de 0–5 V (presiune, lumină, poziție).
- O sondă de tensiune pentru testare pe banc care verifică șinele de alimentare fără un ecran de multimetru.
Deoarece pragurile sunt calculate ca procente din tensiunea plăcii, același cod funcționează pe plăci de 5 V precum Uno și Mega și pe plăci de 3,3 V cu doar o modificare de o singură linie.
Hardware și componente
Lista de piese este deliberat de minimă, iar totul este explicat în partea de început a videoclipului (în video la 01:54). Veți avea nevoie de:
- O placă Arduino (Uno, Nano sau Mega).
- Cinci LED-uri, ideal de o singură culoare pentru ca bara să se citească clar, deși culorile amestecate funcționează bine.
- Cinci rezistențe de limitare a curentului. Tutorialul folosește rezistențe de 1 kΩ, dar orice de la aproximativ 300 Ω la 1 kΩ va funcționa; valorile mai mari pur și simplu fac LED-urile mai slabe (în video la 05:33).
- Un potențiometru. Sunt demonstrate atât tipul cu buton rotativ, cât și tipul glisant (în video la 02:19).
- O placă de test și fire de conexiune.
O notă rapidă despre LED în sine, deoarece contează pentru cablare: un LED este o diodă, deci conduce doar într-o singură direcție. Partea plată a corpului din plastic, și piciorul mai scurt, este catodul (negativ). Piciorul mai lung este anodul (pozitiv). Tutorialul parcurge acest simbol și forma fizică în detaliu (în video la 02:39).
Valoarea rezistenței nu este arbitrară. Un LED are o cădere de tensiune de aproximativ 2 V, iar tipurile mici de 3 mm și 5 mm consumă aproximativ 10 mA. Cu o alimentare de 5 V, restul de 3 V trebuie să cadă pe rezistență, deci legea lui Ohm dă R = 3 V / 0,01 A = 300 Ω. Aceasta este valoarea pentru luminozitate maximă; folosirea a 1 kΩ este o alegere sigură, puțin mai slabă (în video la 04:41).
Ghid de cablare
Secțiunea de cablare a LED-urilor este identică cu proiectul anterior cu lumini mergătoare: fiecare anod de LED se conectează la propriul pin digital, iar fiecare catod trece printr-o rezistență către o șină comună de masă. În tutorial, LED-urile sunt conectate la pinii 7, 6, 5, 4 și 3 (în video la 43:04).
Potențiometrul este singura piesă nouă. Cei doi pini exteriori ai săi merg la cele două șine de alimentare — un pin exterior la masă și celălalt la 5 V (sau 3,3 V dacă măsurați un sistem de 3,3 V). Pinul din mijloc, numit cursor, este ieșirea și trebuie să se conecteze la pinul analogic A0 (în video la 43:30). Cursorul este cel care produce tensiunea variabilă: pe măsură ce rotiți butonul, cursorul alunecă de-a lungul unei piste rezistive și tensiunea pe care o prezintă se schimbă lin între cele două șine.
Un detaliu important: dacă scoateți potențiometrul în timp ce circuitul funcționează, pinul analogic rămâne în aer și LED-urile vor pâlpâi aleatoriu. Acest comportament este demonstrat în video (în video la 48:52) și este o reamintire bună că o intrare analogică are întotdeauna nevoie de o sursă de tensiune definită.
Explicația codului
Codul este scurt și cea mai mare parte este simplă, așa că această secțiune se concentrează doar pe părțile pe care veți dori să le modificați. Toate aceste setări se află în partea de sus a schiței.
Definițiile pinilor. Acestea îi spun Arduino-ului la ce pini sunt conectate LED-urile și potențiometrul. Dacă ați cablat LED-urile diferit, schimbați aceste numere pentru a se potrivi — ordinea contează, deoarece LED1 este pragul cel mai scăzut și LED5 cel mai ridicat.
const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;Tensiunea plăcii. Aceasta este cea mai importantă valoare de setat corect. Este referința față de care este calculat fiecare prag. Setați-o la 5.0 pentru un Uno sau Mega și la 3.3 pentru un Nano de 3.3 V sau o placă similară. Dacă o lăsați greșită, fiecare LED va comuta la tensiunea greșită (în video la 44:19).
float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V
Afișarea tensiunii pe serială. Setați aceasta la true pentru a afișa tensiunea măsurată în Serial Monitor la 9600 baud, ceea ce este extrem de util în timpul calibrării. Setați-o la false pentru a opri afișarea odată ce totul funcționează.
boolean showVoltage = true;//true or false to read voltage in serial monitor
Cum funcționează conversia. Convertorul analog-digital al Arduino returnează un număr de la 0 la 1023, deoarece este un convertor pe 10 biți (210 = 1024 pași). Codul scalează acel număr brut într-o tensiune reală folosind tensiunea plăcii ca referință. Aceasta este linia de reținut dacă veți trece vreodată la o placă pe 12 biți, cum ar fi Due, unde ați împărți la 4095 în schimb.
int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);
Logica pragurilor. În loc să codificați rigid tensiunile, fiecare pas este exprimat ca procent din tensiunea plăcii. La 95% sau mai mult, toate cele cinci LED-uri se aprind; peste 80% doar patru; și așa mai departe până la 20%, unde se aprinde un singur LED. Această abordare procentuală este ceea ce face schița portabilă între plăci de 5 V și 3.3 V fără a rescrie comparațiile.
if (voltage >= boardVoltage*0.95)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
Deoarece codul folosește else if, exact o ramură se execută la fiecare trecere prin buclă, astfel încât doar numărul corect de LED-uri este aprins simultan. Întârzierea de 50 ms la sfârșitul fiecărei bucle împiedică afișajul să pâlpâie.
Proiect live și demonstrație
Cu schița încărcată, deschideți Serial Monitor la 9600 baud și rotiți butonul încet. Tensiunea afișată și bara de LED-uri se urmăresc îndeaproape: la aproximativ 1 V un LED este aprins, la 2 V două sunt aprinse, și așa mai departe până la aproximativ 4.8 V unde toate cinci sunt aprinse (în video la 47:37). Citirile se încadrează în câteva sutimi de volt față de valoarea așteptată, ceea ce este excelent pentru un convertor pe 10 biți.
Dacă pașii par ușor neuniformi, de obicei sunt rezistențele, nu codul. Tutorialul notează că rezistențele standard cu film de carbon au o toleranță de 10%, în timp ce tipurile cu film metalic albastru sunt de obicei de 1% și oferă pași vizibil mai strânși și mai precisi (în video la 48:18).
De asemenea, puteți înlocui potențiometrul rotativ cu un potențiometru glisant și obțineți același comportament cu o senzație liniară, ceea ce este o opțiune bună dacă intenționați să montați metrul într-un panou (în video la 49:07).
Dacă doriți să deplasați lumina manual în loc de un buton, acest lucru este acoperit în Lecția 98-8: Lumină călătoare cu buton și LED-uri cu Arduino. Și dacă doriți pur și simplu ca LED-urile să călătorească pe propriul lor temporizator, vedeți Lecția 98-7: Lumină călătoare folosind Arduino și 5 LED-uri.
Proiecte conexe din acest video
- Lecția 98-1: Cum să aprindeți și să stingeți un LED cu Arduino
- Lecția 98-2: Cum să aprindeți și să stingeți un LED folosind un buton cu Arduino
- Lecția 98-3: Cum să aprindeți/stingeți un LED toggle folosind un buton cu Arduino
- Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității
- Lecția 98-5: Estomparea luminii când un buton este apăsat folosind Arduino
- Lecția 98-6: Joc LED balansoar cu Arduino
- Lecția 98-7: Lumină călătoare folosind Arduino și 5 LED-uri
- Lecția 98-8: Lumină călătoare cu buton și LED-uri cu Arduino
- Lecția 98-10: Semafoare cu Arduino
Capitole
- [00:00] Prezentarea generală a celor 10 proiecte cu LED-uri
- [02:29] Noțiuni de bază despre LED-uri, simboluri și calculul rezistenței
- [42:25] Introducere în metrul de nivel de tensiune cu LED-uri
- [43:04] Conectarea LED-urilor și a potențiometrului
- [43:54] Explicarea codului barei de tensiune
- [44:19] Setarea referinței de tensiune a plăcii
- [46:00] Logica pragurilor și pașii procentuali
- [47:14] Demonstrație: citirea tensiunii cu bara de LED-uri
- [48:18] Toleranța rezistențelor și precizia
- [49:07] Folosirea unui potențiometru glisant
This code has not been parsed yet. Please return to the admin panel to parse it.
Lucruri de care ai putea avea nevoie
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Resurse și referințe
-
DocumentațieDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Extern
-
Extern
-
Extern
Fișiere📁
Biblioteci Arduino (zip)
-
Codul sursă al kitului de învățare Smart Car 3-în-1 de la SunFounder
3in1-kit-main-v2.zip12.80 MB
Manualul utilizatorului
-
Manual de asamblare pentru SunFounder 3-in-1 Arduino Smart CarAcest document prezintă asamblarea pas cu pas a SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB