arduino - měření intervalu (frekvence)
Petr Zapadlo
zapik na email.cz
Neděle Září 22 17:19:43 CEST 2013
Přeji pěknou neděli,
řeším anemometr (už jsem na toto téma sem psal)
Vlastní čidlo jsem udělal nakonec z vybrakovaného modelářského motoru -
oběžky.
krásný domek s ložisky, vybrakoval jsem cívku s jádrem, takže zbyl rotor
osazený magnety velmi lehce se točící kolem dokola. Dovnitř hallovu sondu.
Zdánlivě hotovo.
Ocejchoval jsem v autě - měřil jsem multimetrem frekvenci. (85Hz pro 100km/h)
Arduino jsem ověřil jednoduchým multivibrátorem, vše OK.
Nicméně při spojení anemometru s arduinem se mi objevují velmi vysoké
rychlosti větru - přes 330m/s (a to asi pravda nebude :-)
Navíc je to zarovnané nahoře (změna barvy byla chyba v konfiguraci RRD tools)
http://zapik.brunda.name/wind.png
Když se dívám na anemometr, tak se chvíli lehce točí a když fouká jen málo,
tak se třeba lehounce chvěje.
předpokládám, že to je ten problém.
V arduinu měřím interval v přerušení:
attachInterrupt(1,citac, FALLING);
//mereni vetru v preruseni
void citac () {
rychlost = millis() - poc;
if (rychlost == 0) rychlost++;
poc = millis();
vysl= k0*(1000/rychlost)/3.6; //vypocet rychlosti v m/s z doby
prumer=(prumer+vysl)/2;
V dalším kodu mám ještě zachycování minim a maxim:
if (maxr < vysl ) maxr=vysl; //v grafu červena(puvodně žlutá)
if (minr > vysl ) minr=vysl;
Jak vyřešit tento problém?
- pokud budu více průměrovat, tak mi bude dlouho trvat, než to dokonverguje k
rozumné hodnotě
- pokud budu povolovat preruseni az po nějaké době, jaká je ta správná doba?
Poukud problém opravdu dělá kývaní kolem zlomu, bude to generovat nesmysly i
když dovolím přerušovat s delšími intervaly.
Napadá Vás jak to řešit? matematicky, obvodově?
Díky
Zapik
--
Petr "Zapik" Zapadlo
Další informace o konferenci Hw-list