PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pimp my Linienverfolgung



Norki
19.09.2006, 19:42
Hi!
Ich habe meinen Asuro programmiert, eine Linie zu verfolgen.
Manchmal kriege ich dabei Probleme mit dem Umgebungslicht, z.B. wenn Asuro unter dem Tisch rumfährt reicht manchmal der Unterschied zwischen Linie und Boden nicht mehr.

Nun hab ich mich gefragt, ob man statt der roten Standard LED eine richtig helle LED einbauen kann. Mit 3000(?)mcd oder so, damit der Boden mal richtig ausgeleuchtet wird und das Umgebungslicht dann weniger reinspielt. Haut das hin mit der Leistung? Und auch sonst, ist das sinnvoll und möglich?

grüße
Norki

P.S.:

Wir brauchen mehr Power!

ähM_Key
19.09.2006, 21:19
Hast du schon probiert nur die Differenz ziwschen gemessenen Wert bei ein-und ausgeschalteter LED zu nutzen?

MK

Norki
19.09.2006, 21:34
Also allgemein arbeite ich bei der Linienverfolgung mit Differenzen zwischen Linienhelle und Bodenhelle.

Aber wozu sollte ich die Differnez zwischen einund ausgeschalteter LED nehmen?

gruß
Norki

ähM_Key
19.09.2006, 21:41
"Also allgemein arbeite ich bei der Linienverfolgung mit Differenzen zwischen Linienhelle und Bodenhelle."
...wie man es halt bei einer Linienverfolgung macht ;)

"Aber wozu sollte ich die Differnez zwischen einund ausgeschalteter LED nehmen?"
Um nahezu unabhängig vom Umgebungslicht zu sein!

MK

Norki
20.09.2006, 19:08
Guten Abend!

Leider weiß ich nciht genau, wie du das meinst. Wie werde ich unabhängig vom Umgebungslicht, wenn ich die Led austausche? Soll ich die Helligkeit, die bei ausgeschalteter LED ist, vom eingeschalteten LED Wert abziehen?
Oder wie meinst du das?
Weil das müsste ich dann ja andauernd machen, weil sich das Umgebungslicht ja auch immer ändert....

8-[

Wär nett, wenn du mir das erklären könntest.

grüße
Norki

ähM_Key
20.09.2006, 19:36
- Led einschalten
- Messen (reflektiertes- + Umgebungslicht)
- Led ausschalten
- Messen (Umgebungslicht)

Rechnen (reflektiertes- + Umgebungslicht) - (Umgebungslicht) = reflektiertes Licht
...also bist du vom Umgebungslicht unabhängig.
(Gilt natürlich nur dann, wenn der maximal messbare Wert nicht überschritten wird)

Und ja, das müsstest du dann jedes, also [was weiß ich] 100 mal in der Sekunde machen.

Alles klar?

Gruß, MK

Norki
21.09.2006, 19:05
Ja, alles klar, das versteh ich, das ist ja auch eine gute Lösung. :)

Aber ich wollte ja aber ursprünglich auch gerne ne hellere LED einbauen, weil im dunkeln das Unterscheiden von verschiedenen Werten sehr schwer wird, weil die Werte hart an der unteren Grenze liegen.
Und da is die Frage, ob das geht?

gruß
Norki

ähM_Key
21.09.2006, 21:29
Liegen die Werte nur hart an der Untergrenze, oder misst du oft "0" ?
Denn da die Phototransisoren ja heilwegs linear arbeiten, bringt eine hellere LED in dem Falle nix. Ansonsten schon...allerdings sollte sie dann auch nicht zu hell sein...sonst mist du am Ende auf Weiß nur noch "1023" (bei nem 10Bit ADC). Hat der Asuro eigentlich Infrarot-Foto-Transistoren oder normale (schätze letzteres)?
MK

linux_80
21.09.2006, 21:45
Hallo,
vielleicht kannst Du aus diesem Thread was rausholen:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10806

