Hallo, ich würde gerne einen DC Motor Controller auf Basis eines AtMega(328) bauen wollen. Grundsätzlich ist die PWM Ausgabe + H Brücke kein allzugroßes Problem. Allerdings würde ich gerne auch ein current limiting einbauen, um eventuelle Probleme Abzufangen, wenn der Motor zb. stecken bleibt und dadurch sehr viel mehr Strom braucht. Wie wäre das am sinnvollsten machbar? einen Widerstand in die Low Side FETs zur Strommmessung, und darüber an den Comparator des AtMega, und einen Interrupt aktivieren, sobald der Schwellwer überschritten wird und sofort den PWM abdrehen? Oder gibt es dafür einfachere Varianten? Ich würde gerne nach Möglichkeit mehrere Motoren mit einem AtMega betreiben, idealerweise 3 Stück ( 3x Timer gäbe es ja im AtMega328 ) Danke Rick
Rick schrieb: > Oder gibt es dafür einfachere Varianten? Die ist doch einfach. Man kann statt des AC auch ADC Kanäle benutzen, aber dann muss man die auch abfragen und mit Schwellwerten vergleichen. Der Haken ist der Kompromiss zwischen Ansprechgeschwindigkeit und Mittelung des gemessenen Stromes, denn der hat natürlich Spitzen, die nicht jedesmal zum Abschalten führen sollten.
Ja falls leistungsmässig z.B. der L298 in Betracht kommt, der hat auch I-Sense Eingänge -> siehe Datenblatt Ja über den ADC des mC oder einfach Schwellwert def. und mit einem Komperator auswerten -> So fäält die ADC-Auswertung weg. Du musst dann nur auf den Eingang des mC, den der Komperator ansteuert, pollen - oder besser: den Ausgang des Komperators auf einen der mc-Pins für externe Interrupts legen ...
Ein Low-Side Shunt hat das Problem, dass die B-E-Spannung der Low-Side Transistoren deiner H-Brücke sinkt. Oder er muss sehr klein dimensioniert werden, sodass du noch einen OP brauchst. So oder so hast du das Problem, dass du beim Messen (z.B. mit dem Oszi) verschiedene Massepotentiale hast, die du nicht zusammenschalten darfst. Ich würde eher an der High-Side den Strom messen, dann haben H-Brücke und µC dieselbe Masse. Mit dem LTC6101 o.ä. kann man dann bequem die Spannung level-shiften und verstärken.
Manche Controller, wie die STM32, haben einen extra Break Eingang, über welchen hardwareseitig die PWM abgeschaltet werden kann - so muss bei Überstrom nicht erst auf die Software gewartet werden, bis wirklich reagiert wird. Könnte man noch mit Übertemperatur machen.
Beim Anlaufen zieht jeder Motor ein vielfaches des normalen Stroms, und auch während des Betriebes sind kurze spitzen normal. Ich würde daher die Messwerte integrieren (meinetwegen auch analog mit Tiefpass) und nur dann abschalten, wenn der Strom länger als 2 Sekunden über dem Limit ist. Bei großen Konstruktionen (z.B. Waschmaschine, Schleifstein) könnte sogar mehr Zeit erforderlich sein.
Rick schrieb: > einen Widerstand in die Low Side FETs zur Strommmessung, und darüber an > den Comparator des AtMega, und einen Interrupt aktivieren, sobald der > Schwellwer überschritten wird und sofort den PWM abdrehen? Könnte man machen, reicht oft wenn es nur um Motorüberbelastung geht, ist aber zu langsam um den MOSFET zu schützen wenn die Motorleitungen einen Kurzschluss bekommen. Es gibt MOSFET-Treiber mit eingebautem Überstromschutz: MIC5020, IR2121
@ Stefan Us (stefanus) >Beim Anlaufen zieht jeder Motor ein vielfaches des normalen Stroms, Nur dann, wenn es die Ansteuerung und Stromversorgung zuläßt. >und auch während des Betriebes sind kurze spitzen normal. Das ist nicht allgemeingültig. >Ich würde daher die Messwerte integrieren (meinetwegen auch analog mit >Tiefpass) und nur dann abschalten, wenn der Strom länger als 2 Sekunden >über dem Limit ist. Quark. Das ist KEINE Strombegrenzung im Sinne einer Motorsteuerung! Denn die reagiert mikrosekundenschnell innerhalb einer PWM-Periode. >Bei großen Konstruktionen (z.B. Waschmaschine, Schleifstein) könnte >sogar mehr Zeit erforderlich sein. [ ] Du weißt, worum es hier geht. Ab einer bestimmten Leistung haben alle gescheiten Motorsteuerungen eine elektronische Strombegrenzung, die mal ganz sicher nicht erst nach mehreren Sekunden reagiert sondern als Schaltregler eine Konstantstromquelle bildet.
Ich werfe nochmal die Hall-Sensoren wie etwa ACS712 etc. in die Runde. Damit habe ich sehr gute Erfahrungen gemacht.
@Rick (Gast) >Wie wäre das am sinnvollsten machbar? einen Widerstand in die Low Side >FETs zur Strommmessung, und darüber an den Comparator des AtMega, und >einen Interrupt aktivieren, sobald der Schwellwer überschritten wird und >sofort den PWM abdrehen? Im Prinzip ja, praktisch eher nicht. Denn diese Methode setzt voraus, daß die PWM-Frequenz nicht zu hoch ist, damit die PWM-Abschaltung per Interrupt schnell genug läuft. Ich hab das mal bei 60 Hz PWM-Frequenz für einen einfachen DC-Motor gemacht, das war OK. Bei mehreren Dutzend kHz macht man das besser komplett in Hardware, sprich, der Komparator setzt ein externes RS-FlipFlop zurück, welches erst mit der neuen PWM-Periode wieder eingeschaltet wird. Einige moderne uCs haben das in Hardware bereits komplett eingebaut, z.B. der PICCOLO. >Oder gibt es dafür einfachere Varianten? Noch einfacher? Nö.
Stefan U. schrieb: > Beim Anlaufen zieht jeder Motor ein vielfaches des normalen > Stroms, und auch während des Betriebes sind kurze spitzen normal. > > Ich würde daher die Messwerte integrieren (meinetwegen auch analog mit > Tiefpass) und nur dann abschalten, wenn der Strom länger als 2 Sekunden > über dem Limit ist. > > Bei großen Konstruktionen (z.B. Waschmaschine, Schleifstein) könnte > sogar mehr Zeit erforderlich sein. Kann man machen, wenn es um den Schutz des Motors vor Überlastung geht, denn der ist thermisch limitiert und thermisch träge, S Bewertung der Messergebnisse möglich. Es taugt aber nicht, wenn es um Schutz der Elekrtonik geht, die ist in Microsekunden kaputt, da muss die Überstromerkennung ratz fatz abschalten bevor der Strom die SOA Grenze erreicht, oder ein Schaltnetzteil vor Übrrstromabschaltung bewahrt werden soll.
>> Beim Anlaufen zieht jeder Motor ein vielfaches des normalen Stroms, > Nur dann, wenn es die Ansteuerung und Stromversorgung zuläßt. Wenn die Ansteuerung es nicht zulässt, läuft der Motor nicht an. Obwohl, mit einer Kurbel könnte man da was machen ... > Quark. Das ist KEINE Strombegrenzung im Sinne einer Motorsteuerung > Kann man machen, wenn es um den Schutz des Motors vor Überlastung geht Was jetzt: Quark, oder kann man machen? Schauen wir nochmal, was das Ziel des TO ist: > würde ich gerne auch ein current limiting einbauen, um eventuelle Probleme > Abzufangen, wenn der Motor zb. stecken bleibt und dadurch sehr viel mehr > Strom braucht. Er möchte also eine mechanische Blockierung anhand der Stromstärke erkennen. Das kann man nicht in Mikrosekunden erkennen, insbesondere nicht beim Anlaufen. Mein Ansatz bezieht sich genau auf diese Anforderung. Zusätzlich kann ein Schutz vor Kurzschlüssen sinnvoll sein. Danach hat der TO aber nicht gefragt.
Hallo und besten Dank für all eure Antworten! 1) Es soll 1x ein Motor mit Nennleistung ~120W also 12V 10A gesteuert werden. Und dann 2x kleinere Motoren mit ~ 20W Nennleistung. 2) Ich wäre mit der PWM Frequenz eher in Richtung 200Hz gegangen, muss aber erst noch die Induktivität nachmessen ob das so sinn macht, ansonsten muss ich eventuell über den hörbaren Bereich (zumindest bei den beiden kleinen). 3) Das heißt ihr meint eine Auslösung über einen Interrupt ist zu langsam? Das sollte doch in wenigen Taktzyklen ~ 10 abgearbeitet sein, oder? 4) Schutz soll sowohl für die Elektronik bestehen (Kurzschluss der Leitung) als auch für den Motor selbst (stecken bleiben). Aber kann ich nicht mit einer Cycle by Cycle Strombegrenzung beide Fehler abdecken? Sollte der Motor stecken, wird der Strom doch auch zu hoch ansteigen, oder nicht? Werde das noch nachmessen bei einem Test. Ansonsten müsste ich über eine längere Zeit über einen ADC integrieren und abschalten - sollte auch kein Problem sein. 5) Ich hatte mir überlegt entweder 2x P - Channel FETs für die High Side zu verwenden, und nur die beiden N - Channel zu Takten oder aber High Side Treiber zu spendieren und auch für die schaltung der postiven Spannung (wird ja nur bei Richtungswechsel umgeschalten) einen N - Channel zu verwenden, da natürlich weniger RdsOn. Andere µC möchte ich eigentlich vermeiden, ich denke die AtMega sollten doch ausreichend sein für diese recht "simple" Anwendung. Könnte mir auch vorstellen, je Motor einen µC zu verwenden, sollte ich mit Timings oder Hardware Ports nicht zu recht kommen. Danke! Rick
Schau Dir den Anlaufstrom an. Dann wirst du sehen, dass du Kurzschluss und Blockierung unterschiedlich behandeln musst. Deine Rückfragen kann man nicht ernsthaft beantworten, weil es zu einer Rekursion führen würde. Deine Fragen wurden bereits diskutiert und somit geklärt.
Rick schrieb: > Schutz soll sowohl für die Elektronik bestehen (Kurzschluss der Leitung) Dann rechne mal aus, wie lange es dauert, bis nach dem Moment des Kurzschlusses der Strom durch den Transistor den Maximalstrom laut Datenblatt überschreitet. Gar nicht lange, nicht mal 1ps weil keine Induktivität den Stromanstieg begrenzt. Uups, Transistor kaputt. Immerhin haben Zuleitungen ein wenig Induktivität, 30cm hin, 30cm zurück, vielleicht 1uH, bei 12V steigt der Strom in 1us also um 12A, damit könnte 1us ausreichen, ein 16MHz AVR kann aus Komparatorinterrupt so schnell einen Ausgang abschalten, bleibt der MOSFET-treiber der mit 1A das Gate von 10nF umlädt um 10V, also 0.1us, ohne Treiber mit den 20mA eines uC Ausgangs kannst du das vergessen, in 5us ist der Strom über 60A höher und dein MOSFET kaputt. Es lohnt sich, vor den MOSFET eine Induktivität von wenigen uH zu basteln, damit der Stromanstieg im Kurzschlussfall verlangsamt wird und beherrschbar wird. Stefan U. schrieb: >>> Quark. Das ist KEINE Strombegrenzung im Sinne einer Motorsteuerung >> Kann man machen, wenn es um den Schutz des Motors vor Überlastung geht > > Was jetzt: Quark, oder kann man machen? Quark ist lediglich deine Art zu zitieren.
@Rick (Gast) >1) Es soll 1x ein Motor mit Nennleistung ~120W also 12V 10A gesteuert >werden. Der hat locker das 5-10fache an Anlauf bzw. Blockierstrom. Da MUSS man die Endstufe im Mikrosekundenbereich abschalten können (aka cycle by cycle current limiting) >2) Ich wäre mit der PWM Frequenz eher in Richtung 200Hz gegangen, muss >aber erst noch die Induktivität nachmessen ob das so sinn macht, Tu das. >3) Das heißt ihr meint eine Auslösung über einen Interrupt ist zu >langsam? Bei 200 Hz PWM mag es gerade noch gehen, bei mehreren kHz eher nicht. > Das sollte doch in wenigen Taktzyklen ~ 10 abgearbeitet sein, >oder? In Assembler, C braucht da meist noch mal 10-20 Takte mehr. >4) Schutz soll sowohl für die Elektronik bestehen (Kurzschluss der >Leitung) als auch für den Motor selbst (stecken bleiben). Aber kann ich >nicht mit einer Cycle by Cycle Strombegrenzung beide Fehler abdecken? Ja. >ich über eine längere Zeit über einen ADC integrieren und abschalten - >sollte auch kein Problem sein. Schützt dir aber nicht deine Endstufe. >Andere µC möchte ich eigentlich vermeiden, ich denke die AtMega sollten >doch ausreichend sein für diese recht "simple" Anwendung. Ist er auch, aber ein wenig Zusatzhardware ist nötig, um es gescheit zu machen. > Könnte mir >auch vorstellen, je Motor einen µC zu verwenden, sollte ich mit Timings >oder Hardware Ports nicht zu recht kommen. Nicht sinnvoll.
Endstufe fuer DC Motor mit PWM zu betreiben ist einfach : 1 MOSFET,1Diode. Kurzschlussfest, Ueberlast geschuetz usw da zeigt sich der wahre Künstler ! Beste Prüfmethode : Besenstiel in die Mechanik ! Da zeigt sich ob das Zeugs ordentlich funktioniert ! MikroController ist immer zu langsam um den schnellen FET zu jagen....
Hallo Leute, danke für Eure konstruktiven Rückmeldungen! Ich habe nun eine Schaltung "ersonnen" die wie ich meine ein schnelles cycle-by-cycle current limiting bereitstellt. Siehe Anhang. Habe es nur schnell skizziert, ohne auf exakte Werte oder Bauteile rücksicht zu nehmen. Ich vermute jetzt kommen wieder ein paar rhetorische Ohrfeigen, aber dessen muss ich mich stellen ;). Was mir aber nach wie vor unklar ist, ist die Erkennung von "Motor blockiert". Kann ich nun mit der cycle by cycle current limiting Methode auch diesen Zustand abfangen, oder nicht? Meines Erachtens müsste er doch so auch in eine Art Stromquellenmodus übergehen. Falk B. schrieb: >>ich über eine längere Zeit über einen ADC integrieren und abschalten - >>sollte auch kein Problem sein. > > Schützt dir aber nicht deine Endstufe. Aber lässt den µC den Zustand "Motor blockiert" erkennen, oder? @MaWin: Du schreibst es macht Sinn eine kleine Induktivität in die Leitung zum Motor zu schalten, habe das bislang bei noch keinen Schaltungen gesehen, ist das eine gängige Methode zum Schutz, oder eine Art Notlösung?
Rick schrieb: > Ich habe nun eine Schaltung "ersonnen Wenn man die Polarität der Signale beachtet, entspricht das dem handelsüblichen. Rick schrieb: > ist das eine gängige Methode Nein, die meisten Entwickler haben Angst davor, Streuinduktivitäten einzubauen, obwohl genau die die korrekte Lösung sind, wenn man ihre induktive Spitze abfängt (bzw. tolerieren kann).
Hallo, ich habe mit den Halbbrücken von Infineon, also zb BTS7960 gute Erfahrungen gemacht, ggf mal Datenblatt anschaen wegen max Strom und eingebauter Begrenzung etc
@ Rick (Gast) > cyclebycycle.png >Ich vermute jetzt kommen wieder ein paar rhetorische Ohrfeigen, aber >dessen muss ich mich stellen ;). Nicht ganz. Am Ausgang von IC1A fehlt ein Pull-Up Widerstand, denn der ist ein Open Kollektor Typ. Zwischen R1 und IC1A fehlt ein RC-Filter, mit dem man diversen Dreck und vor allem den Einschaltpuls vom Gate filtern kann. Du brauchst kein IC3, das FlipFlop kann das allein. Einschalten per Takt, Ausschalten per asynchronem CLR. Dazu muss D nur auf HIGH gelegt werden. Damit hat man auch positive Logik und muss nicht immer um die Ecke denken. CLR bzw. PRE dürfen NICHT in der Luft hängen! >Was mir aber nach wie vor unklar ist, ist die Erkennung von "Motor >blockiert". Ist nahezu identisch mit Einschaltstrom. >Kann ich nun mit der cycle by cycle current limiting Methode >auch diesen Zustand abfangen, Ja. >Meines Erachtens müsste er doch so auch in eine Art Stromquellenmodus >übergehen. Richtig. >> Schützt dir aber nicht deine Endstufe. >Aber lässt den µC den Zustand "Motor blockiert" erkennen, oder? Ja. >@MaWin: Du schreibst es macht Sinn eine kleine Induktivität in die >Leitung zum Motor zu schalten, Genauer. Zwischen MOSFET und Ausgangssteckverbinder. Damit kann ein harter Kurzschluß der Leitung abgefangen werden. > habe das bislang bei noch keinen >Schaltungen gesehen, ist das eine gängige Methode zum Schutz, oder eine >Art Notlösung? Naja, es ist streng genommen die bessere Lösung. Praktisch braucht man es dann nicht, wenn die Abschaltung WIRKLICH in wenigen Mikrosekunden (1-10) funktioniert, solange halten die meisten Leistungshalbleiter einen harten Kurzschluß aus. Siehe SOA-Diagramm. https://www.mikrocontroller.net/articles/FET#SOA_Diagramm
Wenn die Stromversorgung (Netzteil/Batterie) nicht mehr Strom liefert, als der Transistor kurzzeitig aushält, kann man sich den Aufwand mit dem Flipflop sparen.
@ Stefan Us (stefanus) >Wenn die Stromversorgung (Netzteil/Batterie) nicht mehr Strom liefert, >als der Transistor kurzzeitig aushält, kann man sich den Aufwand mit dem >Flipflop sparen. So wie deine immer hemdsärmeligeren Kommentare. Mann O Mann! Der OP will was SOLIDES bauen und nicht auf gummiweiche Stromversorgungen setzen!
Ganz richtig: Ein NT muss stehen... (Zitat: wie einst ein deutscher Soldat)
Die Arduino und 10x10 cm SolarPanel Generation kennt eben nur ''gummiweiche'' Spielzeuge..... Die Induktivitaet zwischen Fet und Ausgangsklemme habe ich in einer 'Qualitätsendstufe' gesehen.Ich kann bestätigen, dass das eine wirksame Loesung ist.
Stefan U. schrieb: > Wenn die Stromversorgung (Netzteil/Batterie) nicht mehr Strom liefert, > als der Transistor kurzzeitig aushält, kann man sich den Aufwand mit dem > Flipflop sparen. Selbst wenn das Netzteil dauerhaft nicht den Strom liefern kann, ein Peak Strom in einiger ms kann den Stellglied gnadenlos killen. Unter Umständen reicht z.B ein Elko von 470 µF an der Stromversorgung für den Motor.
Na klar, die Strombegrenzung müsste schon von irgendwelchen Innenwiderständen kommen (vom Elko, den kabel, oder so). > So wie deine immer hemdsärmeligeren Kommentare. Mann O Mann! Von industriellen Anlagen habe ich in der Tat noch nicht viel gesehen, wohl aber von Sachen im Consumer Bereich. Und das es den auch mit erheblicher Stückzahl gibt, kannst auch du nicht leugnen. > Die Arduino und 10x10 cm SolarPanel Generation > kennt eben nur ''gummiweiche'' Spielzeuge > Es soll 1x ein Motor mit Nennleistung ~120W also 12V 10A gesteuert > werden. Und dann 2x kleinere Motoren mit ~ 20W Nennleistung. Kleiner Hinweis nebenbei: Die Motoren von Modellautos nehmen üblicherweise kurzzeitig deutlich mehr Strom auf. Und dort wird tatsächlich der Innenwiderstand des Akkus und der Leitungen zur Strombegrenzung verwendet. Auch die Leistungsregelung der mir bekannten Elektrowerkzeuge kommt ohne Kurzschluss-Schutz aus.
Stefan U. schrieb: > Kleiner Hinweis nebenbei: Die Motoren von Modellautos nehmen > üblicherweise kurzzeitig deutlich mehr Strom auf. Und dort wird > tatsächlich der Innenwiderstand des Akkus und der Leitungen zur > Strombegrenzung verwendet. > > Auch die Leistungsregelung der mir bekannten Elektrowerkzeuge kommt ohne > Kurzschluss-Schutz aus. Daher geht deren Motortreiber auch kaputt, wenn die Motorzuleitungen durch irgendeinen unglücklichen Umstand einen Kurzschluss haben. Kann man bei Jubelelektronik so machen.
Hallo Rick! Du bist in deinem Vorhaben bestimmt schon weitergekommen. Ich habe mal vor Jahren eine kleine Arduino Motorsteuerung mit 6KHz PWM Signal, DC12V-4A Motor bauen müssen. Habe den LMD18200 Statt L298 Verwendet, da dieser MOSFET Ausgangsstufe hat. Die Spannungsabfall an ihm ist geringer wie bei Bipolargegner L298 und dadurch die verlustleistung auch geringer. War wichtig wegen der Kühlung in dem Gehäuse! Nun die Strombegrenzung wurde bei mir mit OP-Integrator und nachgeschaltetem Komparator realisiert. Der Sensor ist ein gewöhnlicher Schunt von 0,22Ohm, bzw bei LMD18200 eingebaut, siehe Datasheet! In diesem Zusammenhang möchte ich Dir ein Projektarbeit (aus dem Web) über einem Class-D Verstärkerentwicklung zeigen. Class D benutzt als leistungsteil mit H-Brücke und mosfets, mit Schuntwiderstand als Stromsensor. Auf der Seite 20 ist die Überstromerkennung beschrieben. http://www.widatec.com/CAE.pdf Viel Spaß!
...Nachtrag, DC Motor PWM H-Brücken Ansteuerung...
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.