Sadržaj:

Koristite Arduino za prikaz broja okretaja motora: 10 koraka (sa slikama)
Koristite Arduino za prikaz broja okretaja motora: 10 koraka (sa slikama)

Video: Koristite Arduino za prikaz broja okretaja motora: 10 koraka (sa slikama)

Video: Koristite Arduino za prikaz broja okretaja motora: 10 koraka (sa slikama)
Video: Домашняя автоматизация: изменение направления вращения двигателя постоянного тока с помощью 2 реле и Arduino - Robojax 2024, Studeni
Anonim
Koristite Arduino za prikaz broja okretaja motora
Koristite Arduino za prikaz broja okretaja motora
Koristite Arduino za prikaz broja okretaja motora
Koristite Arduino za prikaz broja okretaja motora
Koristite Arduino za prikaz broja okretaja motora
Koristite Arduino za prikaz broja okretaja motora

Ovaj će vodič opisati kako sam koristio Arduino UNO R3, 16x2 LCD zaslon s I2C i LED traku koja će se koristiti kao mjerač brzine motora i svjetla za promjenu stupnjeva prijenosa u mojem automobilu s gusjenicama Acura Integra. Napisano je u smislu nekoga s nekim iskustvom ili izloženošću Arduino softveru ili kodiranju općenito, matematičkom softveru MATLAB te stvaranju ili mijenjanju električnih krugova. U budućnosti bi se to moglo izmijeniti kako bi bilo lakše razumljivo za nekoga tko nema ili nema iskustva s ovim temama.

Korak 1: Odaberite signalnu žicu

Odaberite signalnu žicu
Odaberite signalnu žicu

Morat ćete dobiti signal koji odgovara brzini motora. Moguće je dodati sustav koji mjeri broj okretaja motora, ali je daleko praktičnije uključiti postojeću žicu koja nosi podatke o broju okretaja motora. Jedan automobil može imati više izvora za to, a može varirati čak i iz godine u godinu na jednom modelu vozila. Radi ovog vodiča koristit ću se primjerom svog automobila, staze modificirane 2000 Acura Integra LS. Otkrio sam da na mom motoru (B18B1 s OBD2) postoji neiskorišteni napon visok 12V i pada na 0V nakon potpunog okretaja.

Stvari koje će vam pomoći identificirati potencijalni signal brzine motora:

  • Shema ožičenja za vaše vozilo
  • Pretražujući vaše vozilo na forumima uključujući signale motora/ECU -a
  • Ljubazni mehaničar ili ljubitelj automobila

Korak 2: Produžite žicu na Arduino ploču

Produžite žicu na Arduino ploču
Produžite žicu na Arduino ploču
Produžite žicu na Arduino ploču
Produžite žicu na Arduino ploču

Nakon što odaberete odgovarajući signal, morat ćete ga proširiti svugdje gdje postavljate Arduino ploču. Odlučio sam svoju postaviti u vozilo gdje je nekad bio radio, pa sam novu žicu provukao iz motora, kroz gumenu uložak u zidu od požara, i pravo u radijsko područje. Budući da već postoji velika količina uputstava o skidanju, lemljenju i zaštiti ožičenja, neću objašnjavati ovaj postupak.

Korak 3: Analiza signala

Analiza signala
Analiza signala

Tu se stvari mogu zakomplicirati. Opće razumijevanje analize signala i kontrola pomoći će vam na dug put, ali je izvedivo s malo znanja.

Odabrana signalna žica najvjerojatnije neće ispljunuti točnu vrijednost broja okretaja motora. Morat će se oblikovati i izmijeniti tako da daje točan broj okretaja motora koji želite. S obzirom na činjenicu da svaki odabrani automobil i signalna žica mogu biti različiti, od sada ću objasniti kako sam koristio signal položaja iz distributera na mojoj Integra.

Moj signal je obično 12V i pada na 0V nakon dovršetka jedne pune rotacije. Ako znate vrijeme za dovršetak jedne potpune rotacije ili jednog punog ciklusa, to se lako može prevesti u okretaje/min pomoću nekih osnovnih pojmova.

1 / (sekunde po ciklusu) = ciklusi u sekundi ili Hz

Obrtaji u minuti = Hz * 60

Korak 4: Kodirajte svoju analizu signala

Kodirajte svoju analizu signala
Kodirajte svoju analizu signala

Ova metoda zahtijeva dobivanje vremena potrebnog za ulazni signal da završi jedan cijeli ciklus. Srećom, Arduino IDE softver ima naredbu koja radi upravo to, PulseIn.

