oh, danke für die hinweise, ich denke ein diskettenlaufwerk hab ich noch über...
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
na aber hallo... das sind ja wohl sehr gute werte. alufolie ist also fein. was sind die weissen punkte auf dem ersten bild? so ne art möbelfüße? gleitet der asuro darauf?
Hallo Radbruch,
bei der Messung wäre es aber sinnvoll, wenn die X-Achse die Einheit "mm" hätte. Dann könnte man wirklich sehen, wie groß der Fangbreich ist.
Gruss,
stochri
Würden die werte noch besser wenn man jetzt noch eine Lupe drunter machen würde so wie bei einer optichen Maus???Zitat von radbruch
Ja, es sind Möbelgleiter, weil der TT-Ball beim Fugenfolgen immer in der Rille fuhr und den Regler austrickste.
mm-Angaben kann ich nicht machen, weil der asuro ja aus eigener Kraft (MotorDir(FWD,RWD)) zirkelt und ich nicht weis, wann er welchen Wert speichert. Das alles erscheint mir auch etwas ungenau. Die Transistoren werden kreisförmig über die Linie geführt, der Radius zum Drehpunkt beträgt 7,5cm.
Wenn ich als Schwelle fürs Erkennen 400 ansetze und die Stepps immer gleich groß sind, beginnt der Strich für den rechten Transistor bei 10 und endet bei 31, für den Linken beginnt er bei 17 und endet bei 38. Daraus ergibt sich ein Abstand der Transistoren von 7 Steps (17-10 bzw 38-31) und eine Breite der Linie von 21 Steps (31-10 bzw 38-17). Der (Mitte-)Bereich, in dem beide Transistoren die Linie erkennen, hat 14 Steps (31-17). Der "Fangbereich" wäre demnach 28 Steps (38-10).
Da ich kein großer Mathematiker bin, beachte ich die Kreisbahn mal nicht und berechne die Stepgröße als gerade Bewegung. Von Links nach rechts verschiebt sich die Platine des asuros um 70 mm, also hat ein Step 70mm/50 = 1,4mm pro Step. Damit ergäbe sich für den Fangbereich 28*1,4mm = 39,2mm.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ok, letzter Test für heute:
Bild hier Bild hier Bild hier
Die "Linse" ist ein halbrundes 5mm-Plexglas (Reststück von meinen IR-Abstandsmessversuchen) und bringt so keine Verbesserung.
Hier noch das Filmchen der letzten Messung:
Bild hier
Das Erstellen der Diagramme und vor allem das Einstellen hier ins Forum sollte mir mal jemand erklären.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo,
jetzt habe ich auch mal die Messkurven erstellt, um zu zeigen, was ich unter Vollausschlag verstehe.
Ich war selbst überrascht, daß die Schürze unter myIrAsuro jetzt 5mm über dem Untergrund war -- das kam wohl daher, daß ich auf der RobotChallenge nicht hängenbleiben wollte
Bild hier
Hier nun meine Messungen, die trotz der 5mm Höhe der weißen Schürze über dem Boden fast keinen Außenlichteinfluß zulassen!
<table border=1><tr><td>Untergrund</td><td>hell</td><td>dunkel</td></tr><tr><td>weiß</td><td>1957</td><td>1954</td></tr><tr><td>schwarz</td><td>497</td><td>496</td></tr></table>
Die dunklen Bilder rechts kann man verifizieren, indem man sehr viel Kontrast rausnimmt ...
Bild hier Bild hier
Bild hier Bild hier
Hier das Messprogramm (SPEED: myAsuro hat Untersetzung 1:12.5)Das linke Rad dreht nicht mit, da ich meine Motorbrücke immer noch nicht repariert habe ...Code:#include <asuro.h> #define SPEED 0x90 #define LOW 600 #define HIGH 1900 int main(void) { unsigned int data[2],cnt,sum,mode; Init(); StatusLED(OFF); FrontLED(ON); MotorDir(OFF,FWD); MotorSpeed(0,SPEED); cnt=0; mode=0; for(;;) { LineData(data); sum=data[LEFT]+data[RIGHT]; ++cnt; if ((mode==0) && (sum<LOW)) mode=1; if ((mode==1) && (sum>HIGH)) break; PrintInt(data[LEFT]); SerPrint(";"); PrintInt(data[RIGHT]); SerPrint("\r\n"); MotorSpeed(0,255); Msleep(12); MotorSpeed(0,0); } MotorSpeed(0,0); PrintInt(cnt); SerPrint("\r\n"); while (1); return 0; }
Und hier das Messvideo (3gp / mpeg).
Hier die Meßwerte zum selber Auswerten:Und hier das Diagramm der Summe und Differenz der Meßwerte des linken und rechten Fototransistors bei IR-FrontLED:Code:990;968 984;968 985;962 981;966 985;968 976;963 984;966 985;962 981;967 985;968 976;965 984;967 984;960 980;965 983;952 976;956 980;959 979;942 976;950 971;944 868;924 744;914 643;901 522;866 458;835 392;785 362;755 331;710 307;657 299;622 275;566 275;514 262;393 271;289 281;235 287;205 343;183 450;178 543;183 675;185 748;179 848;183 944;186 973;202 972;213 980;250 972;283 980;326 983;353 980;403 984;460 984;555 982;644 984;734 984;772 982;820 985;822 972;860 984;883 985;896
Bild hier
Die Asymmetrie der Differenzen kann ich nicht direkt erklären (unterschiedliche Anbringung der Fototransistoren?), aber der Wertebereich von 500 bis über 1950 ist doch Klasse, oder?
Das mag für einen ganz normalen PID-Regler gelten, aber:Zitat von stochri
Ich bin zwar erst am Anfang des Verstehens der Regelungstechnik, und ich finde den Artikel in RN-Wissen (hier) sehr informativ!
Im Thread RobotChallenge-Linienfolgeprogramm von "myIrAsuro" habe ich einen Linienfolger mit einem ganz anderen Funktionsprinzip vorgestellt (state machine).
Wenn man jetzt einen Hybridalgorithmus aus PID-Regler und state (ON_LINE / OFF_LEFT / OFF_RIGHT) konstruiert, dann kann die Linie auch außerhalb des Fangbereichs wiedergefunden werden, oder nicht?
Hallo
Bin grad im Stress, deshalb im Telegrammstil:
Werte klasse - Asymetrie der Werte vermutlich wegen Rad als Drehpunkt ergibt unterschiedliche Radien der Transistorwege - wenn man weis, auf welcher Seite die Linie verlassen wurde kann man sie auch wiederfinden.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Die Asymmetrie kann man durch Trimmen (zurecht biegen der LED und Fototransistoren) beseitigen. Der Wertebereich ist nicht schlecht, aber ich würde den von stochri bevorzugen. Der hat mehr Reserven bis zur Begrenzung und hat auch ein größeres Verhältnis von max/min. Aber mit deiner Abschirmung ist die Reserve wegen Umgebungslicht kein Problem, das kannst du so lassen. Außerdem ist ein 2-Punkt-Regler da unkritisch.Zitat von HermannSW
Man kann einen klassischen PID-Regler auch mit anderen Varianten kombinieren oder umschalten. Z.B. eine Abfrage ob die Linie ganz verlassen wurde, dann den PID-Regler abschalten und mit Vollgas auf einem Rad zurück auf die Linie. Innerhalb des Fangbereichs wieder auf den PID-Regler umschalten.Wenn man jetzt einen Hybridalgorithmus aus PID-Regler und state (ON_LINE / OFF_LEFT / OFF_RIGHT) konstruiert, dann kann die Linie auch außerhalb des Fangbereichs wiedergefunden werden, oder nicht?
Ich habe vor einiger Zeit eine neue Auswertung (Funktion) des Liniensensors gemacht. Da hat die Kennlinie weit ab von der Linie immer Vollausschlag, da findet er auch mit meinem alten PD-Regler immer zurück auf die Linie. Hat sozusagen ein Gedächtnis auf welcher Seite er die Linie verloren hat. Bei Gelegenheit (wenn ich Zeit finde) stell ich das hier rein.
Waste
Lesezeichen