Forum: Analoge Elektronik und Schaltungstechnik 100 mA Schwellwertschalter für Arduino


von Christoph W. (christoph_4)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von Christoph W. (christoph_4)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Hier ist sogar rot markiert, wo man die Widerstände nachrüsten kann:
https://www.pololu.com/product/2130/pictures

von Christoph W. (christoph_4)


Lesenswert?

> 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?

von Stefan F. (Gast)


Lesenswert?

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

von Dieter (Gast)


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Ach Du grüne Neune (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Ach Du grüne Neune schrieb:
> Reedkontakt etwa 20 Windungen

Hast du die Beiträge zum Anlaufstrom und der Filterung gelesen?

von Frank B. (frank501)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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.

von Frank B. (frank501)


Lesenswert?

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
von Ach Du grüne Neune (Gast)


Lesenswert?

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.

von Dieter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.