arduino - měření intervalu (frekvence)

Petr Zapadlo zapik na email.cz
Neděle Září 22 18:21:44 CEST 2013


Zdravím, 

to je dobrý nápad, jen bych musel na střechu (ale pokud se mi to nepovede 
vyřešit v kodu, což se dělá jednodušeji, tak ho využiju)

Ještě jsem zjistil, že stropová rychlost je ~1ms,
asi se to přerušení volá  pod 1ms, a uplatňuje se tento řádek:
if (rychlost == 0) rychlost++;


Je možné, že by sonda TLE4905L mohla dělat zákmity? (je pověšená asi na 7m UTP 
kabelu, přičemž GND a Q patří do jednoho páru.

Zapik

 


Dne Ne 22. září 2013 18:14:23, Jan Hovorka napsal(a):
> zdravím,
> 
> dát tam víc hallových sond a sledovat, že se to skutečně otáčí,
> 
> Honza
> 
> 
> 
> ---------- Původní zpráva ----------
> Od: Petr Zapadlo <zapik na email.cz>
> Datum: 22. 9. 2013
> Předmět: arduino - měření intervalu (frekvence)
> 
> "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