Ich lese mich in Regelungstechnik ein und sehe, dass für digitale Regler eine ADU beim Mikrocontroller verwendet werden kann (anstelle analoge OPV), um dann eine Berechnung für Regler zu machen. Werden solche Berechnungen eigentlich mitgeliefert oder wie würde ich damit vorgehen?
Moin, Olli schrieb: > Werden solche > Berechnungen eigentlich mitgeliefert oder wie würde ich damit vorgehen? Nein, mitgeliefert wird da ueblicherweise nichts. Du musst gucken, wie schnell du regeln willst, also z.B. wieviele Werte pro Sekunde vom ADU geliefert werden/du von dort lesen musst. Dann musst du aus diesen gelesenen Werten, ggf. Werten aus der Vergangenheit und deiner Sollgroesse den Ausgangswert deines digitalen Reglers berechnen. Und das eben "regelmaessig"... Gruss WK
> OPV), um dann eine Berechnung für Regler zu machen. Werden solche > Berechnungen eigentlich mitgeliefert oder wie würde ich damit vorgehen? Nein, den Regler musst du schon selber programmieren und parametrieren. Ueblicherweise vermittelt dazu die Vorlesung Regelungstechnik im Nachrichtentechnikstudium die Grundlagen. Ersatzweise kann man vermutlich auch ein paar Buecher lesen. .-) Olaf
Olli schrieb: > Werden solche Berechnungen eigentlich mitgeliefert oder wie würde ich > damit vorgehen? Dafür gibt es ganze Vorlesungen über digitale Abtastsysteme und Regelungstechnik. Mikrocontroller sind (meist) kleine Chips in einem Plastikgehäuse, aus denen mehr oder weniger viele Beinchen raus gucken. Die Lieferung erfolgt in verschiedenen Verpackungen und dazu meist ein Label mit Hersteller, Typenbezeichnung, Bestellnr. usw. Sonst ist da gar nichts bei. Dazu gibt es vom Hersteller Datenblätter und Entwicklungstools (Entwicklungssystem, Bibliotheken, Anwendungsbeispiele). Diese Informationen sind meist alle übers Internet zugänglich, manchmal mit Anmeldung. Du solltest also zu deinem Mikrocontroller gucken, was es dazu gibt.
> .. Werden solche Berechnungen eigentlich mitgeliefert ?
YMMD ( you made my day )
Ohne E-Technik Studium, oder aehnlich, laeuft da wenig.
ja, ist schon klar, dass man E-Technik Grundkenntnisse benötigt. Gibt es besonders gute 32-Bit µC in dieser Kombination?
Moin, Olli schrieb: > ja, ist schon klar, dass man E-Technik Grundkenntnisse benötigt. Gibt es > besonders gute 32-Bit µC in dieser Kombination? Wie breit die Register/Adressraum eines µC sind, hat wenig damit zu tun ob er besonders "gut fuer Regelungen" gedacht ist. Koennte auch einen kleinen Unterschied machen, ob du die Position des Skalpells eines Hirnchirurgieroboters regeln willst, oder die Befuellung eines Muellautos... Gruss WK
Olli schrieb: > Ich lese mich in Regelungstechnik ein und sehe, dass für digitale > Regler ... Regelungstechnik im Rahmen eines Hobbys oder zur Ergänzung analoger MSR-Technik? evtl. das hier https://rn-wissen.de/wiki/index.php/Regelungstechnik mal durcharbeiten.
>Ich lese mich in Regelungstechnik ein und sehe, dass für digitale Regler >eine ADU beim Mikrocontroller verwendet werden kann (anstelle analoge >OPV), um dann eine Berechnung für Regler zu machen. Werden solche >Berechnungen eigentlich mitgeliefert oder wie würde ich damit vorgehen? Du kannst einfach einen Arduino Uno nehmen. Den Eingangswert schließt du an den Eingang A0 an und den Ausgang an den Anschluss 10:
1 | void setup() |
2 | {
|
3 | |
4 | |
5 | }
|
6 | |
7 | uint16_t Sollgroesse=100; |
8 | float P_Anteil=10.5; |
9 | |
10 | void loop() |
11 | {
|
12 | uint16_t input,output; |
13 | |
14 | input=analogRead(A0); |
15 | output=(Sollgroesse-input)*P_Anteil; |
16 | analogWrite(10,output); |
17 | |
18 | delay(100); // sampling frequency 10 Hz |
19 | |
20 | }
|
Andreas B. schrieb: > Eine simple P-Regelung für Arme. ;-) Na immerhin, nennt man einfaches Beispiel. Du darfst I und D und autotune erweitern. Es muss ja nicht immer ein fixer Kalman zur Lageregelung eines kleinen Quadrokopter sein.
Hi, danke für den Link, ist sehr verständlich geschrieben (brauch man fast kein Buch mehr) Falls Ihr noch mehr Infos habt, bitte teilen :-)
Zu doff für google ?! Beitrag "Regelungstechnik auf Mikrocontroller: Literatur" https://silo.tips/download/versuch-4-programmieren-von-regelalgorithmen https://www.ijee.ie/articles/Vol21-5/IJEE1687.pdf https://www.ti.com/download/trng/docs/seminar/Topic_7_Hagen.pdf In der Schweiz macht man sowas an der Schule: https://www.maturitaetsarbeiten.ch/cms/images/schuelerinnenarbeiten/PDF-Arbeiten_klein/Kong_Charpoan-compressed.pdf
Wenn du so etwas mit Spaß lernen willst, dann kaufe dir einen NiboBee Bausatz. Denn lässt du erst mal mit gleichen PWM Werten (z.B. 50%) auf beiden Motoren nicht geradeaus fahren. Dann überlegst du dir, wie du die Kurve begradigen kannst, auch bei wechselnden Untergründen und Batterie-Ladeständen. Damit hast du einen guten Einstieg in das Thema. Die nächsten Schritte sind dann komplexere Fahr-Manöver wie: * einer Linie mit möglichst hoher Geschwindigkeit folgen * Kurven schnell mit bestimmten Radius fahren ohne weg zu rutschen * Eine Bestimmte Strecke (z.B. ind Bad und wieder zurück) fahren, um am Ende wieder (fast) genau dort anzukommen, wo es los ging. * Rasch auf maximale Geschwindigkeit beschleunigen, um exakt an der Ziel-Linie anzuhalten. * Überlege dir, wie du auf 0,5 cm genau abbremsen kannst, obwohl die Odometrie-Sensoren nur alle 2 cm einen Impuls geben. Ich habe dabei eine Menge gelernt. http://stefanfrings.de/nibobee/index.html
MaWin schrieb: > Na immerhin, nennt man einfaches Beispiel. Mit delay, ja. Da rollen sich mir die Fußnägel hoch. Der TO tat besser daran, sich den genannten Artikel aus dem Roboternetz mal durchzulesen.
>> Zu doff für google ?!
Ja vielleicht, bei den vielen Ergebnissen...da wiederholt sich vieles
und richtig gute Quellen (mit einfache Beschreibungen auf das
Wesentliche reduziert) sind oft lange zu suchen...
von Andreas B. (bitverdreher) 09.10.2021 16:16 >MaWin schrieb: >> Na immerhin, nennt man einfaches Beispiel. >Mit delay, ja. Da rollen sich mir die Fußnägel hoch. Ja, das nennt man didaktische Reduktion oder die Reduzierung auf das wesentliche. Als Übungsaufgabe darfst du jetzt das delay(100) in Relation zur Ausführungsgeschwindigkeit der loop() auf dem Arduino UNO setzen und den relativen Fehler abschätzen, der sich bei dem P-Regler ergibt.
übrigens: Der gezeigte Code des P-Reglers enthält einen funktionalen Fehler. Mal sehen, ob ihn jemand findet ;-)
Kevin schrieb: > übrigens: Der gezeigte Code des P-Reglers enthält einen funktionalen > Fehler. einen? analogRead gibt Werte zwischen 0 und 1023 zurück, analogWrite erwartet Werte zwischen 0 und 255. falls Input > sollgroesse gibts interessante Effekte.
>>Wolle >>evtl. das hier https://rn-wissen.de/wiki/index.php/Regelungstechnik >>mal durcharbeiten. >Olli >Hi, >danke für den Link, ist sehr verständlich geschrieben (brauch man fast >kein Buch mehr) Falls Ihr noch mehr Infos habt, bitte teilen :-) Hier noch eine kleine Anekdode zu dem angegebenen Link: Der Artikel entstand nach längerer Diskussion im Roboternetz. Es war gefordert einen guten Linienfolger zu schreiben. Der User "waste" hatte hierzu den Asuro-Roboter im Detail analysiert. Losgegangen ist das mit der Modellbildung der Motoren, deren elektrischen Eigenschaften. Dazu wurden von mehreren Nutzern Messprogramme entwickelt, die den Roboter beschleunigt haben und die Messdaten dann per IR-Interface an den PC übertragen haben. Dann kam die Modellierung des gesamten Roboters hinzu. Danach der Reglerentwurf. Das ganze wurde mit SciCos modeliert http://www.scicos.org/ und die Regelungsschleife optimiert. Wenn man sucht, dürfte man im Roboternetz noch die ganze Entwicklung finden. "waste" war genial: Ich kenne nur ein paar wenige Leute, die ein System so gut analysieren, modellieren und in der Theorie die Regler dazu entwerfen können. Die ganzen Berechnungen wurden in "float" auf dem Atmeg8 des Asuros ausgeführt. Die Verwendung von "floats" hätte ich damals auf diesem kleinen Mikrocontroller vermieden, aber es hat sich gezeigt, dass die Rechengeschwindigkeit für die mechanische Regelung völlig ausreicht. Das Meisterstück war später das Balancieren der Asuro auf den Hinterrädern. Das ist deshalb so bemerkenswert, weil die Boden LEDs und die SFH300 Lichtsensoren als Abstandsensor verwendet wurden und diese natürlich völlig unkallibriert und von der Reflektiviät des Untergrund abhängen. https://www.youtube.com/watch?v=V0VxL2VqIWQ Wer sich für die Modellbildung und der Reglernwentwicklung auf Mikrocontrollern interessiert, dem ist das Durchlesen der Threads sehr zu empfehlen.
Hallo, //Ein kurzes Beispiel für einen PID Regler //Mit constraint könnte man die Überlaufe sichern int Messung, Messung_alt, Messung_uralt; //Reglereinstellung int DIFF = 2,3; int PROP = 5,2; int INTEG = 10; while(1) { P = (Messung + Messung_uralt) * PROP); I = Mess_alt * INTEG ; D = (mess - 2* mess_alt + mess_uralt) * DIFF; dau(D+P+I); //ausgabe; delay(5); //Messwerte in Array Schreiben mess_uralt = mess_alt; mess_alt = mess; mess = adu(EinPort); //analog ein } //Achtung: Das Programm ist nicht getestet.
Hallo, //Ein kurzes Beispiel für einen PID Regler //Mit constraint könnte man die Überlaufe sichern int Messung, Messung_alt, Messung_uralt; //Reglereinstellung int DIFF = 2,3; int PROP = 5,2; int INTEG = 10; while(1) { P = (Messung + Messung_uralt) * PROP); I = Mess_alt * INTEG ; D = (mess - 2* mess_alt + mess_uralt) * DIFF; dau(D+P+I); //ausgabe; delay(5); //Messwerte in Array Schreiben mess_uralt = mess_alt; mess_alt = mess; mess = adu(EinPort); //analog ein } //Achtung: Das Programm ist nicht getestet.
Kevin schrieb: > Als Übungsaufgabe darfst du jetzt das delay(100) in Relation zur > Ausführungsgeschwindigkeit der loop() auf dem Arduino UNO setzen und den > relativen Fehler abschätzen, der sich bei dem P-Regler ergibt. Du verwechselst mich mit dem TO. ;-) Ich weiß wie man Regler mit uC erstellt (die dazu noch viele andere Dinge parallel tun). Und zwar ohne delays und Arduinos. Ein delay in solchen Beispielen ist auch als Vorschlag schon schlecht. Die Leute nehmen das nämlich ernst, wie man an den vielen Beispielen im Netz sieht. Didaktisch reduzieren mag ja schön sein, aber man soll es wirklich nicht übertreiben.
MaWin schrieb: > Andreas B. schrieb: >> Eine simple P-Regelung für Arme. ;-) > > Na immerhin, nennt man einfaches Beispiel. Du darfst I und D und > autotune erweitern. > > Es muss ja nicht immer ein fixer Kalman zur Lageregelung eines kleinen > Quadrokopter sein. Kalman wäre aber nur der Schätzer, der Regler fehlt da noch
max123 schrieb: > Hallo, Was meinst du, warum für C-Code unter "Wichtige Regeln - erst lesen, dann posten!" unter "Formatierung" Code-Tags für C-Code aufgeführt sind?
max123 schrieb: > int DIFF = 2,3; > int PROP = 5,2; Über diesen Teil solltest du noch ein Mal GANZ schwarf nachdenken.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.