Hallo, ich möchte eine Regelung für einen DC-Motor mit dem DRV8432 und einem STM32H7 umsetzen. Beim Motor handelt es sich um einen kleinen Brushed DC Motor. Ich habe lange nach einem passenden Baustein gesucht und mich für den DRV8432 entschieden. Auf dem STM32H7 möchte ich dann einen PID Regler implementieren. Der dann den Motor steuert. Jedoch bin ich anscheinend zu Blöd die Ansteuerung der Vollbrücke zu verstehen. Ich habe schon bei vielen anderen Herstellern gesucht wie die PWM-Ansteuerung umgesetzt werden muss. Ich bin da z.B. auf den DRV887036 gestoßen. 1. Gibt es beim STM32 für die PWM Ansteuerung von DC Motoren einen speziellen PWM-Mode der für Voll-Brücken geeignet ist? 2. Ich möchte am Ende 3 Motoren ansteuern benötige daher 2 ICs und somit 6 PWM Signale. Ist das überhaupt mit einem STM32H7 möglich oder hat dieser dann zu wenig PWM Signale? 3. Ist das richtig das ich einen Positiven Strom durch den Motor gebe wenn das PWM_1-Signale 70% High und 30% Low besitzt und das PWM_2 Signal genau invertiert ist? http://www.ti.com/product/DRV8432
Es müssen nie beide Ausgänge PWM-A und PWM-B gleichzeitig getaktet werden. Für die eine Richtung nutzt Du das Signal PWM-A und für die andere dann PWM-B. Oder Du nutzt nur PWM-A und schaltest die Richtung mit einem konstanten Signal an PWM-B um. Der STM32H7 sollte dabei noch nicht an seine Leistungsgrenzen kommen ;-)
Die STM32 haben "advanced" Timer. Die haben komplementäre Ausgänge die genau für sowas gedacht sind.
Ich hatte vorher auch immer nur einen PWM Ausgang zur gleichen mit Hilfe eines Funktionsgenerators eingeschaltet. Dann drehte der Motor in eine Richtung. Sofern ich dann den anderen PWM eingeschaltet hatte drehte der Motor in die andere Richtung. Das mit den advanced Timern ist schon mal ein guter Hinweis. Dann kann ich schon mal weiter danach schauen. Was ich halt noch nicht ganz verstehe ist folgendes: Wenn der PWM_1 70% high und 30% low ist, dann ist der PWM_2 30% low und 70% high. Sofern dann der PWM_1 70% high ist dreht der Motor in die eine Richtung da der Strom positive ist. Während der low Phase vom PWM_1 ist ja der PWM_2 high. Somit müsste der Strom durch den Motor doch dann negative sein und somit der Motor in die andere Richtung drehen. Das wäre dann doch total blöd weil er dann 70% von meinem Duty-Cycle in die eine Richtung dreht und 30% in die andere Richtung.
Vor allem wie mache ich das z.B. wenn ich den Motor anhalten möchte. Wenn ich z.B. in den PWM_1 0% schreibe dann hat der PWM_2 ja 100% und dann erreiche ich genau das gegenteil, dann dreht der Motor mit 100% Strom in die eine Richtung. Ich kann mit nur vorstellen das da denn ein PWM mit exakt 50% hilft, da er dann in 50% der zeit in die eine Richtung dreht und 50% in die andere Richtung. Aber da müste denn doch sehr viel Strom fließen.
Hmm, hast du da nun einen BLDC oder einen DC-Motor mit 2 Anschlüssen? Für den BLDC ist der o.a. Advanced Timer ein guter Tipp, für den einfachen DC Motor geht jeder Timer, dessen PWM Ausgänge auf Portpins zu routen sind. Michael schrieb: > Ich kann mit nur vorstellen das da denn ein > PWM mit exakt 50% hilft, da er dann in 50% der zeit in die eine Richtung > dreht und 50% in die andere Richtung. Aber da müste denn doch sehr viel > Strom fließen. Man nimmt 2 Portpins - einer davon PWM fähig. Der eine bestimmt die Drehrichtung, der andere die Power per PWM. An GPIOs dürfte es deinem H7 nicht mangeln.
:
Bearbeitet durch User
Hallo Matthias, ich möchte diesen Motor verwenden und eine PID Regelung bauen. https://www.scanlab.de/sites/default/files/PDF-Dateien/Data-Sheets/dynAXIS-EN.pdf Jetzt bin ich mir unsicher ob es ein BLDC ist
Auf jeden Fall würde ich, egal ob DC, BLDC oder Schritt ein passendes X-Nucleo dazu verwenden.
ist das nicht eher eine "einfache" Spule? Die Rückmeldung liefert max. +/- 19°. Da gibt es auch ein Scanlab Control Board zu, da wird einiges an know how drinstecken. Wenn so ein teurer Galvo drin ist dann doch sicher auch der Controller dazu. Hier ist das Forum für solche Teile: https://www.laserfreak.net/forum/viewtopic.php?f=11&t=58255&sid=1c159178f0e953ca3554e1186e8d4dd1
Ja da gibt es auch etwas vom Hersteller zu kaufen. Jedoch möchten wir unsere eigene Lösung implementieren. Ich habe schon ein STM32H7 Demoboard. Ich möchte noch einmal aufs Thema zurückkommen. Wir muss die PWM Steuerung für den DRV8432 aussehen? Müssen die Inverse sein und wenn ja wie muss es aussehen wenn ich den Motor anhalten möchte muss dann auf beiden PWM Signalen das Duty Cycle Verhältnis 50% sein und dann beide in Phase von 0°?
Hier wird der Ansatz mit einer ständig bestromten Spule mit schneller PWM mögl. der richtige sein. Ansteuerung mit zwei nicht überlappenden Signalen aus dem Advanced Timer. Jeder Ausgang treibt eine Halbbrücke. NB: Das sind keine Michael schrieb: > einen kleinen Brushed DC > Motor Die Funktion ist eher wie ein Drehspulinstrument aka Voice Coil.
:
Bearbeitet durch User
Hallo Matthias, wenn ich den Motor in eine Richtung fahren möchte, dann sollte ich das eine PWM-Signal einschalten. Sofern ich dann anhalten möchte beide PWM-Signale ausschalten. Für die andere Richtung dann die das 2. PWM Signal einschalten. Das Ganze soll ja dann mit 500kHz laufen. Ich überlege gerade ob ich die PWMs ganz ausschalte oder ob ich das Register für das Duty-Cycle Verhältnis auf 0% oder 1% setze.
narf schrieb: > Die STM32 haben "advanced" Timer. Die haben komplementäre Ausgänge die > genau für sowas gedacht sind. Ich denke, diese sind dafür gedacht, einzelne MOSFET Transistoren direkt anzusteuern. Die fertige H-Brücke braucht das nicht. > Ich überlege gerade ob ich die PWMs ganz ausschalte oder ob ich das > Register für das Duty-Cycle Verhältnis auf 0% oder 1% setze. 1% fände ich quatsch. Ob du die PWM Timer aus schaltest, oder auf 0% Duty Cycle stellst, ist letztendlich egal. Aber: Du kannst mit einem Timer mehrere Motoren ansteuern. Wenn du den Timer stoppst, bleiben alle daran angeschlossenen Motoren stehen.
Stefan ⛄ F. schrieb: > Ich denke, diese sind dafür gedacht, einzelne MOSFET Transistoren direkt > anzusteuern. Die fertige H-Brücke braucht das nicht. Auch ein H-Brückentreiber braucht passende Signale. Da die Advanced Timer im H7 drin sind (vermutlich ein ganzer Sack voll) muss man da nicht sparen. Vor allem können sie ohne Probleme hohe Wiederholfrequenzen und definierte Signale praktisch im Hintergrund liefern, ohne Rechenzeit zu schlucken. Da jeder Timer vier CCR Register und acht Ausgänge liefert, kann man also zwei Motoren pro Timer steuern. Michael schrieb: > wenn ich den Motor in eine Richtung fahren möchte, dann sollte ich das > eine PWM-Signal einschalten. Prüf auf jeden Fall erstmal, wie die 'Motoren' nun tatsächlich funktionieren. Wenn da was von 'Galvanometer' oder Voicecoil steht, dann sind es, wie o.a., keine Motoren, sondern Drehspulaktuatoren. Michael schrieb: > Das Ganze soll ja dann mit 500kHz laufen. Checke auf jeden Fall, ob Treiber und Endstufe sowas überhaupt verarbeiten können. Auch 30kHz wären vermutlich ausreichend.
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.