Hallo, hättet Ihr eine Idee wie ich am besten die folgende Problematik löse? Ein DC-Motor wird über einen Arduino mit dem Motordriver DRV8833 angesteuert. Dieser Motor treibt eine Verstelleinheit an, an der sich keine Endschalter und Inkrementalgeber anbringen lassen. Daher die Überlegung die Endanschläge anzufahren und über den Stromanstieg die Endpunkte im Arduino festzuhalten. Positionieren würde ich dann über die Verfahrzeit. Hier meine Frage. Mit welcher einfachen Schaltung wäre dieser Stromanstieg zu messen? Der Motor wird mit 3,5V betrieben und nimmt 100mA auf. (PWM-Signal) Einfach gesagt denke ich da an einen Schmitt Trigger den man auf 110 mA etwa einstellen kann. Danke für eure Hilfe
Lass den Strom durch einen Widerstand fließen und messe den Spannungsabfall. > Einfach gesagt denke ich da an einen Schmitt Trigger > den man auf 110 mA etwa einstellen kann. Der würde auch beim Anlaufstrom auslösen. messe den Strom lieber mit einem analogen Eingang, dann kannst du per Software filtern.
Christoph W. schrieb: > Mit welcher einfachen Schaltung wäre dieser Stromanstieg zu messen? Vermutlich mit einem Shunt. > Der Motor wird mit 3,5V betrieben und nimmt 100mA auf. (PWM-Signal) Dann muss der Shunt umso kleiner sein, um nicht zuviel Spannung vom Motor zu schlucken. 100mV sollten OK sein. > Einfach gesagt denke ich da an einen Schmitt Trigger den man auf 110 mA > etwa einstellen kann. Quark. Wenn du einen Arduino hast, mißt man das mit dem AD-Wandler und macht alles in Software. Man braucht den Shunt, Verstärker und ein wenig Filterung.
Danke für Eure Antworten. Zum einen sollten es aber mehrere Motoren werden. Zum anderen hätte ich die Frage wie man dann mit dem Arduino hinter der H-Brücke misst. Ich dachte das hier das einfachste eine externer Schaltung pro Motor ist. Oder steh ich auf dem Schlauch?
Christoph W. schrieb: > Zum einen sollten es aber mehrere Motoren werden. Ja und? Dann verwende mehrere Widerstände und mehrere analoge Eingänge. Zur Erweiterung stehen Dir auch jede Menge externe ADC zur Verfügung, zum Beispiel der MCP3208 > wie man dann mit dem Arduino hinter der H-Brücke misst. Praktisch jede H-Brücke ist dafür vorgesehen, den Strom mit einem Widerstand zu messen. Entweder zum Nachrüsten oder bereits vorhanden. Wenn du so generisch fragst, kann man keine konkreten Antworten geben. > Ich dachte das hier das einfachste eine externer > Schaltung pro Motor ist. Keineswegs, weil du nach bisher unbekannten Kriterien filtern musst. Gerade deswegen bietet sich eine programmierbare Auswertung geradezu an.
Hier ist sogar rot markiert, wo man die Widerstände nachrüsten kann: https://www.pololu.com/product/2130/pictures
> Wenn du so generisch fragst, kann man keine konkreten Antworten geben. Ich habe bitte nicht generisch gefragt, denn im ersten Beitrag habe ich bereits den DRV8833 genannt. > Hier ist sogar rot markiert, wo man die Widerstände nachrüsten kann: > https://www.pololu.com/product/2130/pictures Diese sind doch da, um den Motorausgangsstrom zu begrenzen und nicht zu messen oder sehe ich dies falsch?
Christoph W. schrieb: > Diese sind doch da, um den Motorausgangsstrom zu begrenzen und nicht zu > messen oder sehe ich dies falsch? Beides. Der Motorstrom fließt durch diese Widerstände, also kannst du da auch messen, wie hoch er ist. Ab 200mV wird begrenzt. Siehe Datenblatt https://www.pololu.com/file/0J534/drv8833.pdf ab Seite 9
Mit einem Oszi solltest Du vorher die Huellkurvenverlaufe des Motors beim Festlaufen aufnehmen und beim wieder Losbrechen. Je nach dem Verlauf, geht Deine Loesung oder auch nicht ausreichend zuverlaessig.
Möglicherweise kannst Du auch ohne zusätzliche (analoge) Schaltungsteile die Overcurrent Protection (Kapitel 8.3.5.1 im Datenblatt) mit dem nFault Ausgang nutzen.
Christoph W. schrieb: > Der Motor wird mit 3,5V betrieben und nimmt 100mA auf. (PWM-Signal) > > Einfach gesagt denke ich da an einen Schmitt Trigger den man auf 110 mA > etwa einstellen kann Kannst du vergessen. .da ändert sich die Umgebungstemperatur, die Netzspannung oder das Öl verharzt und schon sind 120mA dein Normalwert. Im Anlaufmoment zieht der Motor genau so viel Strom wie beim Blockieren, er muss das Losbrechmoment überwinden und wenn der Anschlag eher ein Festfahren ist, benötigt der Motor den damals genutzten Festfahrstrom PLUS das Losbrechmoment um in die eigentlich freie Richtung loszulaufen. Man müsste den Strom recht genau messen, und bis zur Höhe des Blockierstroms, so auf 2% genau, und dann Anfahrstromspitze ignorieren, sich aber am Anschlag merken aus welcher Richtung man kam, damit man nur in die andere Richtung wieder losfährt, und dann den Normalstrom ermitteln um z.B. beim doppelten Normalstrom abzuschalten, falls der Normalstrom nicht sowieso zu sehr schwankt.
Du kannst auch um einen Reedkontakt etwa 20 Windungen (ausprobieren) 0,5mm Kupferlackdraht wickeln. Der Motorstrom fließt durch die Spule (egal in welcher Richtung) und der Reedkontakt wird an den Arduino angeschlossen.
Ach Du grüne Neune schrieb: > Reedkontakt etwa 20 Windungen Hast du die Beiträge zum Anlaufstrom und der Filterung gelesen?
Stefan F. schrieb: > Hast du die Beiträge zum Anlaufstrom und der Filterung gelesen? Mal ganz davon abgesehen, daß es IMMER irgendwie geht, Endschalter anzubringen, wo ist das Problem, in den ersten paar Millisekunden nachdem Anlaufen, die Motorstromüberwachung einfach nicht auszuwerten, wenn der Motor sowieso schon mit einem µC angesteuert wird?
Frank B. schrieb: > wo ist das Problem Um das Getriebe zu schonen würde ich keinen harten Anschlag verwenden, sondern eine Feder oder etwas anderes, was deutlich nachgeben kann. Die Software soll das Erreichen dieses Puffers daran erkennen, dass der Strom ansteigt. Dann soll der Motor stoppen, bevor das harte Ende erreicht ist. Da der Betriebsstrom nicht konstant bleiben wird, halte ich es für Hilfreich, den Strom nach dem Anlaufen zu messen und dann auf einen Ruckartigen Anstieg zu reagieren. Nicht auf einen absoluten Wert, wei das beim Reedkontakt, Schmitt Trigger oder dem Fault Ausgang des Motortreibers der Fall wäre. Bis zum harten Anschlag zu fahren wäre geplante Obsoleszenz für das Getriebe. Den Strom in den ersten Millisekunden beim Anlaufen zu ignorieren, ist kein Problem. Das muss man auch bei analoger Messung tun.
Stefan F. schrieb: > Frank B. schrieb: >> wo ist das Problem > [snip] Da stimme ich dir zu. Aber das Alles wird durch meinen Vorschlag, den Anlaufstrom einfach zu ignorieren nicht ausgeschlossen. Nur darauf habe ich mich bezogen, was aber (jetzt bei genauerem Nachdenken) nicht so deutlich rüber gekommen ist. Beim Auswerten des Stroms mit Software können alle die von dir genannten Messungen und Auswertungen durchgeführt werden.
:
Bearbeitet durch User
Stefan F. schrieb: > > Hast du die Beiträge zum Anlaufstrom und der Filterung gelesen? Na klar, deswegen schrieb ich ja, dass der Reedkontakt an den Arduino angeschlossen werden soll, damit der Anlaufstrom per Software ignoriert werden kann. Wenn man aber keine Lust dazu hat, kann man auch einen trägen Tiefpass zwischen Reedkontakt und Arduino schalten. Wenn man keine mittelalterlichen Reedkontakte verwenden will, kann man das natürlich auch mit einem Shuntwiderstand in der GND-Leitung von der H-Brücke und ein wenig Elektronikbauteilen und mit einer Portion Willenskraft schaffen.
Fuer einen DC Motor mags gehen, aber nicht fuer einen Stepper an DC.
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.