da haben wir (vor allem ich) uns damals schon mal rumgeärgert,
ich hab jetzt eine weiße 5mm LED da drin, damit kann man dann was anfangen.
Da ich die LED gefunden habe, weiss ich deren Werte nicht, aber die läuft ohne das irgendwo was warm oder defekt wird einfach als austausch für die rote LED.
Und so oft ist die LED dann auch wieder nicht eingeschaltet ;-)

Vogon
22.09.2006, 09:21
Eim kleines Testprogramm das ich mal genau zu diesem Thema gemacht habe.


/************************************************** *****************************
*
* Description: Test Asuro LinienSensor
* Version 0:
* Autor: Vogon 16.10.05
*
************************************************** ***************************/
#include "asuro.h"
#include <stdlib.h>

unsigned int lineData[2];
unsigned int ld[2][2];

int i, ldat, ssum, don, doff;
void PrintStr(unsigned char *data) {
unsigned char i = 0;
while(data[i++]!=0x00);
SerWrite(data,i);
}

int main(void)
{
Init();

PrintStr("\r\nTest Asuro LinienSensor");
while(TRUE) {
PrintStr("\r\nOff:l,r | On:l,r | ssum | doff,don | ldat | ");
for (i = 0; i < 10; i++ ) {
FrontLED(ON);
LineData(lineData); // Messung mit LED ON
ld[1][0] = lineData[0];
ld[1][1] = lineData[1];

FrontLED(OFF);
LineData(lineData); // Messung mit LED OFF
ld[0][0] = lineData[0];
ld[0][1] = lineData[1];

don = (ld[1][0] - ld[1][1]); // Regelabweichung mit LED ON
doff = (ld[0][0] - ld[0][1]); // Regelabweichung mit LED OFF
ldat = don - doff; // Regelabweichung

if (ldat < 0 ) BackLED(ON,OFF); else BackLED(OFF,ON);

ssum = (ld[0][0] + ld[1][0] + ld[0][1] + ld[1][1]); // Fehler wenn über 250

StatusLED(OFF);
BackLED(OFF,OFF);
if (ssum > 250) StatusLED(RED);
else if (abs(ldat) > 5) {
StatusLED(GREEN);
if (ldat < 0 ) BackLED(ON,OFF); else BackLED(OFF,ON);
}

PrintStr("\r\n");
PrintInt(ld[0][0]); // Linker Sensor Messung mit LED OFF
PrintInt(ld[0][1]); // Rechter Sensor
PrintStr(" | ");
PrintInt(ld[1][0]); // Linker Sensor Messung mit LED ON
PrintInt(ld[1][1]); // Rechter Sensor
PrintStr(" | ");
PrintInt(ssum); // Sensoren Summe der Messungen
PrintStr(" | ");
PrintInt(doff); // Regelabweichung mit LED OFF
PrintInt(don); // Regelabweichung mit LED ON
PrintStr(" | ");
PrintInt(ldat); // Regelabweichung
PrintStr(" | ");
}
}
return 0;
}

stochri
22.09.2006, 13:26
nicht zu vergessen, der ulimative ASURO-Linienverfolgungstthread von waste: https://www.roboternetz.de/phpBB2/viewtopic.php?t=11818

ähM_Key
22.09.2006, 13:38
Ja, der ist wirklich schön! ;)

Vogon
22.09.2006, 22:57
nicht zu vergessen, der ulimative ASURO-Linienverfolgungstthread von waste..
8-[ Genau ! 8-[
Ist nach meiner Meinung bisher des Beste was ich mit dem ASURO gesehen habe. Alle was waste da gemacht hat, habe ich mit begeisterung gelesen und sehr gut nach vollziehen können.
Ich hätte es nie für möglich gehalten, mit welcher Geschwindigkeit der Asuro der seine Runden drehen kann, ohne die Linie zu verlieren.