Sadržaj:
- Korak 1: Odaberite signalnu žicu
- Korak 2: Produžite žicu na Arduino ploču
- Korak 3: Analiza signala
- Korak 4: Kodirajte svoju analizu signala
- Korak 5: Identifikujte filter
- Korak 6: Filtriranje: 1. dio
- Korak 7: Filtriranje: 2. dio
- Korak 8: Filtriranje: 3. dio
- Korak 9: Filtriranje: 4. dio
Video: Koristite Arduino za prikaz broja okretaja motora: 10 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
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
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
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
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
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
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
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
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
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
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:
Arduino limitator broja okretaja za benzinske motore: 5 koraka
Arduino limitator broja okretaja motora na benzinski motor: Youtube demonstracija Ovo služi za zamjenu regulatora za ograničavanje brzine benzinskog motora. Ovaj limitator broja okretaja se može prebaciti na 3 različite postavke u hodu. Instalirao sam ovo na jednocilindrični, Briggs i Stratton motor i koristio Ardu
Ograničavanje broja okretaja Bacanje plamena: 6 koraka
Ograničenje broja okretaja Bacanje plamena: Hej momci i dobrodošli U današnjem projektu ćemo izgraditi ograničenje broja okretaja od nule
Provjera broja okretaja za mini motor DC: 11 koraka (sa slikama)
Kontrola broja okretaja za mini motor Dc: Obrtaj u minuti, ukratko je brzina rotacije izražena u okretajima u minuti. alati za mjerenje broja okretaja obično koriste tahometar. Prije prošle godine pronašao sam zanimljiv projekt koji je napravio electro18, i to je moja inspiracija, bio je ljut
Jednostavan mjerač broja okretaja pomoću jeftinih modula: 8 koraka
Jednostavan mjerač broja okretaja pomoću jeftinih modula: Ovo je vrlo zanimljiv projekt i ulaže mnogo manje napora, čini vrlo jednostavan mjerač broja okretaja (u mom slučaju okruglo po sekundi)
Autonomna kontrola broja okretaja motora pomoću sistema povratnih informacija sa IR tahometra: 5 koraka (sa slikama)
Autonomna kontrola broja okretaja motora pomoću sistema povratnih informacija sa IR tahometra: Uvijek postoji potreba za automatizacijom procesa, bio on jednostavan/monstruozan. Ideju da napravim ovaj projekat dobio sam iz jednostavnog izazova s kojim sam se suočio dok sam nalazio metode zalijevanja/navodnjavanja našeg malog komada zemlje. Problem nedostatka trenutne vodovodne linije