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
Was für ein Transistor ? Was hängt an dem dran (LED, 100W Motor usw.) ?
"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 , ohne Vorwiderstand und einfach an die basis nen Pullup von 2k2-4k7
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.
:
Bearbeitet durch User
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.
1 | VCC |
2 | |E |
3 | uC--1k--|< PNP |
4 | | |
5 | Last |
:
Bearbeitet durch User
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.
Warum nimmst Du nicht einfach den AT89LP2052? Der kann 10mA high treiben (Port in Push-Pull Output Mode).
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 :-).
:
Bearbeitet durch User
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...
:
Bearbeitet durch User
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.
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.