PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Liniensensor Problem



bergowitch
12.09.2005, 08:47
Hallo,
nach dem interessanten Beitrag über PD-Regler habe ich mich auch mal heran gemacht und versuche selbst einen Regler zu programmieren. Zuerst habe ich mal versucht mit FrontLED on und off zu arbeiten und diese Procedur geschrieben (und zum Teil bei andun abgeguckt =D> )
Daraus ist folgendes geworden:


void ueber_linie (void) // Ist der Asuro noch über der Linie
{
unsigned int lineData[2];
unsigned int li_seite;
unsigned int re_seite;
unsigned char li[4]; // Variablen für Ausgabe
unsigned char re[4];
unsigned char newLine = 10;
unsigned char cR = 13;
FrontLED(ON); // LED an
LineData(lineData); // Liniensensor auslesen
li_seite = lineData[0]; // Werte zwischenspeichern
re_seite = lineData[1];
FrontLED(OFF); // LED aus
LineData(lineData); // Liniensensor auslesen
li_seite = li_seite - lineData[0]; // Differnz zwischen den beiden
re_seite = re_seite - lineData[1]; // Messungen (hell-dunkel) berechnen
if (li_seite > 30) {
if (re_seite > 30) {StatusLED (RED);
MotorSpeed(0,0);}
else {StatusLED (GREEN);}}
else {StatusLED (GREEN);
MotorSpeed(0,0);}
itoa(li_seite,li,10); // Ausgabe der Liniendaten an PC
itoa(re_seite,re,10);
SerWrite(li,strlen(li));
SerWrite(" | ", 3);
SerWrite(re,strlen(re));
Sleep(100);
SerWrite(&newLine,1);
SerWrite(&cR,1);
}

tuts auch soweit so gut. Aber die Ergebnisse machen mich stutzig.
Über schwarz:
linker Sensor - 19 rechter Sensor 9
über grau:
linker Sensor - 32 rechter Sensor 34
über weiß:
linker Sensor - 58 rechter Sensor 110

Ich verstehe nicht wo der Unterschied zwischen den Sensoren herkommt. Ebenso verstehe ich das "-" beim linken Sensor nicht.
Hat jemand eine Idee? (Daran dass die Sensoren nicht abgeschirmt sind liegt es nicht, da ich den ASURO drehen und wenden kann wie ich will und die Ergebnisse weitgehend gleich bleiben.)
Gruß
Stefan

Andun
12.09.2005, 13:10
Also dass die Sensoren leicht unterschiedliche Werte liefern ist normal, aber das ist schon extrem. Miss doch ncohmal bitte und sag uns was raus kommt wenn du die Sensoren anstrahlst mit ner Lampe. Weil unabgeschirmt, kommen mir die Werte sehr klein vor.

Andun

(Auf Anhieb seh ihc im COde keinen Fehler.)

bergowitch
12.09.2005, 17:07
Hallo Andun,
die Werte sind ja die Differenzen zwischen den Messwert mit FrontLed an und aus (Anwert-Auswert).
Da ich das " SerWrite(&cR,1); " aus deinem Code übernommen habe: bedeutet doch, dass der Cursor im Terminal nach Links gehen soll?
Wenn das so ist frage ich mich wo die "Minus-Werte des linken Sensors kommen? Das würde ja eigentlich bedeuten, dass die SensorLED weniger Licht auffängt, wenn die FrontLED an ist als wenn sie aus ist!?
Ich glaube ich muss mal die einzelnen Werte für den Linken Sensor erheben.
Kann es sein, dass ich einen falschen Widerstand eingebaut habe?
Gruß Stefan

Andun
12.09.2005, 20:07
Ja, die beiden unsigned

char newLine = 10;
unsigned char cR = 13;

dienen dazu eine Zeile runter und dann in der neuen nach vorne zu gehen.

Also es wäre wohl wirklich nicht schlecht, wenn man du mal einzel messungen machst, weil eine negative differenz, darf bei hell-dunkel eigentlich nicht so oft kommen. (Einzelfälle können einfach pech sein)

bergowitch
12.09.2005, 23:18
Hallo,
vielen Dank für deine Antwort.
ich habe neu gemessen und folgende Messwerte erhalten:
schwarz (1):
an | 0 | 6 | aus | 0 | 0
grau (4):
an | 3 | 35 | aus | 2 | 1
weiß (10):
an | 19 | 116 | aus | 2 | 3

Das Umgebungslicht war recht dunkel. An bedeutet, dass die Frontled an war - aus ... ihr wisst schon. Die Werte in Klammern zeigen die Feldnummer von Anduns Word-Datei

Gehe ich recht in der Annahme, dass die Werte darauf hin deuteten, dass mein Linker-Fototransistor nicht richtig gelötet ist => Also der Widerstand zu groß ist? :-k
Ich würde gerne Eure Meinung hören bevor ich den Lötkolben zücke.
Gruß
Stefan

bergowitch
12.09.2005, 23:20
PS: Ich denke bei meinen ersten Messungen war das Umgebungslicht deutlich stärker.

bergowitch
14.09.2005, 21:45
Hallo nochmal,
ich habe die Lötestellen noch einmal nachbearbeitet aber das war es nicht. Dann habe ich mi nochmal die Messwerte angeschaut und festgestellt, dass wenn die FrontLED aus ist beide Sensoren die gleichen Werte liefern. Wenn die LED an ist Unterscheiden sich die Werte aber deutlich.
Hier die Messwerte:
an | 80 | 153 | aus | 37 | 38 |
an | 73 | 153 | aus | 37 | 37 |
an | 79 | 153 | aus | 37 | 38 |
an | 80 | 153 | aus | 37 | 37 |
an | 73 | 152 | aus | 37 | 37 |
Tja die LEDs sind aber recht symetrisch eingebaut. Soll ich es doch mal mit abschirmen probieren? Oder hat jemand ne andere Idee?
Gruß
Stefan