Forum: Mikrocontroller und Digitale Elektronik L293 + ATTiny85, Spannungseinbruch unter Last


von Stefan K. (sdwarfs)


Lesenswert?

Hallo,

ich versuch hier gerade eine billige "Autorennbahn" zu tunen, die für 
meine Nichte und den Neffen bis Weihnachten fertig werden soll. Daher 
wären schnelle Antworten gut...

Die folgenden ähnlichen Artikel im Forum habe ich schon gelesen:
Beitrag "L293B Problem"
Beitrag "Stützkondensator berechnen"

Der erste schien eher das Problem zu betreffen. Der letztere hat mir so 
direkt nicht weiter geholfen...

Wer sich für das "Warum so kompliziert?" und das "Wieso überhaupt?" 
nicht interessiert, überspringt am besten den folgenden Teil bis zur 
Überschrift "Aktueller Ansatz"....


Ursprünglicher Aufbau:
======================
1. Jeweils eine 1,5V Mono-Batterie mit Taster in Reihe in jedem 
Steuergerät. In Reihe dazu die Gleise (und damit der Motor des 
Rennwagens) der Rennbahn.

Problem: 1.5V reichen zum fahren, aber nicht dazu dass die Autos so 
schnell fahren, dass es aus der Kurve fliegt. Damit gewinnt also immer 
der mit der volleren Batterie bzw. dem wegen Fertigungstolleranzen 
geringfügig besseren Motors. Also: Ziemlich langweilig...


Vorherige Ansätze:
==================
* Eine 9 Volt-Batterie im Steuergerät war zu krass...
* Sämtliche mit Spannungsreglern scheitern an deren zu niedrigen 
(Temperaturabhängigen) Leistungsbegrenzung. D.h. der Spannungsregler 
erhitzt sich mit der Zeit ... außerdem macht eine 9V-Block-Batterie 
recht flott schlapp (nach 10 Minuten is Ende)
* Strombegrenzung durch Widerstände (~10 bis 15 Ohm in Reihe) war ebenso 
wegen zu hoher Leistung und Temperaturabhängigkeit nicht sehr 
erfolgreich. Ich hatte zwar 4-5 Widerstände (je 250mW) parallel 
geschalten, aber die Temperaturabhängkeit war nicht weg zu bekommen.


Aktueller Ansatz:
=================
* Spannungsversorgung über Netzteil (5V, max. 1.5A)
* ein ATTiny85-20PU zur Erzeugung einer PWM
* von Handgeräten wird nur der Taster benutzt
* ein L293D(NE) als Motortreiber

Problem:
Die Schaltung und Software funktioniert prinzipiell solange man den AVR 
an einer getrennten Spannungsversorung hängen hat. Direkt am Netzteil 
angeklemmt, scheint die Versorgungspannung des AVRs kurzzeitig 
einzubrechen sobald eine Last am Ausgang des L293D ist. Bei Versorung 
des AVR über 9V-Blockbatterie + Spannungsregler (78L05AC) scheint alles 
super zu funktionieren.

Beschreibung der Schaltung:
Da die Schaltung recht wirr aussieht, gibts die Beschaltung als 
Beschreibung...

1. L293DNE:
* mit VCC2 + GND direkt an das Netzteil angeschlossen
* VCC1 an VCC des Attiny45
* Eingang "1A" direkt an VCC1 (Logical: HIGH)
* Eingang "1,2EN" bekommt PWM-Signal vom ATTiny45 (pin 0)
* Motor hängt an Ausgang "1Y" + GND
* selbes Spielchen für zweiten Motor (über "4A" = HIGH, "3,4EN" = PWM 
von ATTiny pin1, Motor an "4Y" + GND)
* GND ist mit GND vom Netzteil verbunden
* Keine Kondensatoren oder weitere Dioden.

2. ATTiny45:
* hing vorher auch direkt am Netzteil, jetzt: Netzteilspannung VCC2 mit 
100µF Elko gepuffert, dann Spannungsregler (78L05AC) dran und dahinter 
ein 1500µF Elko == VCC1
* pin 3 und pin4 sind auf INPUT_PULLUP gesetzt und bekommen über die 
Taster (mit GND und jeweil pin3 oder pin4 verbunden) ihr Steuersignal
* An den pins 0 und 1 wird dann in Abhängigkeit des dazugehörigen 
Steuersignals (vom Taster) PWM-Signal erzeugt; dieses ist 0% duty cycle 
am Anfang (Stillstand) und springt von 0% direkt auf 25% sobald der 
Taster betätigt wird. Danach steigt es an bei weiterer Betätigung und 
fällt 3 mal so schnell beim loslassen des Tasters (nachlaufen). Eingänge 
werden aller 10ms ausgewertet. Der PWM-duty-cycle wird aller 100ms 
aktualisiert.
* pin0 und 1 werden mit je einem 100kOhm-Widerstand auf GND gezogen, 
damit beim "StartUp" die Pins nicht wegen "floating input" vom L293D als 
HIGH gewertet werden und dann die Autos wie ein Geschoss von der Bahn 
fliegen.
* GND ist mit GND vom Netzteil verbunden.
* RESET-Pin ist "floating" (Verbindung hart an VCC bringt keine 
Verbesserung) für Programmierbarkeit in der Schaltung.

Beobachtungen:
1. L293D - das PWM-Signal scheint nur an den Pins "EN1,2" und "EN3,4" 
sauber zu funktionieren. Bei "EN1,2" auf HIGH und "1A" mit PWM-Signal 
scheint es Probleme zu geben.
2. Am Spannungsregler-Ausgang (78L05AC) messe ich 3.60 Volt. Laut 
Datenblatt sollten das eigentlich 5V sein. Ich nehme an, dass ist der 
minimale Drop-Out (1,4 Volt), weil die Eingangsspannung nur 5Volt ist.
3.Ein Spannungs-Regler mit 2Volt (78L02AC) scheint nicht zu 
funktionieren. Wahrscheinlich weil der Minimale HIGH-Pegel des L293D 
2,3Volt ist. Ich messe zwar 2,5V hinter dem Spannungsregler... nen 
3Volt-Regler hab ich leider nicht. Kann ich ggf. kaufen oder über 
Spannungsteiler realisieren.
4. Bei VCC1=VCC2 (keine Spannungsregler / Puffer) hört man nur ein 
Rattern, eine Test-LED an "1Y" des Motortreibers (parallel zum Motor) 
flackert nur kurz auf.
5. Mit VCC1 = (9V-Batterie + Spannungsregler ohne Kondensatoren) 
funktioniert alles tadellos. Es scheint also die Eingangsspannung sehr 
weit einzubrechen und im ATTiny wird dann ein Reset ausgelöst.
6. Lasse ich den 100µF-Elko vor dem Spannungsregler weg (nur 1500µF 
dahinter), fährt das Auto nur ruckelig (gefühlt: Spannungseinbrüche im 
Halb-Sekunden-Takt, wird dann aber schneller)
7. 1500µF-Elko vor dem Spannungsregler und 100µF funktioniert nicht.
8. Ein Elko + Standard-Diode (1N4148) statt dem Spannungregler hat nicht 
funktioniert. Ich wollte per Diode den Stromfluss nur Richtung 
Kondensator / ATTiny45 erlauben und der Kondensator sollte die Spannung 
während der kurzen Spannungseinbrüche stabil halten... vielleicht war 
der Kondensator aber zu klein (hatte glaub ich nur 100µF genommen)?


FRAGEN:
=======
Ja, ich habe eine Lösung gefunden, die so irgendwie funktioniert. 
Allerdings hab ich das Gefühl, dass der 1500 µF Elko nicht ganz 
ausreicht (gefühlt: noch ganz leichtes Ruckeln beim Anfahren) und in 
folge von Alterung irgendwann nicht mehr ausreichen wird. Außerdem habe 
ich es nur mit einem Auto probiert und weiß nicht, wie sich das verhält 
wenn da zwei Fahrzeuge gleichzeitig anfahren...

Leider habe ich kein Oszilloskop, um den Spannungsverlauf zu messen.
Möglicherweise fehlt mir aber einfach nur eine Entstörung an anderen 
Bauteilen (Motoren, ICs oder ähnliches). Die zwei aufgezählten 
Kondensatoren am Spannungsregler sind die einzigen. Die Fahrzeuge habe 
ich noch nicht geöffnet. Ich gehe aber davon aus, dass da einfach 
Mabuchi-Motoren drin sind die direkt am Gleis hängen.

Hat jemand einen Fehler entdeckt?
Kann man das Problem evtl. einfacher lösen?
Den Anfangstrom der Motoren zu begrenzen wäre eine Idee. Dann brauch ich 
aber Leistungswiderstände, die so 1,5 Watt mitspielen ohne sich 
großartig zu erwärmen...
Vielleicht kann man auch die Motor-Steuerung irgendwie "intelligenter" 
lösen (z.B. für x Millisekunden 100% duty-cycle fürs anlaufen und erst 
dann die normale PWM oder keinen Sprung von 0% auf 25%)? Ich nehme aber 
an, dass bei jeder Form von PWM letztlich der Motor hart "an und aus" 
geschalten wird. Weshalb es dann wohl kaum noch darauf ankommt, wie der 
duty cycle ist. Deshalb dachte ich allerdings auch, dass ein viel 
kleinerer Kondensator reichen müsste, um die Spannungseinbrüche zu 
kompensieren. Der µC selbst braucht ja nicht viel Saft... und bekommt 
zwischen den Einbrüchen ja genug in seinen Puffer-Kondensator 
nachgeliefert. Das Problem könnte hier die Brown-Out-Detection sein, die 
bei schnellem Spannungsabfall reagiert. Aber die müsste laut den 
verwendeten Fuses deaktiviert sein.


FUSES des ATTiny45:
-------------------
Die Brown-Out-Detection sollte ausgeschalten sein. Die sollte also nicht 
das Problem sein... Zum programmieren nehme ich die Arduino-GUI. Hier 
die verwendete Config für die FUSES:

# Default clock (slowly rising power; long delay to clock; 8 MHz 
internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; 
[CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]

attiny45at8.bootloader.low_fuses=0xE2
attiny45at8.bootloader.high_fuses=0xD7
attiny45at8.bootloader.extended_fuses=0xFF


Grüße,
Stefan

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefan K. schrieb:
> Kann man das Problem evtl. einfacher lösen?

Öh, wie wärs einfach mit zwei Batterien (3V) statt 1,5V? :-)
Deine kleinen 1,5V Motoren ziehen natürlich einen schönen Strom beim 
Anfahren und das 5V 1,5A Netzteil ist da an der unteren Kante. Denn die 
Motoren können mit Sicherheit schon mal 800mA-1A ziehen und bei zwei 
Autos ist dann mal die Strombelastbarkeit des Netzteiles schnell 
erreicht (gerade beim Anfahren).
Du fährst besser, wenn die Tinys komplett aus einem anderen Netzteil 
gespeist würden, da tuts dann schon ein Kleindings a là Handylader.

von Helge A. (besupreme)


Lesenswert?

Laß den Spannungsregler weg, der hilft dir nit.

Aus dem L293D kommen eh nur vielleicht 2V an den Motoren an, der Rest 
wird verheizt.

Nimm einen Elko, "gefühlt" (weil ich kenn die Motorströme nicht) 1000uF 
oder größer, direkt an die 5V und versorge den L293 damit. Ein paar 
100nF Kondensatoren direkt über die Versorgungspins vom 293 sind auch 
eine gute Idee.

Von diesem Punkt mit einer Diode oder besser Skottkydiode auf einen 
zweiten fetten Elko ab 2200uF, der deinen uC versorgt.

Oder, falls du sowas noch rankriegst vor Weihnachten, steuer die Autos 
direkt mit je einem logik-level Mosfet an. Die fahrn ja eh nur vorwärts. 
Du sparst die Verlustwärme im 293 ein und brauchst dafür höchstens auf 
30% PWM ansteuern. Dann reicht auch deine Wandwarze aus zur Versorgung.

: Bearbeitet durch User
von Stefan K. (sdwarfs)


Lesenswert?

Matthias Sch. schrieb:
> Öh, wie wärs einfach mit zwei Batterien (3V) statt 1,5V? :-)

3 Volt waren suboptimal, zumindest direkt aus nem Netzteil. Das war ein 
verstellbares mit max. 1A Leistung. Bei 3 Volt fuhr (ein einzelnes Auto) 
flott, aber nicht schnell genug um aus der Kurve zu fliegen. 4,5 Volt 
war zu heftig... und was dazwischen gabs nicht.

Vorstellen könnte ich mir höchstens 5 Volt + Leistungs-Vorwiderstand zur 
Strombegrenzung. Allerdings kenn ich den genauen Widerstand nicht, der 
da günstig wäre... irgendwas zwischen 10 und 15 Ohm in Reihe zum Auto 
wär wohl gut gewesen. Meine Test-Konstruktion mit 5 Volt und vielen 
parallelen Widerständen war halt nicht stabil (nach ner gewissen Zeit 
waren die Widerstände dann halt warm und dann war die Motorleistung 
wieder zu niedrig). Deshalb bin ich von der Lösung dann abgekommen.

Spannungsreduktion via Spannungsteiler gibt genau das gleiche Problem, 
die Leistung von ~1,5W (pro Auto) muss durch den niedrigohmigeren Teil 
des Teilers durchgeprügelt werden und da wirds dann halt warm...

Deswegen hab ich dann was regelbares gebastelt. Bei der Konstruktion 
kann man notfalls den duty-cycle höher wählen, wenn die Leistung (bei 
gleichem duty-cycle) sich temperaturabhängig etwas verändert. Das kann 
man als Spieler recht gut ausgleichen...


Matthias Sch. schrieb:
> Deine kleinen 1,5V Motoren ziehen natürlich einen schönen Strom beim
> Anfahren und das 5V 1,5A Netzteil ist da an der unteren Kante. Denn die
> Motoren können mit Sicherheit schon mal 800mA-1A ziehen und bei zwei
> Autos ist dann mal die Strombelastbarkeit des Netzteiles schnell
> erreicht (gerade beim Anfahren).
Ja, die ziehen dann schon ordentlich Strom. Aber die Dauerlast schaffen 
Motortreiber und Netzteil. Denn wenn ich den Motortreiber per 
Drahtverbindung ansteuere, gehen die Autos ab wie nen geölter Blitz. Die 
fliegen bei 5V-100% duty-cycle bei 30cm Beschleunigungsstrecke sofort 
bei der ersten Kurve tangential raus und bleiben dann so nach nem Meter 
Flug und Gleitstrecke liegen. Genauso funktioniert das, wenn ich ne 
getrennte Stromversorgung für den Controller nehme.

Das Problem scheint tatsächlich das Anfahren zu sein. Ich vermute bald, 
dass es bei den Motoren kurzzeitig zu Kurzschlüssen kommt in bestimmten 
Stellungen des Kommutators. Bei hohen Drehzahlen ist der Motor schnell 
über diese Stellen drüber... aber dem Controller reicht das dann wohl 
schon tausend mal, um sich zu verabschieden.


> Du fährst besser, wenn die Tinys komplett aus einem anderen Netzteil
> gespeist würden, da tuts dann schon ein Kleindings a là Handylader.

Nen zweites Netzteil würd ich wirklich vermeiden wollen. Dann verbau ich 
eher noch ne 9V-Block-Batterie. Wenn ich den bei Inaktivität in den 
Sleep-Modus versetze und nur via Interrupt (durch I/O-Pin oder 
Watchdog-Timer) aufwachen lasse, dann hält die locker 2-3 Jahre.

Die Frage die ich mir noch stelle ist: Warum funktioniert denn die 
Variante mit Diode + fetter Kondensator nicht? Durch die Diode müsste 
doch der Strom nur in Richtung Kondensator (d.h. getrennte 
Kontroller/IO-Spannungsversorgung) fließen. D.h. bei nem 
Spannungseinbruch oder Kurzschluss, sollte noch für einige Zeit Energie 
im Kondensator drin sein.



Weitere Lösungsansatz:
======================
Hab grad mal geschaut: bei 1,8 V, 1MHz sinds 450µA im "Active Mode".

Müsste mal durchrechnen, wieviel Energie in so nen Kondensator (bei 
5Volt - 1,8Volt nutzbarem Spannungsbereich, 1500 µF) reinpassen. 
Vielleicht ist das wirklich das Problem...
Auf jeden Fall kann ich locker mal auf 1MHz runter takten. Bei 8 MHz ist 
glaub auch die minale Versorgungsspannung etwas höher.

FRAGE: Läuft die PWM in bestimmten Sleep-Modes weiter oder wird die 
abgeschalten? Wenn ja, könnt ich statt dem "delay(10);" in den 
Sleep-Modus schalten. Das dürfte ordentlich was bringen.

Ansonsten könnte ich noch probieren die CPU mit nur 32kHz zu takten. Der 
muss ja nicht viel tun (aller 10ms mal ca. 20 Takte rechnen), das könnte 
sogar reichen. Das wär dann auch schon fast "Sleep Mode". Notfalls 
schalt ich noch den ADC und sowas ab... Ich frag mich nur, ob das in die 
richtige Richtung geht, oder nur verschwendete Zeit ist.



Helge A. schrieb:
> Laß den Spannungsregler weg, der hilft dir nit.
Ich kann (morgen) mal probieren, ob nur der 1500µF-Kondensator 
funktioniert. Aber ich denke nicht... ich bin mir nicht ganz sicher, ob 
ich das nicht schon probiert habe.

Die Idee vom Spannungsregler war, dass die Spannung für den µC auf nem 
niedrigeren Level gehalten wird als die Netzteilspannung, sodass die 
erstmal ein Stück einbrechen kann ohne dass hinter dem Spannungsregler 
was passiert. Nachdem ich aber schon 1,4 Volt Drop-Out habe und der 
Spannungsregler, sowieso seine gewünschten 5 Volt nicht erreicht, könnte 
ich höchstens mal einen 3 Volt-Regler oder 2,8 Volt-Regler basteln (per 
Spannungsteiler-Rückkopplung). Dann würden da zumindest 0,6 bis 0,8 Volt 
Spannungsabfall abgefangen.



Helge A. schrieb:
> Aus dem L293D kommen eh nur vielleicht 2V an den Motoren an, der Rest
> wird verheizt.
Also ... das würd ich jetzt mal abstreiten wollen. Der L293D wird nicht 
einmal merklich warm... in dem IC geht also kaum Leistung drauf.

Wahrscheinlich gibts wirklich nur nen kurzzeitigen Kurzschluss am 
Kommutator des Motors. Die Strombelastung im Durchschnitt kann nicht so 
heftig sein... sonst würd der L293D auch bissl mehr schwitzen.



Helge A. schrieb:
> Nimm einen Elko, "gefühlt" (weil ich kenn die Motorströme nicht) 1000uF
> oder größer, direkt an die 5V und versorge den L293 damit.

Ok, probier ich morgen aus. Die Motorströme kenn ich auch nicht. Müsste 
mal schauen, ob ich ein Fahrzeug geöffnet bekomme... Aber wahrscheinlich 
ist der Motor nicht mal beschriftet (d.h. kein Typ-Angabe). Könnte aber 
den Blockierstrom mal messen oder sowas.
Oder ich dreh mal langsam von Hand und messe den Widerstand. Dann kann 
ich validieren, ob der Kommutator, wie vermutet einen temporären 
Kurzschluss fabriziert. Hab den ganzen Kram nur grad schon im 
Reisegepäck...



Helge A. schrieb:
> Ein paar 100nF Kondensatoren direkt über die Versorgungspins vom 293
> sind auch eine gute Idee.

Wieso jetzt am 293? Weil das am nächsten an der "Störung" dran ist? 
Meine Vorstellung wär ja, dass ich eher dass ich die Versorgungsspannung 
des ATTiny besser "puffern" sollte...

Und: An VCC2, VCC1 oder beide? Jeweils mehrere in Serie (um < 100nF 
Kapazität zu erreichen?) pro Versorgungspin oder nur jeweils 100nF?



Helge A. schrieb:
> Von diesem Punkt mit einer Diode oder besser Skottkydiode auf einen
> zweiten fetten Elko ab 2200uF, der deinen uC versorgt.

Was meinst Du mit "von diesem Punkt" (die Versorgungsspannungspins des 
L293D?).
Hm, ich hab leider nur 1N4148 oder Z-Dioden mit 4,7V da... Ne 
Schottky-Diode müsste ich kaufen gehen. Hab aber das Gefühl, dass ich 
die sowieso schon mehrfach hätte gebrauchen können.

Waren das die Schottky-Dioden de nur 0,3 Volt Spannungsabfall hatten? 
Ich mein auch irgendwo in den anderen Threads (zum L293D-Problem) 
gelesen zu haben, dass die etwas schneller "reagieren" als die 
Standard-Dioden... ist das richtig so?
Die 2200uF find ich dann doch schon recht krass. Glaub dann kauf ich 
besser gleich nen kleinen Power-Cap ;-)... wenn ich sowieso einkaufen 
muss (hab max. 1500 µF da).


Helge A. schrieb:
> Oder, falls du sowas noch rankriegst vor Weihnachten, steuer die Autos
> direkt mit je einem logik-level Mosfet an. Die fahrn ja eh nur vorwärts.
> Du sparst die Verlustwärme im 293 ein und brauchst dafür höchstens auf
> 30% PWM ansteuern. Dann reicht auch deine Wandwarze aus zur Versorgung.

Das war eine der vorherigen Lösungsversuche. Via P-MOSFET... allerdings 
nur nen kleiner mit zu wenig Leistung. Hat im Prinzip gut funktioniert, 
nur war der P-MOSFET den ich noch in meinen Kistchen hatte zu niedrig 
dimensioniert (glaub die haben max. 100 oder 200 mA Leistung gehabt). 
Und dann kam nach 1-2 Minuten das übliche: Leistungseinbruch.

Wenn ich mich recht erinnere, lief der Versuch sogar nur mit Dreh-Poti 
und P-MOSFET... war halt nur nicht stabil wegen Erwärmung des MOSFET.
Ich glaub da hatte ich sogar noch Rückkopplung über nen RC-Glied drinnen 
(d.h. verzögertes ein-ausschalten).

Letztlich ist der L293D aber auch nichts anderes, nur dass 4 Stück davon 
verbastelt sind noch bissl Elektronik und Logik (Schutzdioden, 
UND-Gatter für Enable/Input-Pins, ... Überhitzungsschutz etc) zusätzlich 
mit drin steckt. Wenn aber alles nichts hilft, geh ich mir beim Conrad 
vllt noch 2 Leistungs MOSFETs kaufen (1A bis 2A)... die müssten das 
schaffen.

Aktuell siehts aber so aus, als ob ich nur noch die Spannungsversorgung 
des Controllers hinbekommen muss. Das is dann zwar schon arger Overkill 
an Elektronik, aber was tut man nicht alles dafür dass die Kleinen auch 
Spaß dran haben ;-)


---
Danke schon mal euch beiden für die guten Hinweise...

Stefan

von Stefan K. (sdwarfs)


Lesenswert?

PS: Hab mal ein Auto zerlegt... drinnen ist, wie vermutet, ein Motor der 
Marke "Mabuchi" (genauer: "Mabuchi Motor Pat.") steht nichts drauf. Am 
Motor ist ein 100 nF Kerko festgelötet.

Der Motor hat -optisch- ähnlichkeit mit folgendem Modell, dass bei 
Pollin zu haben ist:

http://www.pollin.de/shop/dt/OTc2OTg2OTk-/Motoren/Gleichstrommotoren/Gleichstrommotor_MABUCHI.html

Den Typ hatte ich schon grob von außen vermutet (man konnte durch ein 
paar Ritzen was erkennen). Allerdings ist unklar, ob Mabuchi nicht 
tausende Varianten mit dieser Optik herstellt, mit unterschiedlicher 
Windungszahl etc. Ich schätze aber fast, dass die Werte ähnlich sein 
dürften...

Pollin gibt für diesen Motor jedenfalls folgende Werte an...

Betriebsspannung 1,5...9 V-
Anlaufspannung 1 V-
Stromaufnahme max. 800 mA
Drehzahl 12.000 U/min bei 9 V-


Am Motor ist nen 10er-Ritzel und an der Achse nen 37er-Tellerrad.

Also entsprechend folgende mechanischen Angaben:
....
Getriebe: 1:3,7 Untersetzung (Kegelradgetriebe, Kunststoff)
Radumfang: 1,6 cm
Fahrzeugmasse (komplett): 38g
Reifenoberfläche: Gummi (glatt)
Fahrbahnbelag: Kunststoff (rauh)


Den Motor hab ich mal grob (am Netzteil vom Testaufbau) ausgemessen:
Blockierstrom: 2,2 A
Leerlaufstrom (nur Getriebe freidrehende Räder): ~0,32 A

Jeweils mit dem 5V-Netzteil (mit eigentlich 1,2 A maximaler Leistung; 
wenn man Spannungseinbrüche hinnimmt, geht wohl etwas mehr).

HINWEIS: die obige Angabe 1,5 A (Netzteilleistung) war falsch. Es stehen 
1,2 A drauf... hab das grad nochmal geprüft.

Beim blockieren des Motors fällt der Strom auf ca. 3Volt ab und bleibt 
dort stabil (mind. für 1 Sekunde). Das müsste eigentlich für den ATTiny 
und die Logic-Inputs des L293D locker reichen...

Es müssen also irgendwo her noch Spannungsschwankungen her kommen. Zum 
Beispiel könnte der Spannungseinbruch kurz tiefer gehen und sich dann 
erst bei ca. 3V "Blockierspannung" einpegeln.

Zu beachten für weitere Abschätzungen ist natürlich, dass später 2 
solcher Motoren als Last kurzzeitig dran hängen und die auch 
gleichzeitig anlaufen werden (man fährt halt üblicherweise gleichzeitig 
los ;-)).

: Bearbeitet durch User
von Helge A. (besupreme)


Angehängte Dateien:

Lesenswert?

Bevor ich viele Worte verlier, mal ich lieber ein Bildchen.. ;)

Auf meiner Werkbank würde ich das ungefähr so aufbauen. Wenn du nur 
1500uF Elkos hast, nimm die. 1N4148 ist auch OK zum Ausprobieren.

C1 und C2 halten schnelle Störungen nah am L293. C3 schützt dein 
Netzteil und fängt energiereiche Transienten. C4 stützt deine uC - 
Versorgung.

Da nur 2 Motoren geschaltet werden, kannst du je 2 Treiber parallel 
verwenden. Dann kommt ein wenig mehr Spannung an den Motoren an. 
Alternativ läßt sich der 293 hier durch 2 logic level N-Mosfets 
ersetzen, dann kommt noch bissel mehr an. Dabei dürfen's ruhig auch 
etwas kräftigere sein, das macht am Preis fast nix aus.
--
Gegen die gleichzeitige Belastung durch 2 Motoren brauchst du ja nur die 
PWM - Pulse auf höchstens 50% begrenzen und im Programm immer 
abwechselnd einschalten.

: Bearbeitet durch User
von Stefan K. (sdwarfs)


Lesenswert?

Helge A. schrieb:
> Bevor ich viele Worte verlier, mal ich lieber ein Bildchen.. ;)

Danke! Damit ists viel einfacher zu verstehen ;-)

Anmerkung: Du ziehst alle Ausgänge des L293D auf GND (über PWM an den 
EN-Pins). Die Motoren hängen dann an VCC + Ausgang (negatives Potential) 
des L293D. Das ist aktuell bei mir genau umgekehrt... dürfte aber an 
sich kaum was ausmachen.


> Da nur 2 Motoren geschaltet werden, kannst du je 2 Treiber parallel
> verwenden. Dann kommt ein wenig mehr Spannung an den Motoren an.

Das hab ich anfangs probiert und schlechte Erfahrungen gemacht. Ich 
glaube die Treiber haben leicht unterschiedliche Zeitverzögerungen und 
dann gibts bei den HIGH/LOW-Übergängen nen temporären Kurzschluss 
zwischen den Treiber-Ausgängen und jede Menge Verlustleistung. 
Jedenfalls ist das Ergebnis mit zwei Treibern zusammen schlechter als 
mit einem Treiber pro Motor gewesen.



Offene Fragen:
--------------
D2 und D5 (direkt am Motor) sind wohl gegen Spannungen, die beim 
abschalten der Treiberspannung induziert werden (Vermutung)?


Wofür sind die Dioden D3 und D4? Soweit ich sehe, sind die zwischen 
Treiberausgang und GND. Negative Spannungen (relativ zu GND) am 
Treiber-Ausgang ableiten?


Das entspricht doch eigentlich den Freilauf-Dioden, die schon im L293D 
integriert sind, oder nicht?


> Alternativ läßt sich der 293 hier durch 2 logic level N-Mosfets
> ersetzen, dann kommt noch bissel mehr an. Dabei dürfen's ruhig auch
> etwas kräftigere sein, das macht am Preis fast nix aus.
Ok, hab mit MOSFETs noch nicht viel gespielt. "Logic-Level" ... macht 
aber vom Namen her Sinn (zumindest werd ich wohl Logic-Level-Input mit 
dem µC produzieren).

> Gegen die gleichzeitige Belastung durch 2 Motoren brauchst du ja nur die
> PWM - Pulse auf höchstens 50% begrenzen und im Programm immer
> abwechselnd einschalten.

Das is ne -sehr- gute Idee! Zumindest Summe der duty-cycles unter 100% 
liegt geht das. Aber ich kann durchaus schauen, dass ich die duty-cycles 
180 Grad phasenverschoben halte. Ich muss aber bis etwa 75-80% pro Motor 
kurzzeitig freigeben (kurze Peak-Beschleunigung ab Kurvenausgang), sonst 
isses nicht flott genug ;-).

...

Ich werd morgen mal - wenn Zeit ist - ein paar der Sachen austesten.
Bin morgen hauptsächlich erstmal im Auto unterwegs (einmal quer durch 
Deutschland) und dann noch familiär gefragt... wird also eher - wenn 
überhaupt - spät abends werden.

von Helge A. (besupreme)


Lesenswert?

Die Dioden D2-D5 sind nicht unbedingt notwendig, der Schaltplan ist 
adaptiert aus irgendwas mit L293 ohne D.. ;)

Soweit ich mich erinnere, sind die Schalter nach Masse in den Dingern 
ein klein wenig besser, daher sind die Motoren nach gemeinsamem Plus 
geschaltet. So, vermute ich mal, dürften die Verluste etwas geringer 
ausfallen.

Der Baustein kann durchaus Schaltverluste durch Parallelschaltung haben, 
wenn man den PWM in die normalen Eingänge (A1-A4) einspeist. Das wird 
besser, indem der Enable als PWM-Eingang verwendet wird. Dadurch wird 
nämlich statt zwischen "High - Low" nur zwischen sondern "Freilauf - 
low" umgeschaltet.

Übrigens ist der Baustein (bei ST) für "nur" dauerhaft 0,6A 
spezifiziert, auch daher scheint mir die Parallelschaltung Sinn zu 
machen. Es könnte ja sein, daß mal irgendwas blockiert.

von Stefan K. (sdwarfs)


Lesenswert?

Helge A. schrieb:
> Übrigens ist der Baustein (bei ST) für "nur" dauerhaft 0,6A
> spezifiziert, auch daher scheint mir die Parallelschaltung Sinn zu
> machen. Es könnte ja sein, daß mal irgendwas blockiert.

Ja, 600 mA sind richtig. Aber der hat auch ne "Overtemperature 
Protection". Also wird der schon abschalten, wenn ihm die Sache zu heiß 
wird (hoffe ich). Allerdings lässt der auch 1,2 A Peak durch.


Helge A. schrieb:
> Der Baustein kann durchaus Schaltverluste durch Parallelschaltung haben,
> wenn man den PWM in die normalen Eingänge (A1-A4) einspeist. Das wird
> besser, indem der Enable als PWM-Eingang verwendet wird. Dadurch wird
> nämlich statt zwischen "High - Low" nur zwischen sondern "Freilauf -
> low" umgeschaltet.

Ich hab glaub drei Varianten probiert:
EN1,2 auf HIGH, A1+A2 zusammen geklemmnt und gemeinsam HIGH/LOW (PWM) 
geschalten um zwischen Freilauf und HIGH zu schalten.
=> ganz schlecht, weil sofort gebremst wird wenn die PWM auf LOW 
schaltet

EN1,2+A1+A2 zusammen geklemmnt und gemeinsam HIGH/LOW (PWM) geschalten 
um zwischen Freilauf und HIGH zu schalten.
=> Eher schlechte Leistung

Und A1+A2 auf HIGH, EN1 an PWM ... das hat gut funktioniert.


PS: Bei den Dioden überleg ich, ob die evtl. die Freilauf-Eigenschaften 
kaputt machen. D.h. dass der Motor, der ja nach dem Abschalten des 
Zustroms als Generator arbeitet sehr stark gebremst wird. Ich bin nur 
grad unsicher in welche Richtung die Spannung dann induziert wird... 
Lässt sich aber heraus finden...

von Helge A. (besupreme)


Lesenswert?

Die eingebauten Dioden bekommen nur kurze Spitzen ab. Das ist vom 
Leistungsverlust her gut zu verschmerzen. Andernfalls wird der 
Treiberbaustein gefährdet.

Die EMK der Motoren erzeugt eine Spannung, die irgendwo zwischen 0 und 
5V liegt. Die Freilaufdioden fangen nur die Spitzen ab, die durch die 
Induktivität der Motoren und der Zuleitung erzeugt werden.

Böse gebremst wird nur, wenn der Ausgang wirklich hart UMgeschaltet 
wird. Dann bekommen auch die etwas unterschiedlichen Schaltverzögerungen 
mehr Gewicht. Das deckt sich mit deinem Versuch.

--

Läßt sich ein Unterschied feststellen, wenn du die Motoren an Plus oder 
an Minus schaltest? - Mir ist irgendwie im Hinterkopf, daß die low-Seite 
'besser' schaltet. Und hier dürften schon ein paar Millivolt mehr gut 
merklich sein, die Motorspannung ist recht klein und geht quadratisch in 
die Leistung ein.

von Stefan K. (sdwarfs)


Angehängte Dateien:

Lesenswert?

Helge A. schrieb:
> Läßt sich ein Unterschied feststellen, wenn du die Motoren an Plus oder
> an Minus schaltest?
Hab ich leider nicht mehr beantworten. Ich hab die Schaltung jetzt 
aufgelötet und keinen L293D mehr zur Verfügung...


----
Die Lösung ist wie von mir anfänglich beschrieben mit 2 Modifikationen, 
die Du mir empfohlen hast:

1. Statt den 2 fetten Elkos + Spannungsregler gibts nur noch einen Elko 
(1500 µF) und ne Diode. In meinen anderen Versuchen mit ähnlicher 
Beschaltung war der Elko wahrscheinlich einfach zu klein... D.h. es gibt 
nur noch einen Elko der Energie zwischenpuffert für den Mikrocontroller 
und die Diode, die die Versorgungsspannung nur in eine Richtung 
"ankoppelt" (nur Stromfluss vom Netzteil zum Elko und nicht zurück, 
falls die Spannung einbricht).

2. Die VCCs (VCC1 und VCC2) des L293D sind gegen GND mit 100 nF 
Keramik-Kondensatoren gepuffert (dicht am IC).

Ich hab das ganze aufm Steckbrett ne Weile getestet und dann auf ne 
Experimentier-Platine gelötet (die Variante mit den parallelen 
Leiterbahnen).

Hab nicht viel Löterfahrung und deswegen riesige Lötzinn-Kleckse auf der 
Rückseite, die im ersten Versuch teilweise zusammen gepappt waren. Gab 
entsprechende Fehlfunktionen (und zum Glück keine Schäden an den ICs). 
Nachdem ich dann alle nicht zusammengehörenden Leiterbahnen wieder 
"getrennt" hatte, hats dann auch funktioniert... Phew!
Ist mein erstes komplexeres Lötprojekt gewesen... und es hat am Ende 
funktioniert! Bin ein klein wenig stolz drauf... ;-)

Im Anhang ist ein Foto vom Ergebnis... die Unterseite der Platine zeig 
ich besser nicht vor ;-)

Morgen gibts noch ein paar Kleckse Heißkleber an den Kabelansatz (zur 
Zugentlastung) und nen Gehäuse um die Platine... und dann kanns 
eingepackt werden!

Danke für Eure Hilfe... besonders Dir, Helge!

Grüße,
Stefan

von Helge A. (besupreme)


Lesenswert?

Cool! Freut mich, daß es läuft! :)

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.