Cuprins:
Video: Măsurarea vitezei motorului utilizând Arduino: 6 pași
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Este dificil să măsoară rpm-ul motorului ??? Nu cred. Iată o soluție simplă.
Doar un singur senzor IR și Arduino din kitul dvs. pot face acest lucru.
În acest post voi oferi un tutorial simplu care explică cum se măsoară RPM-ul oricărui motor folosind senzorul IR și Arduino UNO / nano
Provizii:
1. Arduion uno (Amazon) / Arduion nano (Amazon)
2. Senzor IR (Amazon)
3. Motor DC orice (Amazon)
4. LCD 16 * 2 (Amazon)
Instrumente utilizate
1. Fier de lipit (Amazon)
2. Stripper de sârmă (Amazon)
Pasul 1: Pasul: 1 Asigurați-vă de starea de lucru a senzorilor și dispozitivelor
Ce este un senzor IR? Senzorul IR este un dispozitiv electronic, care emite lumină pentru a simți un obiect al împrejurimilor. Un senzor IR poate măsura căldura unui obiect, precum și detecta mișcarea. De obicei, în spectrul infraroșu, toate obiectele radiază o formă de radiație termică. Aceste tipuri de radiații sunt invizibile pentru ochii noștri, dar senzorul cu infraroșu poate detecta aceste radiații.
Un motor cu curent continuu (DC) este un tip de mașină electrică care transformă energia electrică în energie mecanică. Motoarele de curent continuu iau energie electrică prin curent continuu și transformă această energie în rotație mecanică.
Motoarele de curent continuu utilizează câmpuri magnetice care apar din curenții electrici generați, care alimentează mișcarea unui rotor fixat în arborele de ieșire. Cuplul și viteza de ieșire depind atât de intrarea electrică, cât și de proiectarea motorului.
Ce este Arduino?
Arduino este o platformă electronică open-source bazată pe hardware și software ușor de utilizat. Plăcile Arduino sunt capabile să citească intrările - lumină pe un senzor, un deget pe un buton sau un mesaj Twitter - și să-l transforme într-o ieșire - activând un motor, pornind un LED, publicând ceva online. Puteți spune tabloului dvs. ce trebuie să faceți trimițând un set de instrucțiuni microcontrolerului de pe placă. Pentru a face acest lucru, utilizați limbajul de programare Arduino (bazat pe cablare) și software-ul Arduino (IDE), bazat pe procesare.
Descărcați IDE ARDUINO
Pasul 2: Cum funcționează?
Deci, care este logica din spatele asta ??
Funcționează mult asemănător cu codificatorul. Codificatorii sunt greu de înțeles pentru începători. Tot ce trebuie să știți este că senzorul IR generează impuls și aflăm intervalul de timp dintre fiecare impuls.
În acest caz, senzorul IR va trimite un impuls către Arduino atunci când fasciculul IR este interceptat cu elice motoare. În mod normal, folosim elice cu două pale, dar am folosit elice cu trei pale așa cum se arată în figură. în funcție de numărul de pale de elice, trebuie să modificăm unele valori în timp ce calculăm RPM.
să considerăm că avem o elice care are două pale. Pentru fiecare motor de rotație, lama va intercepta de două ori raza IR. Astfel, senzorul IR va produce impulsuri atunci când interceptează vreodată.
Acum trebuie să scriem un program care ar putea măsura numărul de impulsuri produse de senzorul IR la un anumit interval de timp.
Există mai multe modalități de a rezolva o problemă, dar trebuie să alegem care este cea mai bună din aceste coduri. Am măsurat durata dintre întreruperi (senzor IR). Am folosit funcțiile micros () pentru a măsura durata impulsurilor în micro secunde.
puteți utiliza această formulă pentru a măsura RPMRPM = ((1 / durata) * 1000 * 1000 * 60) / lame
unde, durata - intervalul de timp dintre impulsuri.
60 - secunde până la minute
1000 - moară în sec
1000 - micro la moară
lame - nu aripi în elice.
Afișaj LCD - Arduino actualizează comenzile și registrele de date ale afișajului LCD. Care afișează caracterele ASCII pe ecranul LCD.
Pasul 3: Programați-vă Arduino utilizând Arduino IDE
#include
LiquidCrystal lcd (9, 8, 7, 6, 5, 4); const int IR_IN = 2; // senzor IR INPUT nesemnat lung prevmicros; // Pentru a stoca timpul nesemnat de lungă durată; // Pentru a stoca diferența de timp nesemnat lcdrefresh lung; // Pentru a stoca timpul pentru ca LCD să reîmprospăteze rpm; // valoare RPM boolean currentstate; // Starea actuală a scanării intrărilor IR prevstate boolean; // Starea senzorului IR în configurarea anulară a scanării anterioare () {pinMode (IR_IN, INPUT); lcd.inceput (16, 2); prevmicros = 0; prevstate = LOW; } void loop () {//////////////////////////////////////////////// /////////////////////////////////////// RPM Measurement currentstate = digitalRead (IR_IN); // Citiți starea senzorului IR if (prevstate! = Currentstate) // Dacă există o modificare a intrării {if (currentstate == LOW) // Dacă intrarea se schimbă doar de la HIGH la LOW {durata = (micros () - prevmicros); // Diferența de timp între revoluția în rotație microsecundă = ((60000000 / durata) / 3); // rpm = (1 / timp milis) * 1000 * 1000 * 60; prevmicros = micros (); // memorează timpul pentru calculul revoluției nectelor}} prevstate = currentstate; // stocați aceste date de scanare (scanare anterioară) pentru următoarea scanare /////////////////////////////////////// ////////////////////////////////////////////////// Afișaj LCD dacă ((milis () - lcdrefresh)> = 100) {lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Viteza motorului"); lcd.setCursor (0, 1); lcd.print ("RPM ="); imprimare lcd (rpm); lcdrefresh = millis (); }}
Pasul 4: Simulare folosind Proteus
Acest proiect a funcționat perfect când am încercat să simulez acest lucru cu ajutorul proteus.
În loc să folosesc senzorul IR, am folosit un generator de impulsuri DC care va simula impulsul IR similar cu cel generat atunci când razele IR lovesc palele elicelor.
trebuie să faceți modificări programului dvs. în funcție de senzorul pe care îl utilizați
Senzorul IR cu LM358 trebuie să utilizeze această comandă.
if (currentstate == HIGH) // Dacă intrarea se schimbă doar de la LOW la HIGH
Senzorul IR cu LM359 trebuie să utilizeze această comandă.
if (currentstate == LOW) // Dacă intrarea se schimbă doar de la HIGH la LOW
Pasul 5: Executarea hardware-ului
Pentru schemă utilizați imaginile de simulare sau consultați codurile programului și efectuați conexiunile în consecință. Încărcați codul programului pe Arduino și măsurați RPM-ul oricărui motor. Rămâneți la curent cu următoarea mea postare și urmăriți canalul meu de pe YouTube.