PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit ULN2003AN



RCO
24.08.2006, 14:55
Hallo Leute,

ich habe folgendes Problem:
untenstehende Schlatung benutze ich um einen Schrittmotor anzusteuern. Dieser sollte laut Datenblatt nicht mehr als 400mA bekommen. Betriebsspannung 6 Volt.

Untenstehende Schaltung soll die Ansteuerung realisieren. Um die Leistung im Zaum zu halten wird die Masse über die der ULN gespeist wird mit PWM mit einer hohen Frequenz zugeschaltet. Dadurch soll der Durchschnittliche Strom durch die Spule die 400mA nicht überschreiten. Der strom kann also über den AVR per PWM geregelt werden. Bei schnellerer Fahrt wird dann die Masse entsprechend länger durchgeschaltet.
Damit die nicht genutzten Eingänge des ULN nicht wild rumflackern habe ich sie auf Masse gelegt. Soweit die Theorie. In der Praxis passiert folgendes:

Egal wie ich die Pulsweite einstelle, der Motor läuft immer auf voller Power (ungesund). Nachdem ich den Punkt 1 in der Schaltung auftrenne, tritt dieser Effekt nicht mehr auf.

Der ULN scheint sich also irgendwie die Masse von den Eingängen zu saugen!?

Nun läuft das ganze eigentlich ganz gut, außer das der ULN trotz niedriger belastung unheimlich heiß wird, wo er doch laut Datenblatt 500mA abkönnen sollte.

Ich vermute, dass das mit der hohen Schaltfrequenz zusammenhängt.


Was kann ich also tun? Der ULN scheint nicht geeignet für diesen Zweck zu sein, sollte man vielleicht einzellne Fets oder Transistoren benutzen? Der Tip122, über den ich die Masse regel wird nämlich nicht mal warm.

Wer gerade das Datenblatt des ULNs sucht:
http://www.datasheetcatalog.net/de/datasheets_pdf/U/L/N/2/ULN2003AN.shtml

PasstScho
24.08.2006, 15:30
Hallo,
Ich behaupte mal, dass der ULN für Schrittmotor-Ansteuerung völlig ungeeignet ist.
Das IC ist eigentlich für Leds o.ä. gedacht, und für mehr kann man den auch nicht wirklich benutzen.
Für Unipolare Motoren sind einzelne Transistoren/FETs sicher besser.
Ein L298 (oder vielleicht auch L293) ist auch gut, aber vielleicht etwas zu teuer für einen einfachen Unipolaren Motor.
Wenn du noch mit dem ULN rumprobieren willst, könntest du mal die PWM-Frequenz runterschrauben, dann könnten sie etwas kühler werden (aber nur wenn es vorher zu schnell war...).

MfG Alex

sigo
24.08.2006, 15:49
Hallo,

der ULN hat einen ganz ordentlichen Spannungsabfall von 1,2 - 1,6V bei 350mA, hinzu kommt noch die Verlustleistung der Diode, wenn sie aktiv ist. Alle Komponenten sind nicht gerade schnell, daher werden sie beim Chopperbetrieb zu heiß.

Du könntest evtl. den ULN nur zum Umschalten der Motorphasen verwenden (das ist langsam) und den Sternpunkt des Motors mit Hilfe eines MOSFETS oder Leistungstransisitors choppern.

Sigo

kalledom
24.08.2006, 16:16
Und ich behaupte mal, daß der GND des ULN2803 am GND bleiben muß und nicht 'geöffnet' werden darf.
Da sitzen vom GND-Pin Dioden zu den Eingängen und Ausgängen (siehe Innenleben des ULN) und drei der Eingänge hast Du an GND gelegt !!!
Warum glaubst Du, läuft der Motor weiter und das 'Ding' wird heiß ?
Die 3 Schutzdioden werden etwas überbelastet !

FriLu
24.08.2006, 16:17
Hallo,


Der ULN scheint sich also irgendwie die Masse von den Eingängen zu saugen!?

Datenblatt Seite 3: Die Eingänge sind mit Schutzdioden (Katode an Eingang, Anode an Masse) versehen, wenn die Eingänge auf Masse liegen, der IS- Massepin aber geschaltet wird -> Bingo!
Meine Erfahrung: selbst bei Led-Ansteuerung (8x20mA) wird das Teil deutlich! warm.
MfG Lutz

