Ups...
Das sollte kein Smilie werden sondern ein ; und ein )
Ok,
in asuro.h finde ich diese Zeilen zwar nicht, aber wenn man es oben mit hinschreibt bleibt nur noch ein Fehler:
test.c:100: error: parse error before ';' token
und zwar in der zeile:
for (j = 0; j < 255; j++LineData(lineData);
Ansonsten Danke erstmal für die Antwort.
MfG Jacob
Ups...
Das sollte kein Smilie werden sondern ein ; und ein )
Genau dieses ; vor der ) in der for-Anweisung nach j++ ist zuviel.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ja, es funktioniert!!!
Aber ASURO fliegt in den Kurven manchmal raus. Was kann man da verbessern?
MfG Jacob
probier mal, das ganze etwas aufzudröseln:
[code]
for(j=0;j<255;++j){
LineData(lineData);
}
[code]
Du kannst versuchen, die PID-Parameter Kp und Ki anzupassen.Was kann man da verbessern?
Hallo zusammen,
im main() ist die von damaltor angesprochene Schleife über die Funktion LineData() um die Variable ADOffset zu füllen.
Diese Variable wird in der Funktion FollowLine () (Der Ursprung ist im übrigen wohl von waste nicht wahr?) dazu benutzt, um nun die Helligkeitsdifferenz auf der Linie beim 'wackeln' zu korrigieren.
Steht der Asuro beim Starten des Programm nun nicht genau mittig auf der Linie, holen wir uns beim Start vom main() diese falsche Position in den Regler.
Die Variable ADOffset sollte nicht benutzt werden! Ohne sie sucht sich der Asuro die Mitte der Linie selber und kann dann an dieser Position den besten Konrast, und damit die kleinste Abweichung vom Idealwert, sehen.
Dann funktionieren die PID-Vorgaben, die waste mühevoll in diesem Thread ermittelt hat, eigendlich extrem gut.
P.S.: Der original Code von waste, mit Kommentar, ist hier zu finden. Die PID-Parameter hatte waste ursprünglich mit: kp = 3; ki = 10; kd = 70; angegeben.
Hatt da jemand ki und kp vertauscht?
Allerdings gibt es von waste (für seinen Asuro) auch noch: kp=5; ki=5; kd=70; Damit läuft mein Asuro allerdings nicht so gut.
Diese Änderung, mit einer Codeverbesserung, hat waste hier abgelegt.
Somit hat ehenkes Recht, wenn er schreibt, dass da gedreht werden kann/soll.
Lieber Asuro programieren als arbeiten gehen.
Äh..
Wenn ich das richtig verstanden habe sind ki und kp vertauscht!?
Also einfach die werte tauschen oder?
Das mit ADOffset hab ich jetzt nich ganz verstanden, aber ok.![]()
MfG Jacob
@Jacob2
Das mit dem getauschten ki und kp kommt daher, dass das Original von waste diese Werte gegenüber den Angaben, die ich in ehenkes Post gefunden habe, getauscht hat.
So einfach ist das nicht mit dem Tauschen. Wie ehenkes schon geschrieben hat, sind das Werte, bei denen man 'probieren' darf. Wenn du die richtigen Werte anhand des Threads von waste nicht berechnen kannst, bleibt eben nur probieren über. (Ich habe meine Werte auch nicht berechnet. Ich kann das auch nicht nachrechnen, was bei waste steht. Habe einfach seine Werte übernommen.)
(Die mit Smilie versehen Frage sollte auch eher an ehenkes gehen)
Das mit den ADOffset ist nicht so wichtig, wenn du den Asuro beim Starten sehr genau auf mittig auf die Linie stellst.
Lieber Asuro programieren als arbeiten gehen.
Lesezeichen