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: Identificirajte filtar
- 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 promjena: 2024-01-30 09:35
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
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
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
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
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
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
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
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
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
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:
Arduino limitator broja okretaja za plinski motor: 5 koraka
Arduino limitator broja okretaja za benzinske motore: Youtube demonstracijaOvo je za zamjenu regulatora za ograničavanje brzine benzinskog motora. Ovaj se limitator broja okretaja u hodu može prebaciti na 3 različite postavke. Instalirao sam ovo na jedan cilindar, Briggs i Stratton motor i koristio Ardu
Ograničenje 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 lud
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 sustava povratnih informacija s IR tahometra: 5 koraka (sa slikama)
Autonomna kontrola broja okretaja motora pomoću sustava povratnih informacija s tahometra zasnovanog na infracrvenom svjetlu: Uvijek postoji potreba za automatizacijom procesa, bio on jednostavan/monstruozan. Ideju da napravim ovaj projekt 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