FriLu
24.08.2006, 16:18
Hallo kalledom, da war ich wohl etwas zu langsam...

kalledom
24.08.2006, 16:35
Hallo FriLu,
aber nur ganz unerheblich minimal; ich habe etwas schneller umgeblättert :-)

RCO
24.08.2006, 18:46
Danke für die Tips, die Platine ist schon etwas älter und ich habe mir damals nicht alzuviele gedanken darüber gemacht.

Naja, ich denke, ich werde dann doch einzellne Fets oder Transistoren nehmen.

Könnt ihr mir da einen Tip geben?
Ich möchte das ganze gerne direkt an den AVR schließen, also keinen Treiber dazwischen bei Fets kann es ja bei hohen Frequenzen schonmal zu größeren Strömen durch das umladen der Ladungen kommen. Dafür haben die aber meist den geringeren Innenwiderstand.

Als vergleich hätte ich jetzt z.B. den BUZ11 und den Tip112. Beide haben ja schon Dioden drin, könnte ich mir dan externe sparen?

Wie entscheidend ist bei sowas die PWM-Frequenz? Sie liegt jetzt bei ca 60kHz, der Stepper macht maximal 1500 Schritte pro Sekunde. Das hieße 40 x 12 V pro Sekunde.

Außerdem habe ich noch eine weitere Frage: Da die Karte einigermaßen universell sein soll müsste ich den Strom durch den Motor messen. Wie macht man sowas im PWM- und Step-Betrieb? Ich hatte da an sowas gedacht (siehe unten). Allerdings ist mir nicht klar, wie ich C und R wählen soll.

alter Mann
24.08.2006, 21:05
Guten Abend,

erst mal eine Frage: Wieso musst Du dem Motor choppern? Welche Nennspannung hat der denn? Könntest Du dem Motor nicht einfach einen eigenen Spannungsregler spendieren? Dann bräuchtest Du die PWM nicht.

Weshalb der ULN heiss wird, haben Kalledom und FriLu schon erklärt. Ich würde einfach den Motor mit 4 Mosfets treiben. z.B. dem IRF540. OK, der ist etwas überdimensioniert, aber ein anderer ist mir grade nicht eingefallen.

Wenn es sich nicht vermeiden lässt, die Spannung über PWM zu senken, schalt doch einfach einen Integrator dazwischen. Einen Widerstand von etwa 1 bis 10Ohm an den Drain des FET's und dahinter einen dicken Elko nach Masse. Dann kommt die Chopperfrequenz nicht an deinem Treiber an und du bekommst eine mehr oder weniger saubere Gleichspannung an deinem Treiber. Und wenn Du für die PWM einen FET nimmst, der einen etwas höheren Ri hat, kannst Du evtl auch den Widerstand sparen.

Florian

RCO
25.08.2006, 11:56
Vielen Dank für die Antwort.


Wieso musst Du dem Motor choppern? Welche Nennspannung hat der denn? Könntest Du dem Motor nicht einfach einen eigenen Spannungsregler spendieren?

Er hat eine Nennspannung von 6 Volt, soll aber variabel an 12 oder 24 Volt betrieben werden können. Ein Spannungsregler würde die ganze Leistung ja nur verheizen. Außerdem steigt meines Wissens nach der Widerstand des Motors bei höheren Drehzahlen. Um das zu kompensieren will ich den Strom anpassen, indem ich die Spannung erhöhe. Jetzt könnte ich natürlich einfach eine Konstantstromversorgung aufbauen. Aber einerseits möchte ich selber damit noch etwas experimentieren können, andererseits würde eine Strombegrenzung auch zuviel Leistung verheizen.


Und wenn Du für die PWM einen FET nimmst, der einen etwas höheren Ri hat, kannst Du evtl auch den Widerstand sparen.

Das habe ich auch schon mal überlegt, allerdings müsste man dann auf ein sehr genaues Timing beim messen achten. Und falls man choppert erhält man keinen Durchschnittswert, sondern eben nur den Maximal oder Minimalfall. Deshalb wollte ich versuchen mit Hilfe der oben gezeigten Schaltung über dem Kondensator eine einigermaßen konstante Spannung zur Messung aufzubauen.


