Obsah:

Použite Arduino na zobrazenie otáčok motora: 10 krokov (s obrázkami)
Použite Arduino na zobrazenie otáčok motora: 10 krokov (s obrázkami)

Video: Použite Arduino na zobrazenie otáčok motora: 10 krokov (s obrázkami)

Video: Použite Arduino na zobrazenie otáčok motora: 10 krokov (s obrázkami)
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, December
Anonim
Na zobrazenie otáčok motora použite Arduino
Na zobrazenie otáčok motora použite Arduino
Na zobrazenie otáčok motora použite Arduino
Na zobrazenie otáčok motora použite Arduino
Na zobrazenie otáčok motora použite Arduino
Na zobrazenie otáčok motora použite Arduino

Táto príručka načrtne, ako som v mojom dráhovom automobile Acura Integra používal Arduino UNO R3, LCD displej 16x2 s I2C a LED pásik ako ukazovateľ otáčok motora a svetlo radenia. Je napísaný v zmysle niekoho, kto má skúsenosti alebo má skúsenosti so softvérom Arduino alebo s kódovaním všeobecne, matematickým softvérom MATLAB a s vytváraním alebo úpravou elektrických obvodov. V budúcnosti to môže byť zrevidované, aby bolo zrozumiteľnejšie pre niekoho, kto má s týmito témami malé až žiadne skúsenosti.

Krok 1: Vyberte signál Sigal

Vyberte si drôt Sigal
Vyberte si drôt Sigal

Budete potrebovať signál, ktorý zodpovedá otáčkam motora. Je možné pridať systém, ktorý meria otáčky motora, ale je oveľa praktickejšie využiť existujúci vodič, ktorý prenáša informácie o otáčkach motora. Jedno auto na to môže mať viac zdrojov a môže sa veľmi líšiť aj medziročne na jednom modeli vozidla. V záujme tohto tutoriálu použijem príklad svojho auta, upravenú trať 2000 Acura Integra LS. Na svojom motore (B18B1 s OBD2) som našiel nevyužité napätie, ktoré je vysoké 12 V a po úplnom otočení klesne na 0 V.

Veci, ktoré pomôžu identifikovať potenciálny signál otáčok motora:

  • Schéma zapojenia vášho vozidla
  • Hľadanie fór pre vaše vozidlo so signálmi motora/ECU
  • Priateľský mechanik alebo automobilový nadšenec

Krok 2: Rozšírte drôt na dosku Arduino

Predĺžte kábel na dosku Arduino
Predĺžte kábel na dosku Arduino
Predĺžte kábel na dosku Arduino
Predĺžte kábel na dosku Arduino

Keď si vyberiete vhodný signál, budete ho musieť rozšíriť kdekoľvek, kde umiestnite dosku Arduino. Rozhodol som sa umiestniť ten svoj do vozidla, kde bývalo rádio, a tak som previedol nový drôt od motora cez gumovú priechodku v protipožiarnej stene a priamo do priestoru rádia. Pretože už existuje veľké množstvo návodov na odstraňovanie, spájkovanie a ochranu vodičov, tento proces nebudem vysvetľovať.

Krok 3: Analýza signálu

Analýza signálu
Analýza signálu

Tu sa môžu veci skomplikovať. Všeobecné porozumenie analýze signálu a ovládacím prvkom vám pomôže na dlhej ceste, ale dá sa to zvládnuť s malými znalosťami.

Zvolený signálny drôt pravdepodobne nevypľuje presnú hodnotu otáčok motora. Bude potrebné ho tvarovať a upravovať tak, aby poskytoval presný počet otáčok motora, ktoré chcete. Vzhľadom na to, že každé iné auto a zvolený signálny vodič sa môžu líšiť, od tohto bodu vysvetlím, ako som na svojom Integre použil signál polohy od distribútora.

Môj signál je normálne 12V a po dokončení jedného úplného otočenia klesne na 0V. Ak poznáte čas na dokončenie jednej úplnej rotácie alebo jedného celého cyklu, dá sa to ľahko preložiť do otáčok za minútu pomocou niektorých základných konceptov.

1 / (sekundy na cyklus) = cykly za sekundu alebo Hz

Otáčky za minútu = Hz * 60

Krok 4: Kódujte svoju analýzu signálu

Kódujte svoju analýzu signálu
Kódujte svoju analýzu signálu

Táto metóda vyžaduje získanie času potrebného na to, aby vstupný signál dokončil jeden celý cyklus. Našťastie softvér Arduino IDE má príkaz, ktorý to robí presne, PulseIn.

