Regler bei Microcontroller

Gast #6842337
Lesenswert?

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?
#6842347
Lesenswert?

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
Gast #6842365
Lesenswert?

> 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
Gast #6842366
Lesenswert?

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.
#6842401
Lesenswert?

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
Gast #6842520
Lesenswert?

>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
}
Gast #6842592
Lesenswert?

Gast #6842599
Lesenswert?

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
Gast #6842684
Lesenswert?

>> 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...
Gast #6842710
Lesenswert?

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.
Gast #6842800
Lesenswert?

>>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.
Gast #6843028
Lesenswert?

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.
Gast #6843030
Lesenswert?

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.
#6843048
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren