Hat wirklich keiner schon mal damit zu tun gehabt? Wie programiert ihr denn euere Lilienabtastung?
Hallo Leute,
ich habe hier mal ein Leitlinienprogramm geschrieben.
Leider bin ich mit dem Ergebniss garnicht zufrieden.
Er foldt der Linie nicht zuverlässig oder garnicht.
Ich habe 5 x CNY70 Sensoren nebeneinander.
Meine frage:
was würdet ihr anders machen damit er stabiler der Linie folgt?
Ich weiss, dass der Code ziemlich trivial ist aber ich bin neuling auf dem Gebiet.
Bitte um Hilfe.
Hier mal mein der entscheidende Teil des Codes:
An PortA hängen die Sensoren,
an PortB die Motoransteuerung.
Code:If Pina.5 = 0 And Pina.6 = 0 And Pina.7 = 0 Then Waitms 100 Portb.4 = 0 'beide Motoren vor Portb.5 = 1 Portb.6 = 0 Portb.7 = 1 Elseif Pina.5 = 0 And Pina.6 = 0 And Pina.7 = 1 Then Waitms 100 Portb.4 = 1 'Motor links vor, rechts zurück Portb.5 = 0 Portb.6 = 0 Portb.7 = 1 Elseif Pina.5 = 0 And Pina.6 = 1 And Pina.7 = 0 Then Waitms 100 Portb.4 = 0 'beide Motoren zurück Portb.5 = 1 Portb.6 = 0 Portb.7 = 1 Elseif Pina.5 = 0 And Pina.6 = 1 And Pina.7 = 1 Then Waitms 100 Portb.4 = 1 Portb.5 = 0 Portb.6 = 0 Portb.7 = 1 Elseif Pina.5 = 1 And Pina.6 = 0 And Pina.7 = 0 Then Waitms 100 Portb.4 = 0 Portb.5 = 1 Portb.6 = 1 Portb.7 = 0 Elseif Pina.5 = 1 And Pina.6 = 0 And Pina.7 = 1 Then Waitms 100 Portb.4 = 0 Portb.5 = 1 Portb.6 = 1 Portb.7 = 0 Elseif Pina.5 = 1 And Pina.6 = 1 And Pina.7 = 0 Then Waitms 100 Portb.4 = 0 Portb.5 = 1 Portb.6 = 1 Portb.7 = 0 Elseif Pina.5 = 1 And Pina.6 = 1 And Pina.7 = 1 Then Waitms 100 Portb.4 = 1 Portb.5 = 0 Portb.6 = 1 Portb.7 = 0 Else Portb.4 = 0 Portb.5 = 1 Portb.6 = 0 Portb.7 = 1 Waitms 100 End If
MfG Ich
-------------------------------------------------------------
http://www.lorenzschulz.de/Roboter.html
Hat wirklich keiner schon mal damit zu tun gehabt? Wie programiert ihr denn euere Lilienabtastung?
Also ich würde das ganz anders machen.
Erstmal sollten die Motoren über PWM geschwindigkeits-geregelt werden.
Weiterhin halte ich von Rückwärst fahren (oder auch ein Rad drehen) garnix; außer die Geometrie des Roboters/der Bahn lässt es nciht anders zu.
Dann würde ich aus den 5 Sensoren die mittlere Bahnposition ermitteln.
Also z.B. durchzählen wieviele nebeneinander liegende Sensoren 1 (true, wahr) sind. Dann noch den ersten mit 1 von irgend einer Seite ermitteln und die Hälfte der Anzahl der 1-er Sensoren dazurechnen. Jetzt noch - 2,5 Rechnen, und du hast schonmal nen Wert von -2,5 bis +2,5 in 0,5er Schritten. Jetzt kann man entweder nen linearen regler ansetzen, oder gleich nen PD-Regler. Ob letzterer mit den wenigen Sensordaten gut zurechtkommt, müsste man ausprobieren.
Hoffe mal du hast was verstanden und es geht so; viele Ansätze sind auch über die SuFo zu finden!
MfG; MK
nimm 3 sensoren. aus der mitte raus bis rechtsberührung oder aus der mitte raus bis linksberührung.
Danke für eure tips, ich habe das inzwischen so wie pebisoft vorgeschlagen hat gemacht jedoch mit 5 sensoren. das hat nun funktioniert.
Nur bei starken Kurven fährt er manchmal noch gerade aus. Aber das ist eine frage der Programierung, feinjustage...
Danke nochmal.
MfG Ich
-------------------------------------------------------------
http://www.lorenzschulz.de/Roboter.html
Lesezeichen