Guten morgen.
Hallo radbruch und alle anderen natürlich auch,
als Jäger und Sammler kann ich bei mir auf der Platte als erste Version mit Dateidatum vom 20.07.2005 folgendes finden:
Bis auf die Berechnung vom Wheelspeed ist aber der Code noch komplett in der aktuellen Forum-LIB vorhanden.Code:SIGNAL (SIG_ADC) { static unsigned char tmp[2],flag[2],toggle; static int speedcounter[2]; if (autoencode) { tmp[toggle]= ADCH; if (toggle) ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_RIGHT; else ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_LEFT; // Hysteresis included 25.6.2005 stochri if ( (tmp[toggle] < 150) && (flag[toggle] == TRUE)) // falling edge { encoder[toggle] ++; Wheelspeed[toggle]=speedcounter[toggle]; speedcounter[toggle]=200; // preset speedcounter to maximum speed flag[toggle] = FALSE; } if ( (tmp[toggle] > 160) && (flag[toggle] == FALSE)) // rising edge { encoder[toggle] ++; flag[toggle] = TRUE; } toggle ^= 1; if(speedcounter[toggle]) speedcounter[toggle]--; // if speecounter not zero else Wheelspeed[toggle]=0; } }
Zwei kleine Änderungen:
- Variable toggle wird mit FALSE initialisiert
- Der kleine Hysteresewert wurde von 150 auf 140 reduziert. (Etwas größere Hysterese zum oberen Wert von 160.)
Somit ist es erst einmal egal welche Version benutzt wird.Code:SIGNAL (SIG_ADC) { static unsigned char tmp[2],flag[2],toggle=FALSE; if (autoencode) { tmp[toggle]= ADCH; if (toggle) ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_RIGHT; else ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_LEFT; if ( (tmp[toggle] < 140) && (flag[toggle] == TRUE)) { encoder[toggle] ++; flag[toggle] = FALSE; } if ( (tmp[toggle] > 160) && (flag[toggle] == FALSE)) { encoder[toggle] ++; flag[toggle] = TRUE; } toggle ^= 1; } }
Aber interessant ist, dass nur der ADCH-Wert, also nur die oberen 8 Bit vom ADC-Wandler, benutzt werden. Dies war zumindest mir nicht so richtig bewußt.
OK, dein Testprogramm für die Liniensensoren ist hier ohne Source nicht so richtig.
Trotzdem ist deine Aussage: "Ähm, das ist mir jetzt echt peinlich, aber der Effekt tritt scheinbar nicht mehr auf." sehr interessant, da dann ja auch bei den Liniensensoren wohl irgendetwas nicht ganz in Ordnung ist.
Deshalb mal eine Frage: Sind die von dir geposteten Daten heute bei Sonnenlicht gewonnen worden? Und, kann es sein, dass du die ersten Tests mit deinem Programm bei Lampenlicht gemacht hast?
Dies würde ja für meine Theorie mit den 50 Hertz sprechen.
Mit deinem Programm bekomme ich nun, ohne Sonne, folgende Messdaten: (Hattest du heute so etwas erwartet, als du vom 'nicht mehr auftretenden Effekt' sprachst?)
Und nun, Trommelwirbel, 50 Hertz betriebene Schreibtischlampe ausgeschaltet:Code:83 94 115 132 116 137 104 126 91 111 79 95 82 93 97 109 113 128 117 138 107 129 94 114 81 98 81 93 94 105 110 124 118 138 110 133 97 118 83 102
Dies ist der Effekt, den ich eben auch bei den Odometrie-Messung erwarte, und für den man halt noch ein Testprogramm schreiben muss. Aber nicht mit einem Messen, und sofort-Senden Zyklus, sondern wie oben beschrieben.Code:Ohne LED-Beleuchtung (Nur LCD-Monitor an) 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Mit eingeschalteter LED-Beleuchtung 34 40 35 38 35 38 35 38 35 38 34 38 35 38 35 38 35 39 35 39 35 39 35 39 35 39







Zitieren

Lesezeichen