Hallo,
ich hab mal ne dumme frage, ich möchte gerne mit einem AT89C2051
einen NPN Transistor schalten weiß aber nicht wie, da der Atmel ja mit
0 schaltet und der Strom, des Controller bei 1 den Ausgang verlässt ja
nicht besonders hoch ist. ( ist mein ersten Atmel projekt)
danke schon mal
Carsten
"Mikrocontroller Kochbuch" von Andreas Roth...
Normalerweise nimmt man einen Vorwiderstand mit 1000 Ohm, verbindet die
eine Seite mit der Basis eines NPN-Transistors (zB. BC548), die andere
mit dem Ausgang des Mikrocontrollers. Den Emitter des Transistors legt
man auf Masse, an den Kollektor wird der Verbraucher angeschlossen, und
auf der anderen Seite des Verbrauchers wird der postive Pol der
Versorgung angeschlossen.
Wo ist da ds Problem?
Wieso werden hier eigetlich immer diese Pippifax-Grundlagen gefragt?
Gruß Rahul
hi Rahul,
wenn du schon entruestet ueber die pippimaxfragen humpelst,warum dann
nicht gleich den 1000 ohm widerstand weglassen.....wie bei Roth
gezeigt?
ich wuerde eher den freund darauf aufmerksam machen,dass er beim
einschalten des MC sofort einen durchgeschalteten transistor hat!
...also darueber nachdenken ob nicht etwa ein zweiter TR sinnvoll
ist....oder PNP einsetzen....
ciao
ed
> wenn du schon entruestet ueber die pippimaxfragen humpelst,warum> dann nicht gleich den 1000 ohm widerstand weglassen.....
Weil es ein Schutz für deinen µC ist? Wenn einmal 2A aus deinem Portpin
geflossen sind, weisst du, dass sich die Investition eines
2-Cent-Widerstandes lohnt. ;-)
bleibt das Problem, dass der 2051 wie alle 8051er keinen nenenswerten
Strom bei H-Pegel liefern können. Für eine LED oder ein kleines Relais
reicht der Basisstrom aus, für grössere Lasten aber nicht, es sei denn,
man nimmt einen Darlington-Transistor (womit man sich allerdings wieder
andere Nachteile einhandelt).
Lösungsmöglichkeiten:
-pnp-Transistor nehmen und mit L-Pegel einschalten (geht aber nur, wenn
die Last an der gleichen Spannung wie der MC betrieben wird)
-2stufiges Design
-bei kleinen Schaltfreqenzen logic-level-Mosefet
-fertige Treiberbausteine, möglichst mit L-aktivem Eingang, UDN2595 ist
dafür ideal, hatte ich mal auf einer Motorsteuerkarte.
Wird mit H-Pegel eingeschaltet, sind meist zusätzliche Massnahmen
erforderlich, um das Einschalten aller Ausgänge im Reset-Zustand zu
verhindern.
Insofern ist die Frage durchaus nicht pille-palle.
Hallo,
Ich greife dieses Thema noch mal auf, da ich an 6 Ausgängen jeweils 2
LEDs betreiben möchte (bis zu 6 LEDs an 3 Ausgängen wären gleichzeitig
aktiv).
Gibt es eine Alternative zum UDN2595, da dieser scheinbar nur noch bei
Ebay in China erhältlich ist? Das Problem ist der relativ niedrige
H-Pegel des AT89C2051. Es sollte auch ein invertierender Chip sein, da
sonst alle LEDs bei Reset kurz aufleuchten würden.
Sascha K. schrieb:> Das Problem ist der relativ niedrige> H-Pegel des AT89C2051.
Der Pegel des 89C2051 ist nicht niedrig, sondern bricht nur bei
Belastung etwas mehr ein als ein echter Push-Pull Ausgang. Das Problem
kann man aber mit externen Pullups recht leicht lösen, denn 'pulldown'
kann der MC gut.
Sascha K. schrieb:> Es sollte auch ein invertierender Chip sein, da> sonst alle LEDs bei Reset kurz aufleuchten würden.
Der UDN2595 ist aber nun ausgerechnet ein nicht-invertierender Treiber.
Wenn du einen invertierenden haben möchtest, bieten sich, abgesehen von
der Darlington Endstufe und der minimal anderen Pinbelegung z.B. der
ULN2003 oder der ULN2803 an.
Carsten schrieb:> Hallo,> ich hab mal ne dumme frage, ich möchte gerne mit einem AT89C2051> einen NPN Transistor schalten weiß aber nicht wie, da der Atmel ja mit>> 0 schaltet und der Strom, des Controller bei 1 den Ausgang verlässt ja> nicht besonders hoch ist. ( ist mein ersten Atmel projekt)>> danke schon mal>> Carsten
Ja, der AT89C2051 ist als 8051-Derivat blöd.
Eigentlich
1
VCC
2
|
3
1k Last
4
| |
5
uC---+--|< NPN
6
|E
7
GND
aber dann wird der Transistor auch beim Einschalten der
Versorgungsspannung des uC eingeschaltet und erst ausgeschaltet, wenn
man den uC-Ausgang auf LOW setzt. Das stört oft.
Sauberer ist (eingeschaltet wird bei LOW)
1
VCC
2
|E
3
uC--4k7--|< PNP
4
|
5
1k Last
6
| |
7
+--|< NPN
8
| |E
9
10k |
10
| |
11
GND GND
aber das ist natürlich aufwändger. Also doch besser gleich mit dem PNP
schalten. Die meisten Leute lieben es ja auch, plus zu schalten und
bekommen bei NPN eher Gedankenprobleme.
Vielen Dank schon mal bis hier hin.
Matthias S. schrieb:> Der UDN2595 ist aber nun ausgerechnet ein nicht-invertierender Treiber.> Wenn du einen invertierenden haben möchtest, bieten sich, abgesehen von> der Darlington Endstufe und der minimal anderen Pinbelegung z.B. der> ULN2003 oder der ULN2803 an.
Ich habe bei Reichelt einen ULN 2003 A gefunden. Kann man den auch
verwenden?
Ich verstehe die Schaltung noch nicht ganz. Wenn der
Microcontrollerausgang auf 1 steht, sollten die beiden NPN-Transitoren
im IC doch schalten? D.h. wenn ich zwischen Out und + der Stromquelle
die LEDs anschließe, sind sie immer dann an, wenn der Ausgang des
Microcontrollers auf 1 steht. Vielleicht habe ich den Begriff
"invertierend" falsch verwendet. Ich meine damit, dass die LEDs dann an
sind, wenn am Microcontrollerausgang 0 geschaltet ist.
Wozu ist Pin 9, der mit allen Ausgängen über eine Diode verbunden ist?
Wenn man dort + anschließen würde, dann würden die Dioden sperren und
bei - wären die LEDs am Ausgang immer an.
Sascha K. schrieb:> Ich habe bei Reichelt einen ULN 2003 A gefunden. Kann man den auch> verwenden?
Die pull up des AT89C2051 liefern nur 80uA, alle ULN2003,2003A,2803
wollen aber 0.5mA haben. Alle sind also nicht ohne Sondermassnahme
brauchbar.
Damit das funktioniert, muss ein zusätzlicher pull up Widerstand an
jeden Ausgang
1
+5V +5V
2
| |
3
4k7 100R
4
| LED |
5
uC-Ausagng --+--ULN2x03--|<|--+
mit dem Nachteil, daß der ULN die LEDs erst mal einschaltet, bis der uC
den Ausgang auf 0 setzt.
> Ich verstehe die Schaltung noch nicht ganz. Wenn der> Microcontrollerausgang auf 1 steht, sollten die beiden NPN-Transitoren> im IC doch schalten? D.h. wenn ich zwischen Out und + der Stromquelle> die LEDs anschließe, sind sie immer dann an, wenn der Ausgang des> Microcontrollers auf 1 steht.
So wäre es, wenn der uC genug Strom liefern könnte, wie es ein AVR tun
würde, oder eben wenn der externe pull up spendiert wird.
> Vielleicht habe ich den Begriff> "invertierend" falsch verwendet. Ich meine damit, dass die LEDs dann an> sind, wenn am Microcontrollerausgang 0 geschaltet ist.
Da der ULN2x03 noch mal invertiert, sind die LEDs an, wenn der
uC-Ausgang auf 1 steht, also ein Eingang ist, obwohl die LEDs mit +
verbunden sind.
> Wozu ist Pin 9, der mit allen Ausgängen über eine Diode verbunden ist?
Für induktive Lasten. Darf bei LEDs offen bleiben.
> Wenn man dort + anschließen würde, dann würden die Dioden sperren
Richtig.
> und bei - wären die LEDs am Ausgang immer an.
Richtig. Lamp test :-)
Hallo Michael,
vielen Dank für die ausführliche Antwort,
Michael B. schrieb:> Die pull up des AT89C2051 liefern nur 80uA, alle ULN2003,2003A,2803> wollen aber 0.5mA haben. Alle sind also nicht ohne Sondermassnahme> brauchbar.>> Damit das funktioniert, muss ein zusätzlicher pull up Widerstand an> jeden Ausgang>
1
> +5V +5V
2
> | |
3
> 4k7 100R
4
> | LED |
5
> uC-Ausagng --+--ULN2x03--|<|--+
6
>
> mit dem Nachteil, daß der ULN die LEDs erst mal einschaltet, bis der uC> den Ausgang auf 0 setzt.
Ok diesen Effekt wollte ich eigentlich verhindern, indem ich bei 0
schalte.
> Da der ULN2x03 noch mal invertiert, sind die LEDs an, wenn der> uC-Ausgang auf 1 steht, also ein Eingang ist, obwohl die LEDs mit +> verbunden sind.
Ich habe das bisher so verstanden, dass die Ausgänge nach dem Reset alle
auf 1 gesetzt sind (also eine Spannung anliegt) und bei 0 Masse anliegt.
Ich verstehe noch nicht ganz, warum der Ausgang bei 1 ein Eingang ist.
Würde der Ausgang nicht durch den Widerstand geschaltet?
Sascha K. schrieb:> Ich verstehe noch nicht ganz, warum der Ausgang bei 1 ein Eingang ist.
Weil ein 51er seine Pins gar nicht zwischen Ein- und Ausgang umscgalten
kann. Ist es wirklich unzumutbar, sich das Datrnbkatt von dem IC den man
verwendet virher mal durchzulesen ?
Entweder der Pin ist über einen hochohmigen internen Pull Up mit 5V
verbunden, also HIGH und kann extern für LOW auf Masse gezogen werden,
oder intern schaltet ihn ein Transistor an Masse, dann ist er ein
Ausgang auf LOW.
Sascha K. schrieb:> Ok diesen Effekt wollte ich eigentlich verhindern
Daher wurden bereits sinnvollere Schaltungen gezeigt, die du aber
ignorierst.
MaWin schrieb:> Sascha K. schrieb:>> Ich verstehe noch nicht ganz, warum der Ausgang bei 1 ein Eingang ist.>> Weil ein 51er seine Pins gar nicht zwischen Ein- und Ausgang umscgalten> kann. Ist es wirklich unzumutbar, sich das Datrnbkatt von dem IC den man> verwendet virher mal durchzulesen ?
Nein das ist nicht unzumutbar. Es ist auch klar, dass es keine
Umschaltung gibt. Das steht ja bidirektional und dass Pin P1.0 und P1.1
einen externen Pullup benötigt.
> Entweder der Pin ist über einen hochohmigen internen Pull Up mit 5V> verbunden, also HIGH und kann extern für LOW auf Masse gezogen werden,> oder intern schaltet ihn ein Transistor an Masse, dann ist er ein> Ausgang auf LOW.
Ok danke verstanden.
>> Ok diesen Effekt wollte ich eigentlich verhindern> Daher wurden bereits sinnvollere Schaltungen gezeigt, die du aber> ignorierst.
Nein ich habe ja diesen etwas ältere Thema wieder aufgegriffen, weil ich
einen Chip suche.
Die Lösung von Carsten genau das, was ich suche:
VCC
|E
uC--4k7--|< PNP
|
1k Last
| |
+--|< NPN
| |E
10k |
| |
GND GND
Da ich 6 Ausgänge benötige möchte ich ungern 12 Transistoren und 18
Widerstände verbauen, bevor ich nicht ausgeschlossen habe, das es sowas
als Chip gibt ;-).
Wie gesagt, habe ich den Begriff invertierend falsch verwendet. Der
UDN2595, der vorgeschlagen wurde, schaltet ein, wenn am Eingang Low
anliegt. Im Wesentlichen entspricht er Carstens Schaltung. Leider habe
ich den Chip nur noch bei Ebay in China gefunden.
Peter D. schrieb:> Warum nimmst Du nicht einfach den AT89LP2052?
...oder AVR.
Weil ein 51er letztlich sogar einfacher ist, denn er hat schon einen
eingebauten dauernd aktiven pull up.
So braucht man beim MOSFET keinen externen 100k pull down, wie er sonst
beim AVR nötig ist um den MOSFET nach RESET sicher aus zu halten weil
der Pin ja zu Beginn auf Eingang geschaltet ist.
Das einzige Problem beim 51er: Man darf nicht nur borniert am NPN
festhalten und PNP als Teufelswerk einer längst vergangenen
Germaniumgeneration abtun.
Mit einem LogicLevel P MOSFET wie FDS6975 kann man sogar 12V Lasten
schalten, OHNE der pull down und trotzdem bleibt der Verbraucher nach
einem RESET aus.
1
+5V -+---+
2
|S |
3
51--|I | +
4
| 12V
5
Last | -
6
| |
7
+---+
Man muss halt bloss etwas flexibel denken können in der Birne. Andere
kaufen einen AT89C2052.
Klingt interessant. Da muss ich mal schauen, ob ich einen LogicLevel P
MOSFET als nicht SMD finde. Schalten möchte ich jedoch nur 2 LEDs pro
Ausgang, da sind 12V nicht nötig.
Ich habe zwar früher meistens mit NPN-Transistoren experimentiert, aber
warum sollen denn PNP-Transitoren Teufelswerks sein ;-). Gerade hier
macht das doch Sinn.
Was ist denn der Unterschied zwischen den beiden Lösungen?
> Sauberer ist (eingeschaltet wird bei LOW)
1
VCC
2
|E
3
uC--4k7--|< PNP
4
|
5
1k Last
6
| |
7
+--|< NPN
8
| |E
9
10k |
10
| |
11
GND GND
> aber das ist natürlich aufwändger. Also doch besser gleich mit dem PNP> schalten. Die meisten Leute lieben es ja auch, plus zu schalten und> bekommen bei NPN eher Gedankenprobleme.
1
VCC
2
|E
3
uC--1k--|< PNP
4
|
5
Last
Was könnte man hier für Transitortypen verwenden? Ich werde
wahrscheinlich pro Ausgang je 2 LEDs mit Vorwiderstand für 5V parallel
schalten. Eine LED braucht 13mA laut Reichelt.
Am Wochenende werde ich die ganze Schaltung mal zeichnen.
Ich möchte in diesem Fall gerne den AT89C2051 verbauen ;-). Da gibt es
jedoch keine logische Erklärung für :-).
Sascha K. schrieb:> Was ist denn der Unterschied zwischen den beiden Lösungen?
Die eine ist einfacher als die andere.
Beide schalte die LED bei 0 ein.
Sascha K. schrieb:> Was könnte man hier für Transitortypen verwenden? Ich werde> wahrscheinlich pro Ausgang je 2 LEDs mit Vorwiderstand für 5V parallel> schalten. Eine LED braucht 13mA laut Reichelt.BC557, BC857
Ich habe die Schaltung mal gezeichnet (meine erste Zeichnung mit Target
3001). Die Vorwiderstände zu den LEDs haben keinen Wert, weil ich da
LEDs mit Vorwiderstand für 5V verwenden möchte. Ausgang P1.0 und P1.1
habe ich übersprungen, weil diese Ausgänge laut Datenblatt externe
Pull-Up-Widerstände benötigen. Als Stromquelle ist ein 9V Block oder
Netzteil vorgesehen.
Die Frage wäre noch, ob 1K-Ohm vor der Basis der Transistoren ausreicht?
Hallo!
Ich setze bei den 8051ern immer, ohne groß zu überlegen, ein 8x10k
Widerstandsarray an den Port1. Nur in den Fällen, wo ich den Komparator
benötige, ist das anders.
Sascha K. schrieb:> Die Frage wäre noch, ob 1K-Ohm vor der Basis der Transistoren ausreicht?
Funktioniert.
Sascha K. schrieb:> Ausgang P1.0 und P1.1> habe ich übersprungen, weil diese Ausgänge laut Datenblatt externe> Pull-Up-Widerstände benötigen.
Vernünftig.
> Als Stromquelle ist ein 9V Block oder Netzteil vorgesehen.
Ein 9V Block liefert aber keine 9V, sondern nur wenn er randvoll ist,
sonst geht es herunter bis 5.4V (Entladung mit Kapazität laut
Datzenblatt). Dafür taugt ein 7805 nicht, der will mindestens 7.5V
sehen, nimm einen low drop Regler.
> Die Frage wäre noch, ob 1K-Ohm vor der Basis der Transistoren ausreicht?
Macht 4.3mA Basisstrom, bei üblichen 1:10 bis 1:20 Stromverstärkung im
gesättigten Schaltbetreib kann man damit also 86mA (100mA) schalten.
Wenn du nicht so viel schalten willst, kannst du den Ansteuerstrom
kleiner machen, bei 20mA z.B. 4k3 (oder 4k7).
Sascha K. schrieb:> schaltung.png
Das sollte klappen, du darfst aber nicht vergessen, Abblockkondensatoren
vor und hinter den 3-Bein Regler zu schalten. Ausserdem sollte dicht am
MC ein C mit etwa 100nF-470nF die Versorgung abblocken (also von Vcc
nach GND).
Da du LED hart schaltest, könnte es evtl. sinnvoll werden, in die
Versorgung zu denen eine Drossel und nochmal ein Abblock-C zu legen. Das
wäre in die Leitung zu den Emittern der BC557. Zugegeben, ich liebe
Drosseln...
Sascha K. schrieb:> Die Frage wäre noch, ob 1K-Ohm vor der Basis der Transistoren ausreicht?
Völlig übersteuert. Der BC557C hat eine Verstärkung <400.
10k reichen dicke aus.
Vielen Dank für die Hinweise.
Matthias S. schrieb:> Das sollte klappen, du darfst aber nicht vergessen, Abblockkondensatoren> vor und hinter den 3-Bein Regler zu schalten. Ausserdem sollte dicht am> MC ein C mit etwa 100nF-470nF die Versorgung abblocken (also von Vcc> nach GND).
Die Kondensatoren habe ich eingeplant. (Für den 470nF und 330nF
Tantal-Kondensatoren. Ich hoffe die passen.)
> Da du LED hart schaltest, könnte es evtl. sinnvoll werden, in die> Versorgung zu denen eine Drossel und nochmal ein Abblock-C zu legen. Das> wäre in die Leitung zu den Emittern der BC557. Zugegeben, ich liebe> Drosseln...
Wie würde man Drossel und Kondensator schalten und welche Werte sind da
sinnvoll? Einmal zwischen + und alle Emitter?
Bezüglich des Transistors und des Vorwiderstandes bin ich mir noch
unsicher, da es verschiedene Aussagen gibt. Schalten möchte ich etwa
26mA (2 x 13mA LED). Sollte man besser den BC557C anstatt BC557A
verwenden? Der hat ja eine höhere Verstärkungsleistung (DC Current Gain
ist die Verstärkungsleistung?)
Danke für den Tipp mit dem Low Drop Spannungsregler. Ich habe einen
einen LM 1117 T5,0 gefunden. Dann sollten die Abblockkondensatoren
jedoch 10 µF laut Datenblatt betragen. Ich muß morgen noch einmal
genauer ins das Datenblatt schauen.