-
Ich hab mir gerade dein Programm angeguckt. Du hast in der Routine die den rechten Sensor ausließt eine Korrektur von -100 drin. Scheint also das bei dir auch so ein großer Unterschied zwischen den Werten vorhanden war ;)
Was ich gerade mal gesehen habe. Wenn du dir dieses PDF mit dem Schaltplan der Platine anschaust
http://www.produktinfo.conrad.com/da...uer_ARX_03.pdf
siehst du das der OPV von Sensor 2 eine andere Verstärkung hat als der von Sensor 1. Einmal sind da 1MOhm und 15Ohm in Reihe und das andere mal 1MOhm und 10Ohm. Könnte dies das Problem mit den unterschiedlichen Werten verursachen? Und wenn ja wieso wurde das so gemacht?
Hab es mal ausgerechnet. Beim oberen OPV ist V = 100.001 und beim unteren V = 62.500,93.
-
Hallo
Bei Fragen zu OPV muss ich leider passen. Die unterschiedliche Beschaltung der Kanäle scheint mir auch verdächtig, aber ich mag mich eigentlich nicht tiefer einlesen:
http://www.soselectronic.de/a_info/r...in/LTC1051.pdf
Mein SnakeVision (Fertiggerät) wurde so bestückt:
R1 - 1M bnswgn (300k)
R2 - 10 bnswsw (7r5)
R3 - 1M brswgn (1M)
R4 - 100 bnswbn (10)
R5 - 1M bnswgn (1M)
R6 - 100 bnswbn (15)
R7 - 20k rtswor (20k)
R8 - 20k rtswor (20k)
http://www.dieelektronikerseite.de/T...ndsrechner.htm
Wie vermutet speichert die Kalibrierfunktion bei Tastendruck die aktuellen Werte als Offset und rechnet diese Werte bei den weiteren Messungen mit ein:
Code:
...
Init();
// Port D, Pin 6 (die ehemalige Front-LED), auf Eingang ...
// ... schalten und den Pullup aktivieren.
DDRD&=~(1<<6);
PORTD|=(1<<6);
// Motoren immer auf rückwärts
MotorDir(RWD,RWD);
// Offset mit null initialisieren
offset[0]=0;
offset[1]=0;
while(1)
{
// Messwerte einlesen
ThermalData(tdata);
// Wenn Knopf gedrückt, aktuellen Wert als Offset speichern
if ((PIND&(1<<6))==0) {
offset[0]=tdata[0];
offset[1]=tdata[1];
}
// Offset abziehen, aber nur, wenn der Messwert groß ...
// ... genug ist
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;
// Die Summe der Werte wird für die Berechnung der ...
// ... Geschwindigkeit genutzt
sum=tdata[0]+tdata[1];
// Signal stark genug?
...
(Aus Weglaufen.c der SnakeVision-Beispielprogramme)
Gruß
mic
-
Ich schau mal heute Mittag nach wie mein Snake Vision bestückt ist. Würde mich nicht überraschen wenn dort auch zwei verschiedene Verstärkungen erzeugt werden. Falls das so ist guck ich mal ob ich die Widerstände beide gleich mache und teste es dann nochmal.
Weil für mich ergibt das keinen Sinn. Warum soll ich unterschiedliche Verstärkungen in Kauf nehmen womit dann zwei Unterschiedliche Ergebnisse raus kommen und dann muss ich diese Differenz mittels Software korrigieren.
Wenn ich jetzt mal meine, anhand des Schaltplanes, ausgerechneten Verstärkungen zu Grunde lege und eine Eingangsspannung von 5mV habe dann kommen da zwei Spannungswerte von 500,005 und 312,5 raus. Und da sieht man ja auch eine starke Differenz von fast 200 die man korrigieren muss und das obwohl die Sensoren beide (theoretisch) den selben Wert ausgeben.
-
Ich glaube auch nicht das die beiden Kanäle da absichtlich anders bestückt sind. Eher ist der Schaltplan eine Mischung aus 2 unterschiedlich alten Hardwareversionen. Nach dem Plant ist ein bisschen Offset auch direkt eingebaut (für den Fall das der Sensor Wärmer ist als die Umgebung), aber halt gleich für beide Kanäle.
Die im Plan genanten Verstärker können schon bis zu 5 µV Offset haben. Mit einer 100000 fachen Verstärkung wären das 500 mV am Ausgang, also schon eine ganze Menge. Bei 5 V für ARef. wären das bis zu 100 bei ADC wert. Die genannte Differenz liegt also noch im Rahmen der Toleranzen der OPs. Auch mit der geringeren Verstärkung entsprechend der Abgelesenen Wert bleibt an recht großer Unterschied möglich.
-
Ja hab es gerade auch nochmal nachgeschaut. Der Plan ist nicht aktuell aber die Widerstände für die Verstärkung sind gleich.
-
Hab jetzt auch eine Softwareseitige Korrektur eingefügt und nun klappt es wie es soll.
Danke nochmals für die Hilfe!