-         

Ergebnis 1 bis 7 von 7

Thema: Liniensensor Problem

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214

    Liniensensor Problem

    Anzeige

    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:
    Code:
    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    29
    Beiträge
    826
    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.)
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    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

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    29
    Beiträge
    826
    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)
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    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?
    Ich würde gerne Eure Meinung hören bevor ich den Lötkolben zücke.
    Gruß
    Stefan

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    PS: Ich denke bei meinen ersten Messungen war das Umgebungslicht deutlich stärker.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •