Použijte Arduino k zobrazení otáček motoru: 10 kroků (s obrázky)
Použijte Arduino k zobrazení otáček motoru: 10 kroků (s obrázky)
Anonim
Použijte Arduino k zobrazení otáček motoru
Použijte Arduino k zobrazení otáček motoru
Použijte Arduino k zobrazení otáček motoru
Použijte Arduino k zobrazení otáček motoru
Použijte Arduino k zobrazení otáček motoru
Použijte Arduino k zobrazení otáček motoru

Tato příručka nastíní, jak jsem použil Arduino UNO R3, 16x2 LCD displej s I2C a LED pásek, který měl být použit jako měřič otáček motoru a kontrolky řazení v mém dráhovém voze Acura Integra. Je napsán ve smyslu někoho, kdo má nějaké zkušenosti nebo má zkušenosti se softwarem Arduino nebo kódováním obecně, matematickým softwarem MATLAB a vytvářením nebo úpravou elektrických obvodů. V budoucnu to může být zrevidováno, aby bylo srozumitelnější pro někoho, kdo má s těmito tématy malé nebo žádné zkušenosti.

Krok 1: Vyberte si Sigal Wire

Vyberte si Sigal Wire
Vyberte si Sigal Wire

Budete potřebovat signál, který odpovídá otáčkám motoru. Je možné přidat systém, který měří otáčky motoru, ale je mnohem praktičtější využít stávající vodič, který přenáší informace o otáčkách motoru. Jediné auto k tomu může mít více zdrojů a může se lišit dokonce rok od roku na jednom modelu vozidla. Kvůli tomuto tutoriálu použiji příklad svého auta, upravenou trať 2000 Acura Integra LS. Na svém motoru (B18B1 s OBD2) jsem našel nepoužité napětí, které je vysoké 12 V a po dokončení plné otáčky klesne na 0 V.

Věci, které pomohou identifikovat potenciální signál otáček motoru:

  • Schéma zapojení vašeho vozidla
  • Hledání fór pro vaše vozidlo se signály motoru/ECU
  • Přátelský mechanik nebo automobilový nadšenec

Krok 2: Rozšíření Wire to Arduino Board

Prodlužte drát na desku Arduino
Prodlužte drát na desku Arduino
Prodlužte drát na desku Arduino
Prodlužte drát na desku Arduino

Jakmile vyberete vhodný signál, budete jej muset rozšířit kamkoli, kam desku Arduino umístíte. Rozhodl jsem se umístit svůj do vozidla, kde dříve bylo rádio, a tak jsem navedl nový vodič od motoru, gumovou průchodkou v protipožární stěně a přímo do oblasti rádia. Protože již existuje velké množství návodů na odizolování, pájení a ochranu kabeláže, nebudu tento proces vysvětlovat.

Krok 3: Analýza signálu

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

Tady se věci mohou komplikovat. Obecné porozumění analýze signálů a ovládacím prvkům vám pomůže na dlouhé cestě, ale dá se zvládnout s malými znalostmi.

S největší pravděpodobností zvolený signální vodič nebude plivat přesnou hodnotu otáček motoru. Bude muset být tvarován a upraven tak, aby poskytoval přesný počet otáček motoru, které chcete. Vzhledem k tomu, že každý jiný vůz a signální vodič se mohou lišit, od tohoto bodu dále vysvětlím, jak jsem na svém Integru použil signál polohy od distributora.

Můj signál je normálně 12V a po dokončení jednoho úplného otočení klesne na 0V. Pokud znáte čas na dokončení jedné úplné rotace nebo jednoho celého cyklu, lze to snadno převést na otáčky/min pomocí některých základních konceptů.

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

Otáčky za minutu = Hz * 60

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

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

Tato metoda vyžaduje získání času potřebného k tomu, aby vstupní signál dokončil jeden celý cyklus. Naštěstí software Arduino IDE má příkaz, který dělá přesně to, PulseIn.

Tento příkaz počká, až signál překročí práh, začne počítat a přestane počítat, jakmile bude práh znovu překročen. Při používání příkazu je třeba poznamenat několik podrobností, proto zde uvedu odkaz na informace o PulseIn:

PulseIn vrátí hodnotu v mikrosekundách a aby byla matematika jednoduchá, měla by být okamžitě převedena na normální sekundy. V návaznosti na matematiku v předchozím kroku lze toto časové období rovnat přímo RPM.

Poznámka: po pokusu a omylu jsem zjistil, že distributor dokončí dvě otáčky pro každé jedno otočení klikového hřídele motoru, takže jsem svou odpověď jednoduše rozdělil na 2.

Krok 5: Identifikace filtru

Identifikujte filtr
Identifikujte filtr

Pokud budete mít štěstí, váš signál bude bez „šumu“(kolísání) a otáčky motoru budou přesné. V mém případě přicházel od distributora velký hluk, který často dával napětí daleko od toho, co se očekávalo. To se změní na velmi falešné hodnoty skutečných otáček motoru. Tento hluk bude nutné odfiltrovat.

Po nějaké analýze signálu přišel téměř veškerý šum na frekvencích (Hz) mnohem vyšších, než jaké produkoval samotný motor (což platí pro většinu skutečných dynamických systémů). To znamená, že nízkoprůchodový filtr je ideálním kandidátem, který se o to postará.

Nízkoprůchodový filtr umožňuje průchod nízkých frekvencí (požadovaný) a zeslabuje vysoké frekvence (nežádoucí).

Krok 6: Filtrování: Část 1

Filtrování: Část 1
Filtrování: Část 1
Filtrování: Část 1
Filtrování: Část 1
Filtrování: Část 1
Filtrování: Část 1

Navrhování filtru lze provést ručně, použití MATLABu to však výrazně urychlí, pokud máte přístup k softwaru.

Filtr dolní propusti lze přirovnat k přenosové funkci (nebo zlomku) v Laplaceově doméně (frekvenční doméně). Vstupní frekvence se vynásobí tímto zlomkem a výstupem je filtrovaný signál, který obsahuje pouze informace, které chcete použít.

Jedinou proměnnou ve funkci je tau. Tau se rovná 1 / Omega, kde Omega je požadovaná mezní frekvence (musí být v radiánech za sekundu). Mezní frekvence je limit, kde budou frekvence vyšší než odstraněny a frekvence nižší, než budou zachovány.

Nastavil jsem mezní frekvenci na otáčky, kterých můj motor nikdy nedosáhne (990 ot / min nebo 165 Hz). Grafy FFT zhruba ukazují, jaké frekvence nesl můj surový signál a frekvence, které vyšly z filtru.

Krok 7: Filtrování: Část 2

Filtrování: Část 2
Filtrování: Část 2
Filtrování: Část 2
Filtrování: Část 2

Zde byl MATLAB z důvodu času opět použit. Je definována mezní frekvence a z ní se zobrazí výsledná přenosová funkce. Mějte na paměti, že tato frakce platí pouze pro doménu Laplace a nelze ji přímo použít na časově závislém mikrořadiči, jako je Arduino UNO R3.

Krok 8: Filtrování: Část 3

Filtrování: Část 3
Filtrování: Část 3
Filtrování: Část 3
Filtrování: Část 3

MATLAB má příkaz, který převede spojitou funkci (frekvenční doménu) na diskrétní funkci (časovou doménu). Výstup tohoto příkazu poskytne rovnici, kterou lze snadno začlenit do kódu Arduino IDE.

Krok 9: Filtrování: Část 4

Filtrování: Část 4
Filtrování: Část 4

V náčrtu Arduino zahrňte před nastavením proměnné u a y. Příkaz float jednoduše definuje, jak bude proměnná ukládat data (například maximální hodnota, desetinná čísla atd …) a odkaz na další informace o tom bude k dispozici zde: https://www.arduino.cc/reference/en/language /varia…

Ve smyčce, kde probíhá převod ze surového signálu na otáčky motoru, zahrňte proměnnou u a rovnici y násobku. Existuje několik způsobů, jak toho využít, ale proměnná u by měla být nastavena stejně jako měřený surový vstupní signál a proměnná y bude filtrovaná hodnota.

Doporučuje: