Hallo!
Ich bin auf der Suche nach einer kompakten H-Brücke, bei der ich EMK
messen kann, auf den DRV8870 von Texas Instruments gestoßen.
Was haltet ich von ihm?
- 3,6A
- 565mΩ Rds(on)
- bis 200kHz
- 6,5–45V VM
- SOIC8 Bauform (SMD, aber keine 16+ Pins für nur einen Motor)
- Keine weiteren Bauteile nötig (Außer Kondensatoren für VM)
- Ab 3€ (Mouser)
Datenblatt: http://www.ti.com/lit/ds/symlink/drv8870.pdf
Ist ein recht neuer Baustein, vermutlich nur deswegen noch nicht in der
H-Brücken Übersicht.
Soll ich den da mal eintragen? Der sticht ja durchaus hervor.
Nun noch zwei Fragen:
1. Ich meine, ich hätte im AVR Softwarepool mal einen
PID-Motortreiber mit EMK für Attiny861 gesehen.
Wie kann ich den (oder sowas ähnliches) wiederfinden, irgendwelche
Vorschläge?
2. Wenn ich beide Ausgänge öffne (High-Z), kann ich über Spannungsteiler
von den Motoranschlüssen nach GND und ein differentielles ADC-Kanalpaar
EMK messen, richtig? (Nach einer kurzen Wartezeit, bis sich die
EMK-Spannung aufgebaut hat.)
Für Antworten wäre ich dankbar, auch wenn ihr meine Vorstellung von EMK
komplett umschmeißt (wenn sie Falsch ist). ;)
Gruß, Tuxpilot
P.S.: Ich möchte einen L293 ersetzen, der an meinem Lernroboter zwei
ungleich belastete Motoren treibt. (Und kaputt ist...)
Den DRV8871 hatte ich mir auch schon mal aufgeschrieben als
nice-to-have, gibt es zu dem schon irgendwo Breakout-Boards wie zu den
DRV8801?
Wobei ich berichten kann, dass mir von den DRV8801 einige scheinbar
grundlos abgefackelt sind und immer gleich katastrophal, also mit
Kurzschluss durch die Brücke.
Von den Angaben kontinuierlich 1A und 2,8A Peak für die Pololu Boards
halte ich nicht mehr viel, mit einem Motor der im Betrieb 600mA
gebraucht hat sind die Dinger reproduzierbar abgebrannt.
So vielleicht 200mA würde ich den Dingern zutrauen.
Da versprechen die DRV8871 ja deutlich mehr und sind ein neueres Design,
vielleicht klappt es da ja auch mit dem 600mA Motor ohne rapide
Korosion.
Toralf W. schrieb:> ich finde den DRV8871 besser. Da braucht man zur Strombegrenzung keinen> niederohmigen Widerstand (Baugröße + Temperatur...).
Klasse, den nehm ich!
Den DRV8801 kannte ich auch schon, hat mir zu viele Pins.
Tuxpilot schrieb:> 1. Ich meine, ich hätte im AVR Softwarepool mal einen> PID-Motortreiber mit EMK für Attiny861 gesehen.>...
Servus,
ich glaube der Autor nennt sich: m&m´s oder m+n, k.A. Der ist einfach
unfähig den gleichen nickname zu nehmen.
Beitrag "Drehzahlregler für DC-Motor, ATmega48-328"
Jedenfalls, wozu willst du die EMK messen? Für eine Lageregelung oder
Drehzahlregelung? Ohne Kalibrierung ist es auch nur ein Schätzwert, dann
kannst du auch gleich den Luenberger Beobachter nehmen.
Der von dir genannte Chip sieht ganz OK aus. Die Schaltfrequenz sieht
ganz interessant aus, vorallem weil ich gerade so kleine portescap
Motoren mit 40µH hier liegen habe...
mfg
aSma>> schrieb:> ich glaube der Autor nennt sich: m&m´s oder m+n, k.A. Der ist einfach> unfähig den gleichen nickname zu nehmen.
War das nicht C&A oder P&C?
Der weiß wahrscheinlich selber nicht, wie er heißt.
Tuxpilot schrieb:> 2. Wenn ich beide Ausgänge öffne (High-Z), kann ich über Spannungsteiler> von den Motoranschlüssen nach GND und ein differentielles ADC-Kanalpaar> EMK messen, richtig? (Nach einer kurzen Wartezeit, bis sich die> EMK-Spannung aufgebaut hat.)
Keine kurze Wartezeit, sondern solange warten, bis (bevor) der nächste
PWM-Zyklus beginnt.
Die EMV hat eine Restwelligkeit, die man aber nicht per Software
glätten/filtern sollte. Das gibt nur Regelschwingungen bei Lastwechseln.
Der Motor mit seiner Rotormasse gleich die Welligkeit schon selber aus.
aSma>> schrieb:> Jedenfalls, wozu willst du die EMK messen? Für eine Lageregelung oder> Drehzahlregelung? Ohne Kalibrierung ist es auch nur ein Schätzwert, dann> kannst du auch gleich den Luenberger Beobachter nehmen.
Für eine Drehzahlregelung. Ich brauche keine bestimmte Drehzahl, sie
soll aber unter Belastung konstant bleiben. Also eine Lastregelung.
Was genau meinst du mit Kalibrierung? Das Verhältnis von Drehzahl und
EMK?
m.n. schrieb:> Keine kurze Wartezeit, sondern solange warten, bis (bevor) der nächste> PWM-Zyklus beginnt.
Das scheint mir bei meinen 40kHz nicht sinnvoll, da dürfte ich dann
einfach den Spannungsabfall über einen FET messen, und somit nur den
Motorstrom.
Meine Idee ist, den Treiber vor der Messung ausschalten, etwa 100μs
warten, messen und dann mit PWM weiter treiben. Das ganze 40 mal die
Sekunde.
Tuxpilot schrieb:> Für eine Drehzahlregelung. Ich brauche keine bestimmte Drehzahl, sie> soll aber unter Belastung konstant bleiben. Also eine Lastregelung.> Was genau meinst du mit Kalibrierung? Das Verhältnis von Drehzahl und> EMK?
Eine Lastregelung ist eine Drezahlregelung. Der "Zug" fährt immer mit
der gleichen Geschw. über Berg und Tal.
Ich weiß nicht wie genau deine Regelung sein soll. In Datenblätter
stehen alle Zeitkonstanten drin, sodass einer Umrechnung nichts im Wege
stehen sollte. Sonst musst du deinen Sensor auf die Geschwindigkeit
kalibrieren.
Wenn du nicht weiter kommst. Es gibt auch Tachogeneratoren, die auf die
Motorwellenenden montiert werden...
m.n. schrieb:> War das nicht C&A oder P&C?> Der weiß wahrscheinlich selber nicht, wie er heißt.
Was für eine Armut. M.n verarscht sich sogar selbst. Ist das jetzt
Selbstironie oder einfach nur zu heiß gebadet?
aSma>> schrieb:> Ich weiß nicht wie genau deine Regelung sein soll. In Datenblätter> stehen alle Zeitkonstanten drin, sodass einer Umrechnung nichts im Wege> stehen sollte. Sonst musst du deinen Sensor auf die Geschwindigkeit> kalibrieren.>> Wenn du nicht weiter kommst. Es gibt auch Tachogeneratoren, die auf die> Motorwellenenden montiert werden...
Das Datenblatt vom Motor? Gibt’s nicht... Steht auch kein Hersteller
drauf, nur so ein +-Symbol. Alles was ich weis:
- 3-poliger Eisenanker mit geraden Nuten
- 3V Nennspannung
- 2Ω Spulenwiderstand
- 250μH
- Bei 5V: 11.000U/min und 500mA im Leerlauf
- Abmessungen: 20mmØ x 24mm
Wird aber vielleicht noch ausgetauscht und einen extra Sensor möchte ich
nicht haben.
Hallo Rudolph,
> Wobei ich berichten kann, dass mir von den DRV8801 einige scheinbar> grundlos abgefackelt sind und immer gleich katastrophal, also mit> Kurzschluss durch die Brücke.> Von den Angaben kontinuierlich 1A und 2,8A Peak für die Pololu Boards> halte ich nicht mehr viel, mit einem Motor der im Betrieb 600mA> gebraucht hat sind die Dinger reproduzierbar abgebrannt.> So vielleicht 200mA würde ich den Dingern zutrauen.
Da kann aber TI bzw. der DRV8801 nichts dafür, dass liegt am Design von
Pololu. Die dürften streng genommen nicht einfach die max. Ratings aus
dem Datenblatt übernehmen, wenn ihr Kühlkonzept so schlecht ist, dass
die fertige Schaltung das nicht hergibt. Aber dann würde niemand die
Boards kaufen...
Mit freundlichen Grüßen
Thorsten Ostermann
Tuxpilot schrieb:> m.n. schrieb:>> Keine kurze Wartezeit, sondern solange warten, bis (bevor) der nächste>> PWM-Zyklus beginnt.>> Das scheint mir bei meinen 40kHz nicht sinnvoll, da dürfte ich dann> einfach den Spannungsabfall über einen FET messen, und somit nur den> Motorstrom.
Probiere es aus und berichte ;-)
> Meine Idee ist, den Treiber vor der Messung ausschalten, etwa 100μs> warten, messen und dann mit PWM weiter treiben.
Bleibt die Frage, was Du nach 100 µs an dem Motor messen kannst? Die EMK
vermutlich noch nicht.
> Das ganze 40 mal die Sekunde.
Das ist recht wenig für eine zügige Regelung. Ich hatte mit 200 - 400 Hz
PWM gearbeitet, womit man rund fünf- bis zehnmal schneller regeln kann.
Trotz der niedrigen Frequenz blieb der Motor recht ruhig.
Wenn Du mit nur einer Drehrichtung testen willst, kannst Du die erste
Schaltung mit ATmega48 und FET aufbauen und modifizieren. Da bekommst Du
schon einmal eine Einschätzung, was mit Deinem Motor geht - und was
nicht!
m.n. schrieb:>> Meine Idee ist, den Treiber vor der Messung ausschalten, etwa 100μs>> warten, messen und dann mit PWM weiter treiben.>> Bleibt die Frage, was Du nach 100 µs an dem Motor messen kannst? Die EMK> vermutlich noch nicht.>>> Das ganze 40 mal die Sekunde.>> Das ist recht wenig für eine zügige Regelung. Ich hatte mit 200 - 400 Hz> PWM gearbeitet, womit man rund fünf- bis zehnmal schneller regeln kann.m.n. schrieb:> Probiere es aus und berichte ;-)
OK, mach ich. Vielleicht morgen oder noch später, schreibe gerade am I2C
Interface des Roboters. (FEZ Cerberus, schreibt meine Schule so vor.)
Viel länger als 100μs möchte ich nicht warten, dann schläft der Treiber
ein.
Attiny13A, 841 und Atmega32 hätte ich zum testen da, kann der Atmega48
etwas besonders nützliches? (Meines Wissens nicht)
Abend,
ich nutze den DRV8871 mit 62,5kHz PWM. Zum messen schalte ich alle 5 ms
für 640µs die PWM ab. Gemessen wir 8 mal (daraus der Mittelwert)
begonnen wird mit der ersten Messung nach 320µs Pause. Treiber sleep
spielt keine Rolle, der wacht schnell wieder auf.
Damit bekommt man ausreichend genaue Werte um die Drehzahl nach regeln
zu können. Bei mir macht das übrigens ein Tiny85 mit interner 16MHz
(PLL).
LG
Thorsten O. schrieb:>> Wobei ich berichten kann, dass mir von den DRV8801 einige scheinbar>> grundlos abgefackelt sind und immer gleich katastrophal, also mit>> Kurzschluss durch die Brücke.>> Von den Angaben kontinuierlich 1A und 2,8A Peak für die Pololu Boards>> halte ich nicht mehr viel, mit einem Motor der im Betrieb 600mA>> gebraucht hat sind die Dinger reproduzierbar abgebrannt.>> So vielleicht 200mA würde ich den Dingern zutrauen.>> Da kann aber TI bzw. der DRV8801 nichts dafür, dass liegt am Design von> Pololu. Die dürften streng genommen nicht einfach die max. Ratings aus> dem Datenblatt übernehmen, wenn ihr Kühlkonzept so schlecht ist, dass> die fertige Schaltung das nicht hergibt. Aber dann würde niemand die> Boards kaufen...
Zu heiss war definitiv nicht das Problem, die sind verstorben bevor die
überhaupt heiss werden konnten, entweder gleich beim Einschalten oder
beim Umschalten der Drehrichtung.
Und immer gab es dabei einen Kurschluss durch die Brücke, was besonders
witzig ist wenn man das Ding nicht zum Testen an einem Labor-Netzteil
betreibt.
Ach ja, die sind auch verstorben mit Labor-Netzteil dran bei dem die
Strombegrenzung auf unter 2A eingestellt war.
Übrigens bei 12V.
Rudolph R. schrieb:>> Zu heiss war definitiv nicht das Problem, die sind verstorben bevor die> überhaupt heiss werden konnten, entweder gleich beim Einschalten oder> beim Umschalten der Drehrichtung.>> Und immer gab es dabei einen Kurschluss durch die Brücke, was besonders> witzig ist wenn man das Ding nicht zum Testen an einem Labor-Netzteil> betreibt.>> Ach ja, die sind auch verstorben mit Labor-Netzteil dran bei dem die> Strombegrenzung auf unter 2A eingestellt war.> Übrigens bei 12V.
Dann war der bulk Kondensator an der Versorgungsspannung wohl zu klein
und der Motor hat beim Bremsen zurückgespeist und die ZK Spannung über
das zulässige Maß ansteigen lassen.
Rudolph R. schrieb:> Ach ja, die sind auch verstorben mit Labor-Netzteil dran bei dem die> Strombegrenzung auf unter 2A eingestellt war.> Übrigens bei 12V.
Dann ist es vermutlich zu Überspannung an den Ausgängen gekommen. Heute
ist es ja 'incool', wenn man bei Applikationen Freilaufdioden an den
Ausgängen vorsieht.
Ferner dürften diese Winzlinge sofort Probleme mit der internen
Verlustleistung bekommen, falls die ext. Kühlung zu gering ist. Mit
einem Innenwiderstand von knapp 0,6 Ohm ist der Chip ganz fix
aufgeheizt. Erwarten würde ich von 'modernen' Treibern eher 50 mOhm.
Schön, daß man nicht jede Erfahrung selber machen muß ;-) Dann werde ich
wohl weiterhin auf den uralten L6201/03 setzen, sofern die
Versorgungsspannung >= 12 V beträgt.
Tuxpilot schrieb:> Attiny13A, 841 und Atmega32 hätte ich zum testen da,
Den Tiny13 hatte ich zuerst verwendet, geht also auch.
> kann der Atmega48 etwas besonders nützliches?
Der kann schnell (20 MHz), klein (28/32 Pin), viel
IO/Timer/ADC/USART/IIC und DIP ;-)
m.n. schrieb:> Heute ist es ja 'incool', wenn man bei Applikationen Freilaufdioden an den> Ausgängen vorsieht.
Da die Brücke komplett integriert ist und da nur OUT+ und OUT- raus
kommem, ist das etwas schwierig, da zusätzliche Freilaufdioden mit dran
zu packen.
Freilaufdioden braucht man bei integrierten MOSFET-Brücken vor allem, um
die Verlustleistung im Chip zu reduzieren. Wenn die Pololu-Boards schon
beim Einschalten sterben, liegt das Problem eher an zu kleinen
Puffer-Elkos (da sind aus Platzgründen meist nur ein paar Kerkos drauf)
und einer zu hohen Versorgungsspannung (bzw. zu wenig Reserve zur
Maximalspannung des Treibers). Gerade bei DC-Motoren sind die
Kondensatoren wichtig, weil bei schnellen Drehzahländerungen die Energie
irgendwo hin muss. Ins Netzteil kann meist nicht zurück gespeist werden,
also steigt dann die Versorgungsspannung an. Wenn die Elkos zu klein
sind, kann das erhebliche Spannungsspitzen verursachen.
@m.n.: Das ist kein Grund an Dinosaurieren wie dem L6203 festzuhalten.
Wenn man FET-Brücken vernünftig designed, gibt es da inzwischen deutlich
bessere Lösungen.
Mit freundlichen Grüßen
Thorsten Ostermann
Thorsten O. schrieb:> @m.n.: Das ist kein Grund an Dinosaurieren wie dem L6203 festzuhalten.> Wenn man FET-Brücken vernünftig designed, gibt es da inzwischen deutlich> bessere Lösungen.
Ein Blick auf Deine Seite zeigt mir sogar noch L298.
Dagegen ist der L6203 ja noch ein Baby ;-)
m.n. schrieb:> Dioden gegen V++ und GND für jeden Ausgang. Ich sehe da kein Problem.
Du hast völlig Recht, ich habe da ein Problem gesehen wo gar keines ist.
Das mit dem Elko werde ich dann auch mal im Hinterkopf behalten fürs
nächste Mal, da waren aber mindestens 100µF zusätzlich mit dran
geklemmt.
Hallo m.n.,
> Thorsten O. schrieb:>> @m.n.: Das ist kein Grund an Dinosaurieren wie dem L6203 festzuhalten.>> Wenn man FET-Brücken vernünftig designed, gibt es da inzwischen deutlich>> bessere Lösungen.>> Ein Blick auf Deine Seite zeigt mir sogar noch L298.> Dagegen ist der L6203 ja noch ein Baby ;-)
Auch den setze ich schon lange nicht mehr für neue Designs ein.
Bestehende Produkte muss man deswegen natürlich nicht über Board werfen,
so lange es eine Nachfrage dafür gibt.
Mit freundlichen Grüßen
Thorsten Ostermann