Hast du schon probiert nur die Differenz ziwschen gemessenen Wert bei ein-und ausgeschalteter LED zu nutzen?
MK
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!
Hast du schon probiert nur die Differenz ziwschen gemessenen Wert bei ein-und ausgeschalteter LED zu nutzen?
MK
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
"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
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....
Wär nett, wenn du mir das erklären könntest.
grüße
Norki
- 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
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
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
Hallo,
vielleicht kannst Du aus diesem Thread was rausholen:
https://www.roboternetz.de/phpBB2/ze...ag.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
Eim kleines Testprogramm das ich mal genau zu diesem Thema gemacht habe.
Code:/******************************************************************************* * * 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; }
Prostetnic Vogon Jeltz
2B | ~2B, That is the Question?
The Answer is FF!
Lesezeichen