Tento príkaz počká, kým signál prekročí prah, začne počítať a zastaví počítanie, keď sa prah opäť prekročí. Pri použití príkazu je potrebné poznamenať niekoľko podrobností, preto sem vložím odkaz na informácie o PulseIn:

PulseIn vráti hodnotu v mikrosekundách a aby bola matematika jednoduchá, mala by byť okamžite prevedená na bežné sekundy. V nadväznosti na matematiku v predchádzajúcom kroku je možné toto časové obdobie rovnať RPM.

Poznámka: po pokusoch a omyloch som zistil, že distribútor dokončí dve otáčky pre každé jedno otočenie kľukového hriadeľa motora, a tak som svoju odpoveď jednoducho rozdelil na 2.

Krok 5: Identifikujte filter

Identifikujte filter
Identifikujte filter

Ak budete mať šťastie, váš signál bude bez „šumu“(kolísania) a otáčky motora budú presné. V mojom prípade od distribútora prichádzal veľký hluk, ktorý často dával napätie ďaleko od toho, čo sa očakáva. To sa zmení na veľmi falošné hodnoty skutočných otáčok motora. Tento hluk bude potrebné odfiltrovať.

Po určitej analýze signálu prišiel takmer všetok hluk pri frekvenciách (Hz) oveľa vyšších, než aké produkoval samotný motor (čo platí pre väčšinu skutočných dynamických systémov). To znamená, že dolnopriepustný filter je ideálnym kandidátom, ako sa o to postarať.

Dolnopriepustný filter umožňuje prechod nízkych frekvencií (požadovaný) a tlmí vysoké frekvencie (nežiaduce).

Krok 6: Filtrovanie: časť 1

Filtrovanie: časť 1
Filtrovanie: časť 1
Filtrovanie: časť 1
Filtrovanie: časť 1
Filtrovanie: časť 1
Filtrovanie: časť 1

Navrhovanie filtra je možné vykonať ručne, použitie MATLABu to však výrazne urýchli, ak máte prístup k softvéru.

Dolnopriepustný filter možno prirovnať k prenosovej funkcii (alebo zlomku) v Laplaceovej doméne (frekvenčná doména). Vstupná frekvencia sa vynásobí týmto zlomkom a výstupom je filtrovaný signál, ktorý obsahuje iba informácie, ktoré chcete použiť.

Jedinou premennou vo funkcii je tau. Tau sa rovná 1 / Omega, kde Omega je požadovaná medzná frekvencia (musí byť v radiánoch za sekundu). Medzná frekvencia je limit, pri ktorom budú odstránené frekvencie vyššie, ako sú, a frekvencie nižšie, ako budú zachované.

Nastavil som medznú frekvenciu na otáčky, ktoré môj motor nikdy nedosiahne (990 ot / min alebo 165 Hz). Grafy FFT zhruba ukazujú, aké frekvencie niesol môj surový signál a frekvencie, ktoré vychádzali z filtra.

Krok 7: Filtrovanie: časť 2

Filtrovanie: časť 2
Filtrovanie: časť 2
Filtrovanie: časť 2
Filtrovanie: časť 2

Tu bol MATLAB kvôli času opäť použitý. Definuje sa medzná frekvencia a z nej sa zobrazí výsledná prenosová funkcia. Majte na pamäti, že táto frakcia sa týka iba domény Laplace a nemôže byť priamo použitá na časovo riadenom mikrokontroléri, ako je Arduino UNO R3.

Krok 8: Filtrovanie: časť 3

Filtrovanie: časť 3
Filtrovanie: časť 3
Filtrovanie: časť 3
Filtrovanie: časť 3

MATLAB má príkaz, ktorý prevedie spojitú funkciu (frekvenčná doména) na diskrétnu funkciu (časová doména). Výstup tohto príkazu poskytne rovnicu, ktorú je možné ľahko začleniť do kódu Arduino IDE.

Krok 9: Filtrovanie: časť 4

Filtrovanie: časť 4
Filtrovanie: časť 4
Filtrovanie: časť 4
Filtrovanie: časť 4

V náčrte Arduino zahrňte pred nastavením premenné u a y. Príkaz float jednoducho definuje, ako bude premenná ukladať údaje (napríklad maximálna hodnota, desatinné miesta atď. …), a odkaz na ďalšie informácie o tom bude poskytnutý tu: https://www.arduino.cc/reference/en/language /varia…

Do slučky, v ktorej dochádza k prevodu zo surového signálu na otáčky motora, zahrňte premennú u a rovnicu násobku y. Existuje niekoľko spôsobov, ako to využiť, ale premenná u by mala byť nastavená rovnako ako meraný surový vstupný signál a premenná y bude filtrovaná hodnota.

Krok 10: Zobrazte filtrované otáčky motora

Odporúča: