@ jurs
Du hast da vollkommen Recht. Ich hab das ganze nochmal getestet. Es werden genau 2 Signale durch den Reedkontakt pro Umdrehung erzeugt, wobei ein kurzer und ein langer Impuls entsteht.
Sorry nochmal für meine Beratungsresistens :D.
Momentan bin ich soweit, dass ich mir die Werte (die Abstände zwischen den einzelnen Schaltungen) im Serial Monitor ausgeben lasse.
Hierbei sieht man, dass zuerst ein kurzer und dann ein langer Impuls entsteht.
In der Interrupt Routine frage ich nun ab, ob meine Variable "Abstand" größer ist als 1000 (es hat sich gezeigt das der kurze Impuls max. 640 Mikrosekunden groß ist). Dann wird der Abstandswert in die Variable limpuls gespeichert (langer Impuls)...ansonten wird der Wert in der Variable kimpuls gespeichert (kurzer Impuls).
Hier der Code:
unsigned long i,abstand,kimpuls,limpuls;
unsigned long j=0;
void setup()
{
Serial.begin(9600);
attachInterrupt(0,Interrupt,RISING);
}
void Interrupt()
{
noInterrupts();
i = micros();
abstand = i-j;
j=i;
if (abstand >= 1000)
{
limpuls=abstand;
Serial.print("langer Impuls: ");
Serial.println(limpuls);
}
else
{
kimpuls=abstand;
Serial.print("kurzer Impuls: ");
Serial.println(kimpuls);
}
interrupts();
}
void loop()
{
}
Mein vorrangiges Ziel besteht momentan darin, aus den Abständen (kurzer + langer Impuls) eine Periode zu bekommen, anhand derer ich direkt nach jeder Periode die ich gemessen habe, die Windgeschwindigkeit zu berechnen.
Hierzu habe ich anhand der Werte des Herstellers zu Frequenz und Windgeschwindigkeit in Excel eine Formel erstellt, die den Werten des Herstellers des Anemometers gleicht.
Nun meine Frage:
Wie kann ich es programmiertechnisch elegant lösen, das genau ein kurzer und ein langer Impuls addiert werden (die beide zusammen gehören) und dann erst wieder der nächste kurze und der nächste lange Impuls aufsummiert werden, nicht aber schon der bereits benutze lange und dann der nächste kurze Impuls?
Vielen Dank für eure Antworten!
Hier noch eine kurze Ausgabe meine Serial-Monitors:
langer Impuls: 1288736
kurzer Impuls: 548
langer Impuls: 1373776
kurzer Impuls: 552
langer Impuls: 940952
kurzer Impuls: 500
langer Impuls: 891320
kurzer Impuls: 496
langer Impuls: 571136
kurzer Impuls: 496
langer Impuls: 454896
kurzer Impuls: 496
langer Impuls: 422892
usw...