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, Novembar
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 vodič će opisati kako sam koristio Arduino UNO R3, 16x2 LCD ekran sa I2C i LED traku koja će se koristiti kao mjerač brzine motora i svjetlo za promjenu stepena prenosa u mom Acura Integra vozilu. Napisano je u terminima 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 sistem koji mjeri brzinu motora, ali je daleko praktičnije priključiti se na postojeću žicu koja prenosi informacije o brzini 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 primjer svog automobila, gusjenice 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žujete vaše vozilo na forumima sa signalima 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 na mjesto gdje postavljate Arduino ploču. Odlučio sam svoju postaviti u vozilo gdje je radio bio, pa sam novu žicu provukao iz motora, kroz gumenu šipku u zidu od požara, i pravo do radio područja. Budući da već postoji velika količina uputstava o skidanju, lemljenju i zaštiti ožičenja, neću objašnjavati ovaj proces.

Korak 3: Analiza signala

Analiza signala
Analiza signala

Tu se stvari mogu zakomplicirati. Općenito 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 tačnu vrijednost brzine motora. Morat će se oblikovati i modificirati 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 razdjelnika na mojoj Integra.

Moj signal je obično 12V i pada na 0V pri završetku jedne potpune rotacije. Ako znate vrijeme za završetak jedne potpune rotacije ili jednog punog ciklusa, to se lako može prevesti u okretaje/min koristeći neke osnovne koncepte.

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 pređe prag, početi brojati i prestati brojati kada se prag ponovo pređe. Postoje neki detalji 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, ovo bi trebalo odmah pretvoriti u normalne sekunde. Prateći matematiku u prethodnom koraku, ovo vrijeme se može izjednačiti izravno u RPM.

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

Korak 5: Identifikujte filter

Identifikujte filter
Identifikujte filter

Ako imate sreće, vaš signal neće imati "buku" (fluktuacije), a brzina motora će vam biti točna. U mom slučaju, iz distributera je dolazila velika buka koja je često davala napone daleko od očekivanih. Ovo se pretvara u vrlo lažna očitanja stvarne brzine motora. Ovaj šum će morati biti filtriran.

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 sistema). To znači da je niskopropusni filter idealan kandidat za to.

Niskopropusni filter omogućava 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

Dizajniranje filtera može se obaviti ručno, međutim korištenje MATLAB -a to će značajno ubrzati ako imate pristup softveru.

Niskopropusni filter može se izjednačiti s prijenosnom funkcijom (ili razlomom) u Laplaceovoj domeni (frekvencijsko područje). Ulazna frekvencija će se pomnožiti s ovim razlomom, a izlaz 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 je granica gdje će se frekvencije veće od nje ukloniti, a frekvencije niže od nje će se 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 filtera.

Korak 7: Filtriranje: 2. dio

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

Ovdje se MATLAB ponovo 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 Laplace domenu 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 lako može ugraditi 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 link na više informacija o tome bit će dostupan ovdje: https://www.arduino.cc/reference/en/language /varia…

U petlju u kojoj se odvija pretvaranje iz sirovog signala u broj okretaja motora, uključite varijablu u i jednačinu y više. Postoji više načina da se to upotrijebi, ali varijablu u treba postaviti jednakom sirovom ulaznom signalu koji se mjeri, a varijabla y će biti filtrirana vrijednost.

Preporučuje se: