Der link ist mir oben nicht aufgefallen, ich kenne ihn aber und wollte ihn schon vor längerem mal lesen. Das werde ich dann jetzt tun.
Liege ich eigentlich Prinzipiell richtig mit meiner überlegung?
Hi Fred,
Den ersten LInk hatte ich mal gesehen und dann gesucht und gesucht . . . . . Das ist ja das ultimative Ding. Zwar Assembler (hatte ich letztes Jahr etliche hundert Zeilen geschrieben) - aber die Grafiken zeigen ja, wo´s lang geht. Und die Motoren sind wohl die von den Servos, oder? Zumindest sehen die aus meinen Servos so aus:Zitat von fhs
............................Bild hier
Leider kenne ich die Sensoren nicht, die auf dieser Briefmarke verbaut wurden. Die würden mich sehr interessieren, nach denen Suche ich auch. Übrigens ist dieses Rennplättchen schon wegen des minimalistischen Schaltungsaufwandes bewundernswert.
Hast Du so etwas gebaut?
Geändert von oberallgeier (17.10.2016 um 09:38 Uhr)
Ciao sagt der JoeamBerg
Der link ist mir oben nicht aufgefallen, ich kenne ihn aber und wollte ihn schon vor längerem mal lesen. Das werde ich dann jetzt tun.
Liege ich eigentlich Prinzipiell richtig mit meiner überlegung?
Hallo Joe und BlackDevil,
gebaut habe ich so etwas noch nicht, habe es aber vor. Im Prinzip will ich nur den mechanischen Aufbau grob übernehmen und den Rest (Sensoren und Software) selbst machen; plane auch eine H-Brücke für jeden Motor, damit das Teil auf der Stelle rotieren und rückwärts fahren kann. Anstelle der Sensoren kann man sicher SMD-LEDs in Kombination mit SMD-Fototransistoren (evtl. die im schwarzen Gehäuse, die bevorzugt IR durchlassen) nehmen (muss eigentlich nicht mal SMD sein, obwohl ich das bevorzuge). Als Motoren Handy-Vibrationsmotoren (z.B. bei Pollin zu bekommen). Ich habe hier mal einen Link zu Methoden zum Entfernen der Unwucht von diesen Motoren gepostet und dort auch ein Bild von meiner Methode eingestellt (modifizierter Ritzelabzieher). Motor-Durchmesser: ca. 6mm.
Ein PD-Algorithmus sollte (wie bei dem zitierten Mini-Linienverfolger aus Japan) optimal sein.
Viele Grüße
Fred
Only entropy comes easy. - Anton Checkhov
PD oder PID Algorithmus sagt mir relativ wenig aber der scheint zum Regeln des Kreises (ist ja ein Regelkreis) ziemlich gut zu sein. http://de.wikipedia.org/wiki/Regler#PID-Regler auser dem finde ich nichts und ich steh ein wenig auf dem Schlauch wie ich das Programmieren soll.
Das Assembler File habe ich mir mal angesehen aber da versteh ich nur Bahnhof ^^
Hi,
Microchip hat hier eine komplette C-Software für einen PID-Regler (natürlich für einen PIC) publiziert; es gibt noch viele ander Beispiele im Netz, z.B. dieses gute Tutorial.
Viele Grüße
Fred
Only entropy comes easy. - Anton Checkhov
Dann guck Dir das mal an. Ich hatte mir mit dieser Hilfe einen Regler gebaut, der zwei ziemlich ungleiche Motoren - Zeitkonstanten 12 und 8 ms - prächtig gleich laufen lässt. Und das ohne floating point - aber in einem genauen 100 Hz Takt.Zitat von BlackDevil
Na ja, geht mir auch soZitat von BlackDevil
![]()
Ciao sagt der JoeamBerg
Ich freu mich auf Regelungstechnik im vierten Semester, im moment ist das doch sehr sehr harter Tobak *g* Aber ich schaus mir mal an - ansonsten wird das erste Projekt eben nicht direkt ein Linienfolger *g*
Edit: Ich muss zugeben ich versteh die PID Regelung nicht ganz. Ich gebe zu das es Sinn macht und ich es Brockenweise Verstehen kann - aber der C Code geht mir überhaupt nicht in die Rübe .... Alles etwas too much. Ich denke der einfachste weg - den ich einschalgen wollte - ist fürs erste der beste. Wobei ich da auch auf den Schlauch stehe weil ich mit 2 Sensoren kein Schönes Ergebnis erziele und mit 3en schon wieder sehr Kompliziert fahre ....
Als erstes Projekt mit 0 Ahnung von Regelungstechnik ist das viellicht doch nicht geeignet ...
Edit:
Bild hier
Das ist doch sowas wie ich es im Prinzip gesucht habe: Linie da - Linie nicht da. Jetzt bleibt nur die Frage: Was ist wenn die Linie halb da ist? Ich denke ich bau den Spaß einfach mal auf und schau was passiert. Ansonsten kann man damit mit 3 Sensoren alles abdecken denke ich und es ist einfacher als ein Dynamisches Regelgungssystem![]()
Hi, BlackDevil,
Du freust Dich? ? ? Bist ein Masochist, oder ? Ich war irgendwie in die Klausurausgabe RT hineingeraten (wollte garnicht hin... 4Loch reichte mir völlig - siehe unten) "Ach SIE sind das. . .!" (...sagte der Assi. Da hatte ich dämlich geguckt) "Na ja, von 46 bearbeiteten Punkten sind 45 richtig - und sogar DIESE Aufgabe, die fast alle falsch haben! Warum haben sie nicht mehr Punkte bearbeitet?" Antwort: "Ach wissen sie - eine Woche Winterpiste ist mir lieber als ne 1 Loch in Regelungstechnik". Nun hatte ER dämlich gegucktZitat von BlackDevil
.
Tu das. Bitte. Es ist wirklich soooo easy - - wenn man es mal glaubt, dass es nicht schwer ist. Ich hatte mir dazu ein paar Notizen in den Ausdruck gemacht (um es besser zu verstehen):Zitat von BlackDevil
.............................Bild hier
Dann hatte ich auch mal die Sprungantwort gemessen.
.............................Bild hier
Einfach Motoren auf einen bestimmten Wert stellen, und Deine Geschwindigkeitsangaben so schnell festhalten, wie es nur geht. Danach ausgeben über die RS232 (dazu hat man die in der Entwicklungsphase) und z.B. Export nach Excel. Die Tangente an den Kurvenbeginn schneidet den maximalen Geschwindigkeitswert => daraus die Zeitkonstante ablesen. Die (maximale) Geschwindigkeit im Verhältnis zum Ansteuerwert gibt die Reglerverstärkung. <<== Diese Erklärungen sind hier stark vereinfacht, lies dazu das Tutorial.
Was kommt heraus? Dieser Code:Und damit läuft mein Miniroboter. Und jetzt sag noch mal, dass das schwer sei. Wirklich nicht (ok, ich hatte viele Tage für diese Erkenntnis gebrauchtCode:/* ============================================================================== */ /* === Regelungsroutine für Motor 12 ========================================== */ /* Die gemessene Zeitdifferenz Iz_diff0 zwischen zwei Encodersignalen aus extINT0 wird zur Regelung verwendet */ void rgl_mo_12(void) // Regelung für Motor 12 { if (stupsi12 <= 5) // Soll überhaupt gefahren werden? { OCR0A = 0; // Wenn nicht, dann PWM auf Null return; } tupsi12 = Iz_diff0; // Übernahme Iz-Wert in Regelung ndrz12 = stupsi12; // Sollwert Drehzahl if ( tupsi12 > 100 ) { tupsi12 = 100; } // Eingrenzen Encoderwert=Fehler abfangen idrz12 = 1000 / tupsi12; // Istwert Drehzahl ie_mot12 = ndrz12 - idrz12; // Vergleich => Regelabweichung iesum12 = iesum12 + ie_mot12; if (iesum12 < -10) { iesum12 = -10;} if (iesum12 > 500) { iesum12 = 500;} iy12 = iesum12/2; iy12 = iy12 + ie_mot12 + ie_mot12 + ie_mot12 + ie_mot12 + ie_mot12; // Diese Rechenoperation benötigt in float 0,20 bis 0,25 ms! // daher wird hier alles integer gerechnet if ( iy12 < 0 ) { iy12 = 0;} // PWM-Minimum abfangen if ( iy12 > 255 ) { iy12 = 255;} // und Maximum OCR0A = iy12; // Ansteuerung der PWM direkt return; } /* ============================================================================== */.
Ich hatte doch gesagt: fünf ist recht gutZitat von BlackDevil
.
So - nun noch etwas zur Entspannung. Soweit ich die Linienspezialisten verstanden habe, braucht ein Linienfolger keine Geschwindigkeitsregelung nach obigem Muster. Der wird auf die Abweichung von der Linie geregelt. Daher ändert sich schon ein bisschen was . . .
Trotz allem viel Glück und Erfolg
Nachtrag: Habe grad Dein Posting gesehen:
So findest Du Dich sicher gut rein. So ähnlich hatte ich vor ein paar Monaten auch angefangen.Zitat von BlackDevil
Geändert von oberallgeier (17.10.2016 um 09:43 Uhr)
Ciao sagt der JoeamBerg
Mein Problem ist derzeit zu verstehen was die Störgröße ist, wie die Berechnung Schlussendlich abläuft und wie ich 3 oder mehr Sensoren in die Regelstrcke unterbring, hier ist eigentlich immer die Rede von einem. Oder Summier ich die auf?
Ein Teil meines Ichs freut sich auf Regelungstechnik, weil es Interessant ist und vieles ermöglicht und mein Täglich Brot werden wird, ein anderer teil scheut davor weil es das erste Neue und richtig Schwere sein wird ...
https://www.roboternetz.de/wissen/in...gitalem_Regler
Das heißt ich gebe einen Wert w vor - welcher das ist weis ich nicht - und Bilde die Abweichung mit meinem Analogen Spannungssignal x von meinem Sensor
Danach geh ich einfach den PID Algorithmus durch, also Begrenzen, Differenzieren und Integrieren, Beschränke das ganze noch auf 8 Bit und freue mich meines PWM Signals im 8Bit Format.
Richtig verstanden?
Zitat von BlackDevil
... und das war ernst gemeint.Zitat von oberallgeier
Mein Browser (IE7) hat eine pfiffige Funktion: [Strg]-[f] - dann kommt ein lustiges Popup - da schreibste (wenn Du Dich endlich mal über den oben genannten Link bequemt hast) "Störgrö" rein, drückst auf [Weiter] und dann - ei guckk emol do - "Störgröße z: Eine von außen wirkende Größe, die eine Änderung des Istwertes der Regelgröße bewirkt und einen Regelvorgang auslöst. " - - - übrigens lohnt es, den Button [Weiter] weiter zu drücken - da kommt noch mehr. Das will auch gelesen sein.
Natürlich regelt ein Regler nur immer ein Objekt. Nix aufsummieren. Oder summierst Du beim Gehen die Schiefstellung beider Füße auf um einen Fuß richtig zu kriegen?Zitat von BlackDevil
Du machst abhängig von den Sensoren unterschiediche Aktionen. Nehmen wir an, Du hast die Sensoren l (links), m (mitte) und r (na was wohl). Die sind in dieser Reihenfolge ausgewertet: l m r als digitaler Wert "Sensor sieht Linie = 1" und "Sensor sieht keine Linie = 0".
001 . . also die Linie ist rechts -> entweder ist ein rechter Bogen zu fahren oder das Followline driftet links ab. Fazit: rechts Tempovorgabe verringern.
010 . . die Linie ist mittig. Alles ok. Fazit: Gib Gummi! Gib Gummi! Gib Gummi!
100 . . dies ist eine Übungsaufgabe. Löse sie selber.
Uuuuups - wirste sagen. Wo ist jetzt die Regelung, da hier nur Tempovorgabe steht? Die Regelung hat die Aufgabe, die vorgegebenen Geschwindigkeiten einzuhalten. ABER: setzt Dich in Dein Auto und gib 400 kmh vor. Wird problematisch. Fazit: die Tempovorgabe muss sinnvoll und erreichbar sein. Sinnvoll: daher wird beispielswese bei Sensorstatus 001 das Tempo rechts verringert - weil durch die Kurve nicht soooo schnell gefahren werden soll.
Das ist doch verständlich, oder?
Genau. W, die Führungsgröße, ist die zu fahrende Sollgeschwindigkeit (hast Du denn wenigstens meinen Code gelesen?). Aus dem analogen Spannungssignal wär es sinnvoll einen Wert für eine Ist-Geschwindigkeit abzuleiten (hast Du denn wenigstens meinen Code gelesen?). Sonst musst Du vorher aus Deiner Sollgeschwindigkeit einen Sollwert für Dein Spannungssignal ausrechnen: Du darfst ja nicht Äpfel mit Birnen vergleichen.Zitat von BlackDevil
So einigermassen. Blos mit den Leseempfehlungen hapert es.Zitat von BlackDevil
Ciao sagt der JoeamBerg
Lesezeichen