Wenn es sich nicht vermeiden lässt, die Spannung über PWM zu senken, schalt doch einfach einen Integrator dazwischen. Einen Widerstand von etwa 1 bis 10Ohm an den Drain des FET's und dahinter einen dicken Elko nach Masse.

Wie meinst du? Würde ich dann nicht wieder ziemlich viel Energie über dem Widerstand verschwenden. Kannst du das ein wenig ausführen, mir ist das noch nicht ganz klar.

alter Mann
25.08.2006, 20:25
Hallo nochmal

ich hab den Integrator mal aufgemalt.

Je nachdem, wie gross der Elko ist und mit welcher Frequenz du chopperst, hast Du an Punkt A fast eine Gleichspannung, die annähernd proportional zum Tastverhältnis der PWM ist. Somit ist der ULN nicht mit der hohen Frequenz "belastet".
An Punkt B kannst Du die aktuelle Spannung auf einen Analogeingang zurück führen und kontrollieren.
Die richtigen Widerstandswerte des Spannungsteilers lassen sich am besten wahrscheinlich durch ausprobieren ermitteln.

Mit einigen Berechnungen ist es sogar möglich, über das benutzte Tastverhältnis und die Spannung Rückschlüsse auf den Strom durch den Motor zu ziehen. Das geht am besten mit einer vorher aufgenommenen Tabelle bzw. einem zweidimensionalen Array das zur Laufzeit einfach abgefragt wird.
z.B. X : Spannung (z.B. 5,5; 5.6; 5,7; 5,8; 5,9; 6,0; 6,1 usw.Volt)
Y : Tastverhältnis (z.B. 10/128; 11/128; 12/128 usw.)
und in den einzelnen Zellen dann der Strom
Dazu muss natürlich bei jedem Tastverhältnis und bei jedem Spannungswert der Strom aufgenommen werden und in das Array eingetragen werden. Je genauer das passiert und je mehr Speicherplatz dafür zur verfügung steht, desto genauer ist nachher das Ergebnis.



Würde ich dann nicht wieder ziemlich viel Energie über dem Widerstand verschwenden

Das ist richtig. Aber hier kommt es auf eine sinnvolle Dimensionierung an. Bei einem Strom von 400mA fällt an dem Messwiderstand bei 1 Ohm eine Spannung von 400mV ab. Das ist eine Verlustleistung von 160mW. Je kleiner der Widerstand ist, desto weniger Verluste ergeben sich ja dabei.
Deshalb würde ich den Rds(on) des Fet als Messwiderstand verwenden und den gestrichelt gezeichneten Widerstand weglassen. Der Rds(on) liegt bei einem BS170 bei etwa 1,2 Ohm (laut Datenblatt). Das ergibt bei 400mA einen Spannungsabfall von 0,48 Volt. Diese Spannung dann durch einen Operationsverstärker um faktor 10 angehoben und man hat eine verwertbare Spannung von etwa 4,8V.
Mit besseren Fet's mit geringerem Rds(on) ist der Spannungsabfall und damit die Verlustleistung natürlich geringer, da muss dann der Verstärkungsfaktor des Operationsverstärkers entsprechend erhöt werden.

Das funktioniert aber nur, wenn man genau in dem Moment misst.

Florian

Edit: ich hab's gerade erst bemerkt. Am Punkt A liegt wenn der Fet ausgeschaltet ist, gegen GND die volle Betriebsspannung des Motors an. Um den AD-Wandler nicht zu zerstören muss dann am Ausgang des Operationsverstärkers ein Widerstand in Reihe geschaltet werden und hinter diesem eine Z-Diode gegen GND.
Bei 5V Betriebsspannung des Controllers dann ein Widerstand von 1 KOhm und eine Z-Diode von 4,7Volt.

RCO
26.08.2006, 13:59
Hi Florian,

danke für die ausführliche Antwort. Das ganze sieht echt nicht schlecht aus. Ich schätze aber, dass ich mich von dem ULN trennen werden.
Ich habe allerdings auch noch eine Frage zu der Schaltung, sag mir ebscheid, falls ich mich irre.

