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