Hi Leute, entschuldigt wenn mir kein besserer Betreff eingefallen ist. Ich habe mal wieder eine reine Elektonikerfrage :) Also, auf http://www.maxim-ic.com/appnotes.cfm/appnote_number/2199 wird beschrieben wie man mit Push-Pull Ausgänge und einem Transistor eine einfache Konstantstromansteuerung von LEDs bewerkstelligen kann. Im besonderen interessiert mich dabei die Bilder 9 und 11. Allerdings eben bezogen auf einen AVR ! Gut dachte ich mir schaue ich mal im Datenblatt der AVR's (neuere Typen natürlich) nach und informiere mich genauer über die Ports. Also Push-Pull Ausgänge scheinen die AVR's ja nicht zu haben, oder doch ? Ich frage weil ich eben kein Schaltbild oder Equivalenzbild der Portausgänge gefunden habe. Es gibt zwar zb. im ATMega8 Datenblatt eine grobe Übersicht auf Seite 50, aber daraus kann ICH nicht meine Schlüsse ziehen. Wäre die AN von Maxim nun übertragbar auf die AVR's ? Mein Ziel wäre es wie im Bild 11 gemultiplexte LEDs anzusteuern. Es sind RGB LEDs mit gemeinsammer Anode, und jede Farbe wird in einer Spalte einer Matrix betrieben. Ergo: über den PNP als schaltbare Konstantstromquelle werden verschiedenfarbige LEDs gemultiplext betrieben. Oben mal 3 Columns und unten die 3 MOSFETs bilden die Rows. Es ist immer nur einer dieser MOSFETs zu einem Zeitpunkt durchgeschaltet und so immer nur eine der 3 LEDs pro RGB-LED. Um die Beschaltung der Matrix selber geht es mir hier nicht. Gruß Hagen
Keiner eine Idee ? Ich push nur ungern, kann mir aber nicht vorstellen das alle hier mit dem AVR arbeiten und keiner genau weis wie die Ports elektrisch aufgebaut sind. Oder zumindestens mir einen Hinweis oder Link geben kann !? Auch eine Suche in den Datenblättern/AN's bei Atmel war erfolglos. Gruß Hagen
Danke Crazy Horse. Ich versuche das nochmal zu präzesieren: Die RGB LEDs haben eine unterschiedliche Vorwärtsspannung von 3.9V für Blau, 1.9V Rot und 3.4V Grün. Alle werden durch den PNP Transistor über Vcc versorgt. Der PNP hat Vbe 4.0V und Vcc ist 5V. Laut Formel aus der AN von Maxim also I_led = (Vcc - Vbe)/R -> (5V - 4V) / 50 Ohm = 20mA. Wenn ich also mit einem AVR so wie in den Maxim AN immer nur eine der 3 LEDs in der RGB-LED ansteuere so müsste sich mit einem Widerstand von 50 Ohm denoch immer 20mA LED Strom einstellen ? Was mich dabei stutzig macht sind 3 Punkte: 1.) der PNP wird ohne Basiswidertand betrieben 2.) obwohl die 3 RGB's pro LED unterschiedliche Vorwärtsspannung haben stellt sich bei Einzelansteuerung immer der gleiche Strom ein 3.) wieviel Strom fleißt in den Pin des AVR's bzw. wieviel wird aus dem Pin gezogen ? Erklärbar wäre dies doch nur auf Grund der internen Aufbauweise eines Ports des AVR. Klar, falls sich das exakt so verhält wäre dies ideal für mich. Nur blicke ich eben die elektronischen Grundlagen dafür noch nicht. Gruß Hagen
Hallo Hagen, die Kontastanstromquelle funktioniert wie folgt. Der AVR Output geht auf Low, damit liegt auch die Basis des PNP auf Masse, am Emitter stellt sich jetzt eine um ca. 0,7V höhere Spannung als an der Basis ein. Der Strom wird jetz vom Emitter- Widerstand bestimmt. I=(VCC-0,7V)/R Du brauchst keinen Basiswiderstand, da durch die Basis nur der Strom geteilt durch den Verstärkungsfaktor des Transistors fliest. Aber: Die SChaltung wird so nicht funktionieren, weil die LED zu viel Spannung benötigen. Dies siehst du auch bei Maxim, da liegen die LEDs nicht an Masse sondern an einer negativeren Spannung. Diese Spannung muß vom Betrag her um ca. 1V größer sein als die maximal abfallende Spannung einer Leuchtdiode. (Damit über der EC-Strecke noch Spannung anliegt und er damit regeln kann). Du schaltest aber die LED über die Fets nur gegen Masse. Gruß Volker
Hm manchmal habe ich das Gefühl das Transistorenschaltungen doch viel komplizierter sind als vermutet. "Der AVR Output geht auf Low, damit liegt auch die Basis des PNP auf Masse, am Emitter stellt sich jetzt eine um ca. 0,7V höhere Spannung als an der Basis ein. Der Strom wird jetz vom Emitter- Widerstand bestimmt. I=(VCC-0,7V)/R" Hm, da es ein PNP ist müsste sich doch Vcc - 0.7V als Emitterspannung einstellen, also 5V - 0.7V = 4.3V oder ? Die LEDs benötigen minimal 3.9V +1V = 4.9V bleibt also eine Differnz von 4.3V - 4.9V == -0.6V die mir fehlen richtig ? Wenn ich alles richtig verstanden habe dann hilft es mir auch nichts die Spannung am Transistor um Vcc + x Volt zu erhöhen da dann der PNP nicht richtig aufmacht. Das Problem dürfte der Spannungsabfall von 0.7V sein. Wäre es möglich statt einem PNP einen P-Channel-MOSFET zu benutzen ? Meine Fragerei zielt primär darauf ab die verschiedenen LEDs in einer Zeile immer mit gleichem Strom zu versorgen, klar ich möchte ja immer gleiche Helligkeiten erreichen. Aber am wichtigsten ist der Punkt das ich so viele Vorwiderstände einsparen könnte, und dies wäre PCB technisch wichtig für mich. Immerhin sollen ja viel mehr LEDs auf kleinestem Raum angesteuert werden. Hm, sogesehen sind die AN von Maxim eher theoretischer Natur. Gruß Hagen
Hallo Hagen, soll natürlich Konstantstromquelle heißen. Ich hab mal schnell ne Schaltung gepinselt, mit der es funktionieren sollte, allerdings benötigt man noch 9V. Die Spannung an der Basis von T2 wird mittels T1 zwischen 5V und 9V umgeschaltet. Bei 9V (Portpin für T1 auf Low) ist die Stromquelle aus, bei 5V (Portpin für T1 auf high) ist die Stromquelle an. Hoffe, dass die Schaltung funktioniert, ist noch so früh am morgen. Gruß Volker
Hallo Hagen Ich weiß nicht wie du darauf kommst: "Der PNP hat Vbe 4.0V". bei einem PNP ist im offenen Zustand der Emitter um ca. 0,7V größer als die Basis. bei einem NPN ist im offenen Zustand die Basis um ca. 0,7V größer als der Emitter. Volker
Danke Volker, das hatte ich mir schon fast gedacht und war auf der Suche nach entsprechenden Doppeltransistoren :) Das Problem ? ich brauche 64 Stück von den Dingern auf einem PCB das noch sehr klein sein muß. Ich muss mich also doch auf die Suche nach einer anderen integrierten Lösungen begeben. Shiftregister oä. fallen aus da die LEDs sehr schnell angesteuert werden müssen. Gruß Hagen
Hallo Hagen, habe die Schaltung nochmals modifiziert, sollte jetzt mit einem Transistor+Widerstand weniger auskommen und läuft mit 5V. Schaltung ohne Gewähr. Gruß Volker
Hi Volker, super dank an dich. Ich habe mal das Datenblatt des PNP's angehangen den ich nutzen wollte. Wäre es zuviel verlangt wenn ich dich bitten würde mir deine Schaltung genauer zu erklären ? HaReddmann AT T-Online DOT de. Um 20mA durch die LEDs fließen zu lassen muß Rstrom 35 Ohm sein. Auf die 4.7V kommst du durch die Spannung an der Basis von 4.0V + die 0.7V Vbe. Aber wie kommst du auf die 4.0V an der Basis ? Ich werde das mal am Wochenende experimentell abchecken. Gruß Hagen
Nun ja, wenn der Portpin des AVR auf low liegt ergibt sich durch den Spannungsteiler von R1, R2 nach dem ohmschen Gesetz Ub= 5V/(R1+R2)* R1 = 5V/1270R * 1000R also ca. 4V Wichtig ist, dass der Spannungsteiler relativ niederohmig ist, bzw. der Transistor eine hohe Verstärkung hat. Grund: angenommen der Transistor hat eine Vertärkung von 100, bei 20mA Emitter-Kollektor Strom wäre das ein Basis Strom von 0,2mA. Diese 0,2mA belasten natürlich den Spannungsteiler und verändern die Basisspannung und somit auch den Strom durch die LED. wenn der Portpin des AVR an R2 auf High liegt, liegt auch die Basis auf 5V, somit ist die Stromquelle ausgeschaltet. Um 20mA fließen zu lassen komme ich auf R=0,3V/20mA= 15 Ohm Die SChaltung hat aber einen kleinen Nachteil, Spannungsschwankungen auf der 5V Schiene verändern auch den Strom und die 0,3V sind halt ziemlich gering, die Stromkonstanz ist also nicht die allerbeste, sollte aber für LEDs ausreichend sein. Die Konstanz ist allein davon abhängig, wie stabil die Differenz der 5V und den 4,7V ist (also der 0,3V) und der Stabilität des Widerstandes. Das Problem ist halt, dass die Blaue LED schon 3,9V benötigt und somit dem Transitor zum regeln über der EC-Strecke nur noch 0,8V übrig bleiben, deshalb bleiben für die Stromregelung nur ca. 0,3V übrig. Der Transitor sieht ganz gut aus, ich glaube aber der BC807-40 hat eine höhere Verstärkung, auch SOT-23 und könnte sogar billiger sein. Ansonsten: Du hast recht, einfach mal aufbauen und auprobieren, ist ja in 15min erledigt. Falls du noch Fragen hast einfach nochmal melden. Volker
Fehler, muß oben natürlich lauten: Ub= 5V/(R1+R2)* R2 = 5V/1270R * 1000R also ca. 4V Volker
Hi Volker, "Ub= 5V/(R1+R2)* R2 = 5V/1270R * 1000R also ca. 4V" Mein Fehler war das ich nicht (R1+R2) gerechnet hatte. "Die SChaltung hat aber einen kleinen Nachteil, Spannungsschwankungen.." Das ist doch relativ :=) Mir geht es nicht darum das zu jedem Zeitpunkt immer 20mA fließen, genaugenommen benötige ich zwischen 50-80mA da ich sehr schnell pulsen will. Der einzigste Zeitpunkt der wichtig ist ist wenn die LEDs einer Spalte als solches gemeinsam angesteuert werden. Dann soll sichergestellt sein das alle LEDs mit gleicher Helligkeit leuchten. Normalweise könnte ein normaler LED-Vorwiderstand ausreichend sein, nur so wie jetzt ist es einfach besser weil alle LEDs der RGB LED eben mit ungefähr gleichem Strom betrieben werden können, OHNE das ich für jede LED einzeln einen Vorwiderstand benötige. Im Grunde also zwei wichtige Kriterien: 1.) LED's einer Spalte -> gleicher Strom -> gleiche Helligkeit 2.) möglichst ohne einzelne Vorwiderstände auskommen um Bauteile zu sparen, würde ich's ganz exakt machen so benötigte ich 3 mal mehr Vorwiderstände wie jetzt. Das über den gesammten zeitlichen Verlauf immer der gleiche Strom fließt ist nicht so wichtig, besonders weil ich glaube das 5mA mehr oder weniger im Pulsbetrieb nicht auffallen werden. Einzigste Sache die mir noch Sorgen bereitet sind die Bauteiltoleranzen. Den SMBTA56 möchte ich benutzen weil ich 1000 Stück für schlappe 2 Euro bekommen habe :=) Aber noch eine wichtige Frage: Der AVR hat ja eine Portprotection gegen Überspannungen (Schutzdioden). Ich habe da mal eine AN gesehen in der 230V über 1M an einen Pin gelegt wurde. Ich könnte doch die Spannung für die LEDs erhöhen ? sagen wir mal 6V statt 5V oder ? Zb. R1=1K, R2=470, Vled = 6V -> ergibt 4V an Basis. I_led = (6V - 4.7V)/65 Ohm == 20mA. Und 1.3V Differenz. Ich vermute aber das der PNP dann nicht mehr richtig schaltet, oder ? Gruß Hagen
mit 6V sollte es gerade noch gehen, anschalten ist kein Problem, nur irgendwann kannst du den PNP und damit den LED Strom nicht mehr komplett ausschalten, da von den 6V ausgehend ein Strom über die interne Schutzdiode des AVR nach VCC=5V fließen kann, deswegen hatte ich ja in der ersten Schaltung noch den NPN drin (und 9V LED Spannung). Aber wie gesagt sollte es mit 6V noch gehen, abzüglich der 4V bleibt noch 1V übrig, diese müßten dann die EB-Diode und die AVR-Diode "überwinden" damit noch ein Basistrom fließen kann. Kaputtgehen kann bei den geringen Strömen eigentlich nichts. wie wärs mit 3,8V --> 4,5V und 5,5V Spannung für LED? Ansonsten hast du recht, jegliche weitere Präzision benötigt mehr Bauteile und ist wohl unnötig. Es wäre vielleicht auch noch eine Alternative für R1 eine Zenerdiode (5,6V),Kathode an die Basis, Anode an den AVR zu schalten. LED-Spannung auf ca. 9V erhöhen, damit ergibt sich wenn der AVR auf Low geht: Basis=5,6V Emitter=6,3V UanR=9V-6,3V=2,7V Wenn der AVR auf High geht fließt durch die Zenerdiode auch kein Strom mehr, da ja mindestens 10,6V benötigt würden. (Allerdings fließt noch ein sehr geringer Leckstrom) Baue es mal auf und teste es einfach (auch über größere Temperaturschwankungen. Volker
Hi Volker ich habe mit LTSpice einige Simulationen durchgeführt, anbei nun meine Lösung die ich dann in Hardware testen werde. Links der FPGA/AVR wird intern mit 3.2 Volt betrieben, teilweise OpenCollector. Rechts die LEDs können im Bereich von 4.2 Volt bis 15.0 Volt betrieben werden. Dabei ändert sich für alle LED's gleichermaßen der Strom kontinulierlich, egal in welchem Muster sie angesteuert werden. Die LED's werden mit 1 Mhz angesteuert. Wie du feststellen kannst ist die Dimensionierung der Widerstände eine andere als die von dir vorgeschlagene. Ich habe die Basiswiderstände absichltich höher dimensioniert um Strom zu sparen. Natürlich zeigt das JPEG nur einen Teil der LED-Zeilen-Ansteuerung. Insgesamt wird es wohl 16 Zeilen * 12 Spalten == 64 RGB LEDs geben. Vorteil bei der jetzigen Lösung ist es das man V_LED im Bereich 4.2 bis >15 Volt einregeln kann und für alle LED's stellt sich der gleiche Strom ein. Gruß Hagen
Hallo Hagen, sorry, ich habe den Thread erst eben wieder entdeckt. Im Prinzip hast du jetzt meine zuerst gepostete Schaltung verwendet, nur das der NPN-Transistor eben der Open-Kollektor Ausgang deines Controllers/FPGA ist. Funktioniert die Schaltung jetzt wie gewünscht? Gruß Volker
@Hagen "Constant Current Source" - entschuldigt wenn mir kein besserer Betreff eingefallen ist "Zu meiner Zeit" hätte ich den Betréff einfach "Konstantstromquelle" genannt, oder "Konstanstromquelle an einem AVR". Möglicherweise war deine Motivation / Vermutung, daß man heutztage mit dem entsprechenden eglischen Fachbegriff mehr Leser erreichen kann, weil die einfach kein Deutsch mehr verstehen :-(
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.