Kazalo:

Uporabite Arduino za prikaz RPM motorja: 10 korakov (s slikami)
Uporabite Arduino za prikaz RPM motorja: 10 korakov (s slikami)

Video: Uporabite Arduino za prikaz RPM motorja: 10 korakov (s slikami)

Video: Uporabite Arduino za prikaz RPM motorja: 10 korakov (s slikami)
Video: Урок 102: Использование двойного драйвера двигателя постоянного тока ZK-5AD 4A TA6586 4A 14V Лучший драйвер двигателя (новый продукт) 2024, November
Anonim
Uporabite Arduino za prikaz RPM motorja
Uporabite Arduino za prikaz RPM motorja
Uporabite Arduino za prikaz RPM motorja
Uporabite Arduino za prikaz RPM motorja
Uporabite Arduino za prikaz RPM motorja
Uporabite Arduino za prikaz RPM motorja

V tem priročniku je opisano, kako sem uporabil Arduino UNO R3, 16x2 LCD zaslon z I2C in LED trak, ki se bo uporabljal kot merilnik hitrosti motorja in premikanje luči v mojem tekalnem vozilu Acura Integra. Napisano je v smislu nekoga z nekaj izkušnjami ali izpostavljenostjo programski opremi Arduino ali kodiranju na splošno, matematični programski opremi MATLAB ter ustvarjanju ali spreminjanju električnih vezij. V prihodnosti bo to mogoče popraviti, da bo lažje razumljivo za nekoga, ki nima dovolj izkušenj s temi temami.

1. korak: Izberite signalno žico

Izberite signalno žico
Izberite signalno žico

Morali boste dobiti signal, ki ustreza hitrosti motorja. Možno je dodati sistem, ki meri hitrost motorja, vendar je veliko bolj praktično uporabiti obstoječo žico, ki nosi podatke o hitrosti motorja. En avtomobil ima lahko za to več virov in se lahko od leta do leta močno razlikuje pri posameznem modelu vozila. Zaradi te vadnice bom uporabil primer svojega avtomobila, skladbe spremenjene 2000 Acura Integra LS. Ugotovil sem, da je na mojem motorju (B18B1 z OBD2) neizkoriščena napetost, ki je visoka 12 V in po popolnem obratu pade na 0 V.

Stvari, ki bodo pomagale prepoznati potencialni signal hitrosti motorja:

  • Shema ožičenja za vaše vozilo
  • Iskanje vašega vozila po forumih, ki vključuje signale motorja/ECU
  • Prijazen mehanik ali avtomobilski navdušenec

Korak: Podaljšajte žico na ploščo Arduino

Podaljšajte žico na ploščo Arduino
Podaljšajte žico na ploščo Arduino
Podaljšajte žico na ploščo Arduino
Podaljšajte žico na ploščo Arduino

Ko izberete ustrezen signal, ga boste morali razširiti povsod, kamor nameščate ploščo Arduino. Odločil sem se, da bom svojega postavil v vozilo, kjer je bil nekoč radio, zato sem novo žico speljal iz motorja skozi gumijasto vtičnico v požarni steni in naravnost v radijsko območje. Ker že obstaja veliko navodil za odstranjevanje, spajkanje in zaščito ožičenja, tega postopka ne bom razlagal.

3. korak: Analiza signala

Analiza signala
Analiza signala

Tu se lahko stvari zapletejo. Splošno razumevanje analize signala in kontrol vam bo pomagalo na dolgi poti, vendar je to z malo znanja izvedljivo.

Izbrana signalna žica najverjetneje ne bo izpljunila natančne vrednosti števila vrtljajev motorja. Oblikovati ga bo treba in spremeniti tako, da bo dalo natančno število vrtljajev motorja, ki ga želite. Ker je lahko vsak izbrani avtomobil in signalna žica drugačen, bom od zdaj naprej razložil, kako sem uporabil pozicijski signal iz razdelilnika na svoji Integra.

Moj signal je običajno 12V in pade na 0V, ko zaključim eno polno rotacijo. Če poznate čas za dokončanje ene popolne rotacije ali enega celotnega cikla, lahko to preprosto prevedete v vrtljaje/min z uporabo nekaterih osnovnih konceptov.

1 / (sekunde na cikel) = ciklov na sekundo ali Hz

Obratov na minuto = Hz * 60

4. korak: Kodirajte analizo signala

Kodirajte svojo analizo signala
Kodirajte svojo analizo signala

Ta metoda zahteva čas, potreben za vhodni signal za dokončanje enega celotnega cikla. Na srečo ima programska oprema Arduino IDE ukaz, ki naredi točno to, PulseIn.

