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.
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:
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.
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.
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?