Hi ADR,

Versuche doch erst einmal Deine Odometriedaten zu analysieren. Das kanst Du z.B. so machen:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define POINTS 100
#define SPEED  100


int main(void)
{
	unsigned int data_array[2][POINTS] = {{0}};
	unsigned char sw;
	unsigned int data[2] = {0}, iLinks =0 , iRechts=0, i=0;
	unsigned char cWert[25] = {0};
	
	Init();
	
	SerWrite("Odometrie Test\n\r",16);
	
	BackLED(OFF,OFF);
	MotorDir(FWD,FWD);
	MotorSpeed(SPEED,SPEED);
	
	for (i=0; i<500; i++)
			Sleep(255);

	for (i=0; i<POINTS; i++) {
		OdometrieData(data);
		data_array[0][i] = data[0];
		data_array[1][i] = data[1];
	}
	MotorDir(BREAK,BREAK);
	MotorSpeed(0,0);
	BackLED(ON,ON);
	
	while(TRUE) {
		sw = PollSwitch();
		if (sw & 0xFF) {
			for (i=0; i<POINTS; i++) {
				iLinks  = data_array[0][i];
				iRechts = data_array[1][i];
				sprintf(cWert,"\n\rLinks %3u Rechts %3u",iLinks, iRechts);
				SerWrite(cWert, strlen(cWert));
			}
		}
	}
	
	return 0;
}
Damit kannst Du ASURO fahren lassen und danach durch Betätigung eines Tasters die gemessenen Werte mit HyperTerminal auslesen. Die Zahlenreihen dann mit Copy and Paste in Excel übernehmen und darstellen lassen. Du solltest saubere Sinusschwingungen bekommen - ohne "Ausrutscher". Mache den Test auch bei unterschiedlichem Umgebungslicht, um dessen Einfluß zu ermitteln.

Ich habe meine Odometriesensoren mit kleinen, schwarzen Pappgehäusen umgeben und die Motoren entstört. Das hat sehr geholfen.
Anhand der Excelkurven kannst Du dann auch einen oberen und unteren Wert für die Zählschwelle festlegen und brauchst sie dann nicht immer neu zu ermitteln.

Viel Erfolg...

Gruß,

_HP_