Guten Tag!
Ich soll ein Projekt machen mit dem Uno (Ethernet) zum Auslesen eines Drehgebers.
Die Bezeichnung lautet:
Baumer BHE 03.24G360-6-1
360lmp/U
3,6378lmp/mm
d=31,5mm
1m/min=60,63Hz
Nun zu meinem Problem. Wenn ich den Drehgeber sagen wir mal mit unter 8m/min bewege (egal in welche Richtung) dann habe ich ein relativ starkes "Prellen". Wenn ich ihn jedoch ziemlich schnell drehe (ab 25m/min) dann habe ich zb bei einer Rechtsdrehung nur noch jeden 20 Wert falsch (also anstatt rechts links).
Teilweise sind bei schnellen Richtungswechseln auch Werte von 3100m/min dabei was überhaupt nicht stimmt.
Von was kann das kommen?
Kann man das irgendwie per Software lösen?
Hier das Programm:
float Azeit=0, Bzeit=0, Zeit=0, meter=0, alt, Astatus, Bstatus;
void setup()
{
Serial.begin(57600);
attachInterrupt(0, A, CHANGE);
attachInterrupt(1, B, CHANGE);
}
void loop()
{
if(Astatus == 1 && Bstatus == 1)
{
if(Azeit < Bzeit)
{
Zeit=Bzeit-Azeit;
meter=(1000000*60*0.3025)/(Zeit*4*360);
alt=Azeit;
Serial.print("Links ");
Serial.print(meter);
Serial.println(" m/min ");
}
else if(Bzeit < Azeit)
{
Zeit=Azeit-Bzeit;
meter=(1000000*60*0.3025)/(Zeit*4*360);
alt=Azeit;
Serial.print("Rechts ");
Serial.print(meter);
Serial.println(" m/min ");
}
if (alt == Azeit)
{
Azeit=0;
Bzeit=0;
}
}
}
void A(){
Azeit = micros();
Astatus = digitalRead(2);
}
void B(){
Bzeit = micros();
Bstatus = digitalRead(3);
}