Also habe jetzt gemessen habe den multie an masse gehalten dann die spannung gemessen wenn ich ein teelämpchen vor halte sind es 1,87 volt an beiden pins (ADC2und3) und wenn ich eine kalte flasche sprudel davor halte ist die Spannung auf 0 Volt. V+2 und V+1 sind kontinuerlich auf 10,53 Volt
Habe den Quelltext mal geändert für die auswertung
Code:
#include "asuro.h"
#define THRESH1 20
#define THRESH2 80
#define THRESH3 200
void ThermalData(unsigned int *data) {
ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT;
ADCSRA |= (1 << ADSC);
while (!(ADCSRA & (1 << ADIF)));
ADCSRA |= (1 << ADIF);
data[0] = ADCL + (ADCH << 8);
ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT;
ADCSRA |= (1 << ADSC);
while (!(ADCSRA & (1 << ADIF)));
ADCSRA |= (1 << ADIF);
data[1] = ADCL + (ADCH << 8);
}
int main(void) {
unsigned int tdata[2],offset[2];
unsigned int speed;
signed int diff,sum;
Init();
DDRD&=~(1<<6);
PORTD|=(1<<6);
MotorDir(FWD,FWD);
offset[0]=0;
offset[1]=0;
while(1);
{
ThermalData(tdata);
if ((PIND&(1<<6))==0){
offset[0]=tdata[0];
offset[1]=tdata[1];
}
if (tdata[0]>offset[0]) tdata[0]-=offset[0];
else tdata[0]=0;
if (tdata[1]>offset[1]) tdata[1]-=offset[1];
else tdata[1]=0;
sum=tdata[0]+tdata[1];
if (sum>THRESH1) {
StatusLED(GREEN);
speed=140;
if (sum>THRESH2) {
StatusLED(YELLOW);
speed=200;
}
if (sum>THRESH3) {
StatusLED(RED);
speed=255;
}
diff=((signed)tdata[0]-(signed)tdata[1])*32/sum;
if (diff>4) {
BackLED(ON,OFF);
MotorSpeed(0,speed);
}
else if (diff<-4) {
BackLED(OFF,ON);
MotorSpeed(speed,0);
}
else {
BackLED(OFF,OFF);
MotorSpeed(speed,speed);
}
}
else {
StatusLED(OFF);
BackLED(OFF,OFF);
MotorSpeed(0,0);
}
}
return 0;
}
Das funktioniert aber leider auch nicht ich weiss nemmer weiter
Lesezeichen