Ova naredba će čekati da signal prijeđe prag, početi brojati i prestati brojati kad se opet prijeđe prag. Postoje neke pojedinosti koje treba uzeti u obzir prilikom korištenja naredbe, pa ću ovdje uključiti vezu do informacija o PulseInu:

PulseIn će vratiti vrijednost u mikrosekundama, a kako bi matematika bila jednostavna, to bi trebalo odmah pretvoriti u normalne sekunde. Slijedeći matematiku u prethodnom koraku, ovo se vrijeme može izjednačiti izravno u RPM.

Napomena: nakon pokušaja i pogreške otkrio sam da distributer dovršava dvije rotacije za svaku pojedinačnu rotaciju radilice motora, pa sam jednostavno podijelio svoj odgovor na 2 da to uzmem u obzir.

Korak 5: Identificirajte filtar

Identificirajte filtar
Identificirajte filtar

Ako imate sreće, vaš signal neće imati "buku" (fluktuacije), a broj okretaja motora bit će točan. U mom slučaju, iz distributera je dolazila velika buka koja je često davala napone daleko od očekivanih. To se pretvara u vrlo lažna očitanja stvarne brzine vrtnje motora. Taj će se šum morati filtrirati.

Nakon neke analize signala, gotovo sva buka dolazila je na frekvencijama (Hz) daleko većim od onoga što je sam motor izlazio (što vrijedi za većinu stvarnih dinamičkih sustava). To znači da je niskopropusni filter idealan kandidat za to.

Niskopropusni filtar omogućuje prolaz niskim frekvencijama (željeno) i prigušuje visoke frekvencije (neželjeno).

Korak 6: Filtriranje: 1. dio

Filtriranje: 1. dio
Filtriranje: 1. dio
Filtriranje: 1. dio
Filtriranje: 1. dio
Filtriranje: 1. dio
Filtriranje: 1. dio

Dizajn filtra može se izvršiti ručno, no korištenje MATLAB -a to će značajno ubrzati ako imate pristup softveru.

Niskopropusni filtar može se izjednačiti s prijenosnom funkcijom (ili razlomom) u Laplaceovoj domeni (frekvencijsko područje). Ulazna frekvencija pomnožit će se s ovim razlomom, a izlazni je filtrirani signal koji ima samo informacije koje želite koristiti.

Jedina varijabla u funkciji je tau. Tau je jednak 1 / Omega, gdje je Omega granična frekvencija koju želite (mora biti u radijanima u sekundi). Granična frekvencija granica je na kojoj će se frekvencije veće od nje ukloniti, a frekvencije niže od nje zadržati.

Postavio sam graničnu frekvenciju na RPM koji moj motor nikada neće doseći (990 RPM ili 165 Hz). Grafikoni FFT -a otprilike prikazuju frekvencije koje je prenosio moj sirovi signal i frekvencije koje su izašle iz filtra.

Korak 7: Filtriranje: 2. dio

Filtriranje: 2. dio
Filtriranje: 2. dio
Filtriranje: 2. dio
Filtriranje: 2. dio

Ovdje se MATLAB ponovno koristio radi vremena. Granična frekvencija je definirana, a zatim se prikazuje rezultirajuća prijenosna funkcija. Imajte na umu da se ovaj razlomak odnosi samo na domenu Laplace i ne može se izravno koristiti na vremenski zasnovanom mikro kontroleru poput Arduina UNO R3.

Korak 8: Filtriranje: 3. dio

Filtriranje: 3. dio
Filtriranje: 3. dio
Filtriranje: 3. dio
Filtriranje: 3. dio

MATLAB ima naredbu koja će pretvoriti kontinuiranu funkciju (frekvencijsko područje) u diskretnu funkciju (vremensko područje). Izlaz ove naredbe pružit će jednadžbu koja se može lako uključiti u Arduino IDE kod.

Korak 9: Filtriranje: 4. dio

Filtriranje: 4. dio
Filtriranje: 4. dio
Filtriranje: 4. dio
Filtriranje: 4. dio

U Arduino skicu uključite varijable u i y prije postavljanja. Naredba float jednostavno definira kako će varijabla pohranjivati podatke (stvari poput maksimalne vrijednosti, decimala, itd …), a veza na više informacija o tome bit će navedena ovdje: https://www.arduino.cc/reference/en/language /varijacija …

U petlju u kojoj se događa pretvorba sirovog signala u broj okretaja motora uključite varijablu u i jednadžbu višestrukih. Postoji više načina za korištenje ovoga, ali varijablu u treba postaviti jednakom sirovom ulaznom signalu koji se mjeri, a varijabla y će biti filtrirana vrijednost.

Preporučeni: