PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahl regeln mit geringer Encoderauflösung



bjoerng
28.10.2009, 13:24
Hi,

also "geringe Encoderauflösung" ist natürlich relativ, eigentlich finde ich meinen Encoder mit 1800 Impulsen pro Umdrehung schon ziemlich gut :-)

Mein Problem ist folgendes: Ich möchte eine Geschwindigkeitsregelung für einen differential getriebenen mobilen Robbi machen. Die Motoren steuere ich mit PWM-Signal zu einem Motor"regler" an (ist natürlich nur ein Motorsteuerer, da kein Meßeingang -- es handelt sich um einen Devantech MD22). Messen tue ich über den oben beschriebenen 1800-Impulse-Encoder und regle jetzt praktisch mit Sollwert = PWM-Wert und Istwert = Encodereingang.

Sagen wir als Vereinfachung mal, der Motor machte maximal 1 Umdrehung pro Sekunde. Ich möchte mit einer Frequenz von 100Hz nachregeln. Das heißt nach Adam Riese, ich messe in jedem Regelzyklus maximal 18 Ticks.

Jetzt zum Kern des Problems: Wenn ich mit den gegebenem Daten nur pro einzelnem Zyklus regle, gibt mir das nur eine Regelauflösung von 18 Stufen. Das ist nicht so super, ich hätte gerne eine deutlich höhere Auflösung -- hatte so an 8 Bit gedacht. Was tun? Das Problem muß ja eigentlich jeder haben, der digital Drehzahlen regelt, ich habe aber noch nirgendwo einen Lösungsvorschlag gefunden.

Bin für alle Vorschläge oder Rückfragen dankbar, ist nicht so ganz einfach zu erklären.

Gruß,
Björn

Netzman
28.10.2009, 14:14
Du musst die Zeit zwischen 2 Pulsen messen. Das Ergebnis kannst du über die 18 Messwerte mitteln.

mfg

justin
28.10.2009, 15:31
Ist es dann nicht sinnvoller gleich die Zeit für 18 Pulse zu messen? Das wär doch ein geringerer Softwareaufwand.

Justin

Netzman
28.10.2009, 15:51
Wenn die Regelung in einem festen Zeitintervall aufgerufen wird, kann natürlich die Anzahl der Pulse variieren, bei Regelintervall / Pulse kommt er wieder an den Ausgangspunkt.
Gut geeignet für die Zeitmessung wäre die Input Capture Unit.

mfg

oberallgeier
28.10.2009, 16:05
... Encoder mit 1800 Impulsen pro Umdrehung schon ziemlich gut ...Das sehe ich auch so. MiniD0 (R2D01) ist mein aktueller Zweirad-Roboter, der läuft aktuell mit 180 Encoderticks pro Radumdrehung und regelt recht ordentlich. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=450795&sid=24bbeb0e4d5d63bbb1cc2faddaeb89f4#450795) Im zitierten Thread ist zu meinen Bemühungen um die Regelung einiges beschrieben. Die zugehörige Theorie ist hier sehr schön dargestellt. (http://www.rn-wissen.de/index.php/Regelungstechnik)

bjoerng
28.10.2009, 16:27
Du musst die Zeit zwischen 2 Pulsen messen. Das Ergebnis kannst du über die 18 Messwerte mitteln.

*Patsch* (Hand gegen Stirn) Ich Depp. So rum geht's natürlich.

Vielen Dank.