Dobrý den, snažím se vyrobit si pomocí arduina a jazýčkového kontaktu (reed switch) tachometr na kolo. Myslel jsem si, že to bude jednoduché, ale začíná se ukazovat, že to nejde úplně samo.
Problém je ten, že to hází naprosto nesmyslně veliký rychlosti. Vypisovaná rychlost se sice mění podle toho jak rychle je spínán magnetický senzor, ale je naprosto nereálná. Ten časovač mám z internetu z návodu na tachometr. Když jsem zkoušel vypisovat proměnnou cas ke které by se měla přičíst 1 každou milisekundu zjistil jsem, že je mnohem pomalejší.
proto prosím o radu jak to napravit popřípadě kde mám chyby.
tady je program který zatím mám:
#define magnet 2
bool sepnuti;
long cas;
float mmin;
float pi = 3.141592;
float r = 0.30;
float o;
void setup(){
pinMode(magnet, INPUT_PULLUP);
o = pi*2.0*r;
Serial.begin(9600);
cli();//stop interrupts
//set timer1 interrupt at 1kHz
TCCR1A = 0;// set entire TCCR1A register to 0
TCCR1B = 0;// same for TCCR1B
TCNT1 = 0;
// set timer count for 1khz increments
OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) - 1
// turn on CTC mode
TCCR1B |= (1 << WGM12);
// Set CS11 bit for 8 prescaler
TCCR1B |= (1 << CS11);
// enable timer compare interrupt
TIMSK1 |= (1 << OCIE1A);
sei();//allow interrupts
//END TIMER SETUP
}
ISR(TIMER1_COMPA_vect) {
cas++;
// Serial.println(cas);
}
void loop(){
sepnuti = digitalRead(magnet);
if(!sepnuti){
if(cas>100){
cli();
mmin = o/(float(cas)/60000);
cas = 0;
sei();
}
}
Serial.println(mmin);
// Serial.println(millis());
if(cas > 3500){
mmin = 0;
}
}
arduino tachometr
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: arduino tachometr
Zdravím.
Nemohl by být problém v zakmitávání jazýčkového kontaktu....
Mám stejný problém na meteostanici, při měření rychlosti větru.
Ota
Nemohl by být problém v zakmitávání jazýčkového kontaktu....
Mám stejný problém na meteostanici, při měření rychlosti větru.
Ota
Re: arduino tachometr
Myslím si že to mám ošetřené tou podmínkou že proměnná čas musí být větší než 100
Re: arduino tachometr
To já mám také. Pokud je >15 milisec, ale běžně se započítají pulsy těsně za hranicí, např. 16,18,20 milisec., ale ve zkutečnosti to neodpovídá.
Vyhodnocuji minimální rychlost větru a průměrnou rychlost a není možné, aby se při měření projevoval takovým rozdílem.(Rychlost měřím 6s). Chyba se projevu pouze u určité rychlosti větru. Větší a menší rychlost je OK.
Vyhodnocuji minimální rychlost větru a průměrnou rychlost a není možné, aby se při měření projevoval takovým rozdílem.(Rychlost měřím 6s). Chyba se projevu pouze u určité rychlosti větru. Větší a menší rychlost je OK.
-
- Příspěvky: 10
- Registrován: 14 pro 2018, 15:10
- Reputation: 0
Re: arduino tachometr
Ahoj, v tom kódu se příliš neorientuji, do těchto výšin jsem se v programování neprokousal, ale ryze z praxe lze konstatovat, že by zákmity mohli hrát roli jak u tachometru tak u anemometru, odstranění tohoto jevu jsem viděl na stránkách www.arduino8.cz pomocí Schmittova klopného obvodu, v minulosti jsem snímání otáček řešil pomocí stařičkého obvodu firmy Tesla MH3SS2 (Hallův generátor), na netu je stále katalogový list se základními parametry, tento obvod produkuje impulsy bez zákmitů a určitě existují jeho modernější verze od jiných výrobců.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů