Hi,
ich habe hier einen Abtastkopf an meinem Gaszähler hängen und versuche die Impulse zu zählen. Der Zähler arbeitet mit einem Magneten an der Walze und bei jeder Umdrehung wird im Abtastkopf ein Reed-Relais geschlossen und anschliessen wieder geöffnet. Ich habe dafür einen Jeenode Arduino Controller verwendet, der daran angeschlossen. Das eigentliche Zählen sieht wie folgt aus:
Port connector(1);
static unsigned long last;
int gescount,bettersend = 0;
MilliTimer countsend1;
void setup () {
connector.mode2(INPUT); // Set AIO mode as input
connector.digiWrite2(0); // Activate pull-up resistor for
last = millis(); }
void loop () {
static boolean ledOn = false;
if (countsend1.poll(1000)) { bettersend=0;
}
int pushed = connector.digiRead2();
if (!ledOn && pushed == 0) {
ledOn = true;
} else if (ledOn && pushed == 1 && bettersend == 0) {
ledOn = false;
gescount +=1;
bettersend=1;
}
}
Es handelt sich hierbei um eine verkürzt Version des Quellcodes der nur den wichtigen Teil des Zählens enthält.
Mein eigentlicher Gedanke ist nun das er nur nach eine steigenden Flanke und einer fallenden Flanke das ganze als Umlaufen zählt. Außerdem soll durch "bettersend" eine 1 Sekunden Sperre eingestellt werden, damit er nur jede Sekunde maximal einen Impuls zählt. Das ganze klappt aber nicht und ich habe immer zuviele Impulse gezählt. Wenn ich das ganze händisch mit einem Magneten teste, finde ich keinen Fehler aber bei richtigen Test am Gaszähler habe müsste ich zum Beispiel 323 Impulse drauf haben, habe aber 510 gezählt. Eine direkte ungenauigkeit ist für mich nicht zu erkennen? Ich zähle also aus irgendeinem Grund nicht immer richtig.
Kann mir bitte jemand helfen, wie ich das richtig mache, mit dem Zählen.
Vielen Dank.
Gruß kami