Hallo, ich möchte gerne ein Labormodell aus meiner UNI nachbauen, konkret ein einfaches Feder-Masse-System mit Positionsregelung (siehe Anhang) Gesteuert wird das Ganze mit einem Microcontroller (vermutlich ein AVR) und als Antrieb ein Schrittmotor mit einem Treiber wie den DRV8825. Ich habe mir das nun so gedacht, dass ich als Ausgang der verschiedenen Regelalgorithmen die Geschwindigkeit des Schrittmotor vorgebe. Der DRV8825 bekommt als Input Pulse für jeden neuen Step - also je schneller die Pulse, desto schneller die Geschwindigkeit. Nun zur eigentlichen Frage: Wie implentiere ich am besten Pulsgenerierung? Meine Idee wäre hier einen Timer mit Interrupt zu konfigurieren und das Compare Register in der ISR mit der aktuellen Speedrequest des Algorythmus entpsrechend zu setzen. Ist das ein guter Ansatz oder gibt es hier bessere geeignete Funktionalitäten von µC (muss jetzt auch nicht unbedingt ein AVR sein)? Bin dankbar für Tipps dazu!
Gast
#5891694
Ananas E. schrieb: > Wie implentiere ich am besten > Pulsgenerierung? > > Meine Idee wäre hier einen Timer mit Interrupt zu konfigurieren und das > Compare Register in der ISR mit der aktuellen Speedrequest des > Algorythmus entpsrechend zu setzen. Wenn Du die Größenordnung von - Pulse pro Sekunde - Puls-Pausenverhältnis - Genauigkeit kennst, dann kann darüber nachdenken, das in externer HW, interner HW oder SW zu machen.
Eine Positionsregelung setzt eine Istwerterfassung voraus. Ein Sensor fehlt aber in deiner Prinzipskizze?! Mit freundlichen Grüßen Thorsten Ostermann
Gast
#5893071
Ananas E. schrieb: > Der DRV8825 bekommt als Input Pulse für jeden neuen Step - also je > schneller die Pulse, desto schneller die Geschwindigkeit. Vielleicht solltest du dir darüber klar werden, wie man feststellt, ob irgendetwas schneller oder langsamer ist. Das tu man gewöhnlich, indem man die Geschwindigkeiten misst und vergleicht. Eine gängige Methode zur Bestimmung der Geschwindigkeit ist die Messung des Zeitintervals, die der fragliche Gegenstand für eine bestimmte Strecke benötigt. Der Differenzenquotient ist dann die Geschwindigkeit. So, und jetzt erklär mal, wie du feststellen willst, ob eine Geschindigkeit schneller oder langsamer ist.
Hallo Thorsten, die Positionsmessung erfolgt mit einem Inkrementalgeber bei der Umlenkrolle :)
Hallo my2ct, ich nehme an, du meinst beziehst dich gerade auf die Geschwindigkeit der Masse. In der Umlenkrolle ist ein Inkrementalencoder, damit weiß ich die Position. Die Position z und die Geschwindigkeiten dz/dt bzw. dy/dt werden dann mit einem Observer ermittelt. Auf eine direkte Messung der Geschwindigkeit über einen Timer möchte ich im ersten Schritt verzichten. Position sollte reichen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