Auf der einen Seite hat man während der Fet ausgeschaltet ist eine Spannung über dem Kondensator anliegen. Was passiert allerdings, wennder FET eingeschaltet ist? Je nach Innenwiderstand und Messwiderstand, liegt der GND des ULN dann auf Masse.
Nehmen wir an, der Kondesnator ist nicht vorgeladen und ich gehe auf "Maximalschub" Der Fet wird also relativ lange eingeschatet sein, da jetzt einerseits ein recht großer Strom druch den Kondensator aber auch durch den ULN fließt sind doch kaum noch Rückschlüsse auf den Strom durch den ULN zu machen. Außerdem würde dieser Strom, der ja höher als 400mA sein muss, um den Kondesnator aufzuladen auch einen höheren Spannungsabfall am Messwiderstand oder Innenwiderstand des Fets produzieren.

Und noch eine ganz andere Frage: Was für ein Programm hast du für das erstellen der Slizze benutzt? Ich bin nämlich schon seit längerem auf der Suche nach einem Programm um schnell Skizzen anzufertigen.

alter Mann
26.08.2006, 15:39
Hallo Moritz,

Du hast recht, den Einschaltmoment habe ich nicht berücksichtigt. Da ist wie Du sagst, der Kondensator nicht geladen und der Strom geht recht hoch. Aber wenn Du den Kondensator beim Einschalten des Mikrokontrollers erst über die PWM auf deine Nennspannung auflädst und erst danach dem Motor einschaltest, dann ist das auch kein Problem. Der ULN bekommt dann zwar volle Betriebsspannung ab, aber der kann ja laut Datenblatt bis zu 50Volt vertragen.
Und wenn Du den ULN rausschmeisst und statt dessen FET's einsetzt müssen die die maximale Betriebsspannung vertragen können.
Ausserdem solltest Du Stränge nur in dem Moment einschalten, wenn auch der PWM-FET eingeschaltet ist, da sonst das Bezugspotential fehlt. Das Ausschalten übernehmen dann die PullDown Widerstände an den Gates.
Die Schaltung sieht dann ungefähr so aus, wie unten für einen Strang gezeichnet.


In dem Moment, wenn der FET eingeschaltet ist, fliesst der Ladestrom des Elkos durch plus der Strom, der momentan gerade durch die Motorwicklungen fliesst. aber wenn der Elko aussreichend gross ist, dann integriert der ja den Strom, sprich er puffert im ausgeschalteten Zustand so lange, bis der nächste Impuls kommt und "filtert" die Spannungsspitzen im Einschaltmoment aus. Dabei muss natürlich auch zwischen Elko-Minus und Verbraucher ein ausreichend grosser Widerstand zwischen sein. mit aussreichend meine ich hier Werte zwischen wenigen Milliohm und nicht mehr als einem Ohm. Im Normalfall reicht hier es aus, die Leiterbahn zwischen diesen Punkten nicht zu kurz und nicht zu dick zu machen, da deren Widerstand dafür meistens ausreichend ist.


Das Programm, mit dem ich diese Skizzen gezeichnet habe heisst GrafikWorks3.0 von DataBecker und ist glaube ich schon mehr als 10 Jahre alt. Dann mit "Druck" in die Zwischenablage übernommen und mit Paint gespeichert. Zum Schluss mit IrfanView ausgeschnitten und passend skaliert.

Ist keine schöne Sache, damit etwas vernünftig zu zeichnen, weil man jeden einzelnen Strich selbst zeichen muss, aber für kleinere Sachen geht es so eben noch. Etwas vernünftiges habe ich für solche Zeichnungen auch noch nicht gefunden.


Florian

RCO
27.08.2006, 14:29
Hi Florian,

danke für die Antwort. Das ganze hört sich interessant an, wird aber leider schon wieder etwas komplex. Ich denke, ich werde mal verschiedene Schaltungen auf dem Testboard ausprobieren. Danke auf jeden Fall für die Hilfe.


Etwas vernünftiges habe ich für solche Zeichnungen auch noch nicht gefunden.

Ich auch nicht, Skizzen mit Eagle zu machen finde ich eigentlich zu aufwendig, außerdem ist es schwer dort noch erklärungen etc. einzufügen. Ich denke ich werde das mal ausprobieren.

FriLu
27.08.2006, 16:11
Hallo,
Ich möchte zwar keine Werbung machen, aber SPlan von ABACOM wär vlt. eine alternative, gibts für kleines Geld...
MfG Lutz