Ta ukaz bo počakal, da signal prestopi prag, začel šteti in prenehal šteti, ko bo prag ponovno prestopljen. Pri uporabi ukaza je treba upoštevati nekatere podrobnosti, zato bom tukaj vključil povezavo do informacij o PulseInu:

PulseIn bo vrnil vrednost v mikrosekundah, da bi bila matematika preprosta, jo je treba takoj pretvoriti v običajne sekunde. Po matematiki v prejšnjem koraku lahko to časovno obdobje enačimo neposredno z vrtljaji v minuti.

Opomba: po poskusih in napakah sem odkril, da distributer opravi dve rotaciji za vsako posamezno vrtenje ročične gredi motorja, zato sem svoj odgovor preprosto razdelil na 2.

5. korak: Prepoznajte filter

Določite filter
Določite filter

Če imate srečo, vaš signal ne bo imel "hrupa" (nihanja) in hitrost motorja bo natančna. V mojem primeru je iz distributerja prihajalo veliko hrupa, ki je pogosto dajal napetosti daleč od pričakovanih. To se spremeni v zelo napačne odčitke dejanske hitrosti motorja. Ta hrup bo treba filtrirati.

Po nekaj analizi signalov je skoraj ves hrup prihajal pri frekvencah (Hz), ki so bile precej višje od tistega, kar je oddajal sam motor (kar velja za večino resničnih dinamičnih sistemov). To pomeni, da je nizkoprepustni filter idealen kandidat za to.

Nizkoprepustni filter omogoča prehod nizkih frekvenc (želeno) in zmanjšuje visoke frekvence (nezaželeno).

6. korak: Filtriranje: 1. del

Filtriranje: 1. del
Filtriranje: 1. del
Filtriranje: 1. del
Filtriranje: 1. del
Filtriranje: 1. del
Filtriranje: 1. del

Oblikovanje filtra je mogoče ročno, vendar bo uporaba MATLAB to znatno pospešila, če imate dostop do programske opreme.

Nizkoprepustni filter lahko enačimo s prenosno funkcijo (ali ulomkom) v Laplaceovi domeni (frekvenčna domena). Vhodna frekvenca se pomnoži s tem ulomkom, izhod pa je filtriran signal, ki vsebuje samo informacije, ki jih želite uporabiti.

Edina spremenljivka v funkciji je tau. Tau je enak 1 / Omega, kjer je Omega granična frekvenca, ki jo želite (mora biti v radianih na sekundo). Mejna frekvenca je meja, pri kateri se odstranijo frekvence, ki so višje od nje, in frekvence, nižje od nje.

Mejno frekvenco sem nastavil na RPM, ki ga moj motor nikoli ne bo dosegel (990 RPM ali 165 Hz). Grafi FFT približno kažejo, katere frekvence je prenašal moj surovi signal in frekvence, ki so prišle iz filtra.

7. korak: Filtriranje: 2. del

Filtriranje: 2. del
Filtriranje: 2. del
Filtriranje: 2. del
Filtriranje: 2. del

Tu je bil MATLAB znova uporabljen zaradi časa. Določena je mejna frekvenca, nato pa se prikaže nastala prenosna funkcija. Upoštevajte, da se ta ulomek nanaša samo na domeno Laplace in ga ni mogoče neposredno uporabiti na časovno zasnovanem mikro krmilniku, kot je Arduino UNO R3.

8. korak: Filtriranje: 3. del

Filtriranje: 3. del
Filtriranje: 3. del
Filtriranje: 3. del
Filtriranje: 3. del

MATLAB ima ukaz, ki pretvori neprekinjeno funkcijo (frekvenčno področje) v diskretno funkcijo (časovno področje). Izhod tega ukaza bo zagotovil enačbo, ki jo je mogoče enostavno vključiti v kodo Arduino IDE.

9. korak: Filtriranje: 4. del

Filtriranje: 4. del
Filtriranje: 4. del
Filtriranje: 4. del
Filtriranje: 4. del

V skico Arduino pred nastavitvijo vključite spremenljivki u in y. Ukaz float preprosto določa, kako bo spremenljivka shranjevala podatke (stvari, kot so največja vrednost, decimalke itd.), Povezava do več informacij o tem pa bo na voljo tukaj: https://www.arduino.cc/reference/en/language /varia…

V zanko, kjer poteka pretvorba iz surovega signala v število vrtljajev motorja, vključite spremenljivko u in enačbo večkratnika y. Obstaja več načinov, kako to uporabiti, vendar je treba spremenljivko u nastaviti enako neobdelanemu vhodnemu signalu, ki se meri, spremenljivka y pa bo filtrirana vrednost.

10. korak: Prikažite filtrirano število vrtljajev motorja

Priporočena: