Stránka 1 z 3
Měření otáček spalovacího motoru
Napsal: 01 kvě 2022, 18:41
od Celeron
Ahoj Arduiňáci.
Potřeboval bych ubastlit co nejmenší otáčkoměr 0-10 000 ot/min k zapalování dvou a nebo čtyřtaktu. Na netu jsem nic vhodnýho nenašel, tak asi Arduino Mini, snímat TTL pulzy, co má naštěstí zapalování vyvedený jako otevřenej kolektor. No a výpis otáček by šel buď na LCD jednořádek 1 x 8 a nebo na Nokii displej.
Chci zkusit použít funkci PulseIn a sečíst dýlku pulzů High a Low v cyklu 1 sekunda. Asi takhle nějak bez definice setup:
Kód: Vybrat vše
void loop()
{
per_h = pulseIn(vst_pin,HIGH);
per_l = pulseIn(vst_pin,LOW);
per_s = per_h + per_l;
otc = ((1 / per_s)*60000; // tisice otacek pro dvoutakt
lcd.print (otc); // výpis náznakově...
delay (1000);
}
Díky!
edit: opraveno, ne počet ale dýlka impulzu.
Napsal: 01 kvě 2022, 18:58
od Hape
Pokud bys netrval na Arduinu, tak v poměrně malém provedení je možné objednat stavebnici čítače/otáčkoměru na webu pana Zajíce:
http://zajic.cz/nfstupni/nfstupni.htm
Napsal: 01 kvě 2022, 19:13
od Celeron
Ty ledky by na slunci nebyly vidět. Musí být LCD.
Napsal: 01 kvě 2022, 19:17
od termit256
Napsal: 01 kvě 2022, 19:28
od Celeron
To je strašně veliký. S Nokií a Arduino mini to bude poloviční. A mohlo by to doplňkově měřit přes analogový vstupy i napětí a proud baterie zapalování. A bastlím rád.

Napsal: 01 kvě 2022, 19:56
od samec
https://www.hupnakolo.cz/sigma-baseline-500?vid=16919
a bastliť môžeš preddeličku, ak nebude stačiť konfiguračný parameter v nastaveniach.

Napsal: 01 kvě 2022, 20:27
od petrfilipi
Otáčkoměr od p. Zajíce má na webech dobré hodnocení. Jestli má cenu se s něčím vyvíjet.
PF
Napsal: 01 kvě 2022, 21:00
od jezevec
Předevčírem mi přišel z čajny UT373.
Napsal: 01 kvě 2022, 21:04
od bum
Pro inspiraci mám zapojení s PICAXE 08M2 na webu v článku měření frekvence a otáček, a v článku měření otáček spalovacího motoru. Vzorec pro čtyřtakt v článku měření frekvence a otáček se upraví 15 * načtená hodnota výsledek * 2 výsledek jsou pak otáčky /minutu u čtyřválce (čtyřtakt). U picaxe příkaz pulsin načítá délku trvání pulsu nevím jak to je u Arduina, odzkoušení tvého programu co píšeš výše je jednoduché připoj na vstup Arduina zdroj signálu 50Hz který ti nahradí pulsy ze snímače v autě a měly by se ti zobrazit otáčky pro 4-valcový 4-taktní motor 1500 ot/min.
Napsal: 01 kvě 2022, 21:37
od Celeron
petrfilipi píše:Otáčkoměr od p. Zajíce má na webech dobré hodnocení. Jestli má cenu se s něčím vyvíjet.
PF
Tak ještě jednou co jsem už psal:
Ty ledky by na slunci nebyly vidět. Musí být LCD.
To se tady fakt nenajde žádnej Arduiňák, co by se vyjádřil k tomu, zda je ten prográmek na měření otáček v prvním příspěvku správnej?
Napsal: 01 kvě 2022, 21:57
od Ruprecht
edit kvůlivá mému nepochopení
Tak pokud je to myšleno tak, že zruba jednou za vteřinu se změří jedna celá perioda a vypočtou a zobrazí se otáčky, tak by to mohlo nějak fungovat.
Jen s tím dělením 1/x mám soukromý vnitřní problém, budou vycházet fakt malá desetinná čísla a teprve pak se budou násobit velkým číslem, to "nem-dopadne dobre". Třeba to má Arduino ošetřené, já bych to stejně napsal (asociativnost násobení) jako 60.000/per_s (výsledek v tisících ot/min) nebo raději 60mio/per_s v ot/min, i když to bude float
Napsal: 01 kvě 2022, 22:14
od bum
K tomu programu pro Arduino jak píší výše nahraj program do Arduina připoj vstup Arduina na zdroj signálu 50Hz a pro 4-valcový 4-taktni motor se na displeji musí zobrazit 1500 ot/min. Pokud budeš mít zdroj signálu 25Hz musí se ti zobrazit 750 ot/min. U picaxe příkaz pulsein má stejný význam jak je psáno výše pro načítání délky pulsu, pro načítání počtu pulsů je u picaxe příkaz count. Podobný příkaz na načítání počtu pulsů za časovou jednotku bude mít určitě i Arduino.
Napsal: 01 kvě 2022, 23:16
od Celeron
Ruprecht, napsal jsem omylem počet impulzu ale PulseIn (High) opravdu měří délku impulsu a PulseIn (Low) mezeru mezi dvěma impulsy.Myšleno správně ale popsáno blbě.

Takže součet je celá perioda. Tu převedu na kmitočet a vynásobením jsou z toho tisíce otáček pro dvoutaktní jednoválec, tedy co otáčka, to při zapalování jeden impulz do High s téměř okamžitým sestupem do Low.
Asi by bylo lepší a přesnější přičítat každej impuls přerušením a jednou za sekundu je vyčíst, vynásobit a zobrazit ale k přerušení u Arduina jsem se zatím nedopracoval. Možná jsem měl spíš zvolit Sylabse, přerušení u A51 je mi dostatečně známý. Ale tam je zase trochu problém s analogovým měřením.
Napsal: 02 kvě 2022, 06:31
od bum
Ještě doplním výpočet otáček z frekvence pulsů snímače, výpočet je : frekvence ze snímače * konstanta = výsledek jsou ot/min. Konstanty pro různý počet válců pro 4-taktni motor jsou 2 válce = 60, 3 válce = 40, 4 válce = 30, 6 válců = 20, 8 válců = 15. Pro 2- taktní motor jsou konstanty 1 válec = 60, 2 válce = 30, 3 válce = 20, 4 válce = 15. Pro odzkoušení otáčkoměru je výpočet cejchovací frekvence (f), f = N * V / 120 4 - taktní motor, 2 - taktní motor f = N * V/60 kde N jsou otáčky V je počet válců a 120, 60 jsou konstanty.
Napsal: 02 kvě 2022, 08:08
od EKKAR
Ruprecht píše:edit kvůlivá mému nepochopení
Tak pokud je to myšleno tak, že zruba jednou za vteřinu se změří jedna celá perioda a vypočtou a zobrazí se otáčky, tak by to mohlo nějak fungovat.
Jen s tím dělením 1/x mám soukromý vnitřní problém, budou vycházet fakt malá desetinná čísla a teprve pak se budou násobit velkým číslem, to "nem-dopadne dobre". Třeba to má Arduino ošetřené, já bych to stejně napsal (asociativnost násobení) jako 60.000/per_s (výsledek v tisících ot/min) nebo raději 60mio/per_s v ot/min, i když to bude float
Uvědom si, že procesor neměří "1/x" jako počet sekund na jednu periodu vstupního signálu, ale tu výchozí časovou jednotku má mnohotisíckrát kratší. Periodu vstupního signálu měří jako počet period svejch interních hodin, takže se rozhodně nedostává do oblasti malejch desetinnejch čísel ani s dělením, ani s násobením ...