Hi,

also als erstes würde ich mal empfehlen die Daten die gemessen werden über UART ausgeben zu lassen um einfach mal zu gucken was da los ist. Anstatt dem hier:
Code:
data[...] = ADCL + (ADCH << 8);
könntest du auch:
Code:
data[...] = ADCW;
schreiben. Ein weiterer Pukt an dem du ansetzen könntest wäre die Referenzspannung. Ich selber habe keine ASURO, habe mir aber mal das Snake Vision gekauft. Ich habe zum auswerten die interne Referenzspannung von 5 Volt benutzt. Ich habe dann übrigens schnell festgestellt das die Sensoren nur auf eine Entfernung von 30cm zu gebruachen sind. Wenn mein Ziel(Teelicht) weiter enfernt war dann haben die Sensoren nichts mehr feststellen können. Um auf die wärmste Quelle zu zufahren habe ich auch einen P-Regler verwndet das hat sehr gut geklappt und sah etwa so aus:
Code:
       int ocr1a=0,ocr1b=0,dif=0,regler_kp=25,regler=0;
       while((adc1<(pir+50))&&(adc2<(pir+50))){
            adc1 = read_adc3();
            adc2 = read_adc4();
            dif = adc1 - adc2;

            regler_kp = read_adc2()-128;

            regler = (dif * regler_kp)/10;            
         
            speed = read_adc1();

            ocr1a = speed - regler;
            ocr1b = speed + regler;    

            if(ocr1a<0){ ocr1a = 0;}
            if(ocr1b<0){ ocr1b = 0;}
            if(ocr1a>255){ ocr1a = 255;}
            if(ocr1b>255){ ocr1b = 255;}
            OCR1A = ocr1a;
            OCR1B = ocr1b;
        }
An ADC1 und ADC2 habe ich noch Potentiometer um eine gewisse Grundgeschwindigkeit und die Regler_kp einzustellen. Und in der while-Schleife bleibt er solange bis er nah genug am Teelicht ist.

KR-500