Hallo,
Ich bin neu im Forum und hoffe, dass ich alles richtig mache... :)
Im Anhang ist ein Schaltplan (ebenfalls erster Schaltplan, also auch
nicht unbedingt so hübsch / korrekt), der für eine mit Zeitmultiplexing
betriebene Led-Matrix gedacht ist.
Das Hauptproblem ist, dass ich nicht weiß, wie ich die Kondensatoren
richtig einsetzten muss, da ich elektrotechnisch eher unbegabt bin
(noch).
Verzichten möchte ich auf die Kondensatoren allerdings auch nicht, da
ich starke Spannungsschwankungen befürchte, je nach dem was auf der
Matrix angezeigt wird.
Außerdem weiß ich nur so halb, wie der UDN (oder auch jeder andere)
Treiber funktioniert und ob ich auch noch als Gegenstück einen
Sink-Driver (ULN) benötige.
Ich hoffe ihr könnt mir mit meinen Plänen ein wenig helfen und nehmt
einen Anfänger in eure Community auf :)
Lg,
Janik
Genau falsch.
Der UDN schaltet mehr Strom, schaltet also die Direktverbindung, der AVR
schaltet weniger Strom, schaltet also einzelne LEDs mit Vorwiderstand.
Der Strom des AVR reicht eh bloss für durchschnittlich 4mA pro LED, ob
dir das hell genug ist, musst du entscheiden.
Ausserdem verbracuht der UDN 1.5V, da bleiben für ÖED und Vorwiderstand
nicht ehr viel übrig, man sollte ihn nicht mit 5V sondern mit 9V
verbinden.
Was heisst 9V, ein 9V Blockbatterie hat nur beim Verkauf 9V, die
Spannung lässt dann während der Entladung bis 5.6V nach. Wenn als
Spannungsregler ein 7805 statt einem LM2940 verwendet wird, regelt der
unter 7.5V schon nicht mehr die 5V.
C0 bis C4 sind falsch und bremsen dort nur die Multiplexgeschwindigkeit.
Die sollen zwischen VCC und GND von AVR und UDN und an Ausgang und
Eingang des Spannungsreglers nach Masse.
Irgendwie fragt man sich, warum hier jeder das Rad falsch neu erfinden
will
http://www.mikrocontroller.net/attachment/44489/ledmatrix5x5.png
> Der UDN schaltet mehr Strom, schaltet also die Direktverbindung, der AVR> schaltet weniger Strom, schaltet also einzelne LEDs mit Vorwiderstand.> Der Strom des AVR reicht eh bloss für durchschnittlich 4mA pro LED, ob> dir das hell genug ist, musst du entscheiden.
Und wie wäre das zu beheben? Ich dachte der UDN kümmert sich dann um die
Versorgung der LEDs? Das der AVR nicht reicht war mir klar nur bin ich
eben davon ausgegangen, dass ich das ganze mit dem UDN umgehe...
> C0 bis C4 sind falsch und bremsen dort nur die Multiplexgeschwindigkeit.> Die sollen zwischen VCC und GND von AVR und UDN und an Ausgang und> Eingang des Spannungsreglers nach Masse.
Okay, ich werde mal versuchen das zu korrigieren :) Mal gucken obs mir
gelingt, kenne mich nicht gut aus :/
> Irgendwie fragt man sich, warum hier jeder das Rad falsch neu erfinden> will
Sorry, wenn ich mich nicht auskenne. Aber der verlinkte Thread benutzt
z.B Transistoren und ich weiß damit noch weniger anzufangen als mit dem
Kram hier ;)
> C0 bis C4 sind falsch und bremsen dort nur die Multiplexgeschwindigkeit.> Die sollen zwischen VCC und GND von AVR und UDN und an Ausgang und> Eingang des Spannungsreglers nach Masse.
So besser? Ich fürchte nicht, aber anders habe ich es nicht verstanden
:/
Zur
MaWin schrieb:> Was heisst 9V, ein 9V Blockbatterie hat nur beim Verkauf 9V, die> Spannung lässt dann während der Entladung bis 5.6V nach. Wenn als> Spannungsregler ein 7805 statt einem LM2940 verwendet wird, regelt der> unter 7.5V schon nicht mehr die 5V.
Ich sollte also besser einen LM2940 verwenden, um eine Konstante
Spannung von 5V zu erhalten?
Und wie ist das Problem mit der Stromversorgung für die LEDs zu beheben,
wenn der Treiber scheinbar nichts bringt?
Noch ein Hinweis:
Die Widerstände gehören nicht auf die Seite des UDN, sondern zwischen
LEDs und ATmega.
Janik Sch schrieb:> Und wie wäre das zu beheben? Ich dachte der UDN kümmert sich dann um die> Versorgung der LEDs? Das der AVR nicht reicht war mir klar nur bin ich> eben davon ausgegangen, dass ich das ganze mit dem UDN umgehe...
Ja, das ist schon richtig. Der UDN muss ja auch den 5-fachen Strom
treiben können (wenn alle LEDs einer Spalte leuchten sollen). Wenn die
LEDs mit 20mA betrieben werden (s.u.) sind das 100mA.
Aber MaWin meinte, ob der Strom der Zeilen für den ATmega nicht zu
groß ist: Der Augang kann max. 20mA treiben, das gibt beim Muliplexen
von 1:5 einen Mittelwert von 4mA. Ob das reicht hängt ab von den LEDs
und der gewünschter Helligkeit. Wenn das nicht reicht, brauchst auf der
Seite auch Treibertransistoren.
Gruß Dietrich
Janik Sch schrieb:> So besser? Ich fürchte nicht, aber anders habe ich es nicht verstanden> :/
Das hast Du richtig vorhergesehen ...
Die Kondensatoren sind dort noch falscher als beim 1. Versuch.
Janik schrieb:> Verzichten möchte ich auf die Kondensatoren allerdings auch nicht, da> ich starke Spannungsschwankungen befürchte
Um Spannungsschwankungen auszugleichen musst Du die
Versorgungsspannung abblocken. Das heißt dann "Stützkondenstor" und
der gehört zwischen Vs und GND. Und dann einer am UDN, 2 am ATmega und
je nach Regler einer am Regler-Ausgang (Datenblatt!).
Noch was: die verschiedenen GNDs müssen alle miteinander verbunden
werden, d.h. zusammen gehört:
- "-" der 9V
- GND des UDN
- GND des Spannungsreglers
- alle GNDs des ATmega
Gruß Dietrich
Janik Sch schrieb:> So besser?
Nein, völliger Unsinn.
Du rätselst frei rum.
Was heisst C0 zwischen VCC und GND des AVR ?
Was heisst C1 zwischen VCC und GND des UDN ?
Was heisst C3 zwischen Ausgang des Spannungsreglers und Masse ?
Was heisst C3 zwischen Eingang des Spannungsreglers und Masse ?
Was heisst UDN direkt mit den LEDs verbinde ?
Was heisst AVR über Widerstände mit den LEDs verbinden ?
Das war doch eigentlich alles nicht zu schwer um es verstehen zu können.
Janik Sch schrieb:> Ich sollte also besser einen LM2940 verwenden, um eine Konstante> Spannung von 5V zu erhalten?
Wenn du eine 9V Blockbatterie und kein 9V Netzteil als Versorgung hast
ja, aber woher wollen wir wissen was du hast, du hast dir nie die Mühe
gemacht es hinzuschreiben.
Janik Sch schrieb:> Aber der verlinkte Thread benutzt z.B Transistoren
Woran man vielleicht erkennt, daß sie sinnvoll sind. Zwar kann man ein
paar davon durch den UDN2981 ersetzen, aber der ist pro LED auch nicht
anders: Ein Anschluss an plus, ein Anschluss rein, ein Anschluss raus.
Wenn man sowieso nicht versteht, wie es funktioniert, ist von aussen
alles dasselbe.
Ja, ich weiß, auch im Netz grassieren falsche Schaltpläne zu hauf, man
kann nicht einfach einen nehmen und glauben daß der schon richtig ist,
weil vor allem Laien so was zeichnen bevor es das erste mal
funktioniert. Auch der von mir verlinkte hat Defizite aber ich fand auf
die Schnelle keinen mit UDN2981.
MaWin schrieb:> Was heisst C0 zwischen VCC und GND des AVR ?> Was heisst C1 zwischen VCC und GND des UDN ?
Aber VCC und GND ist beim AVR und beim UDN doch dasselbe, oder?! Also
jedenfalls laut meinem Schaltplan, aber das heißt ja nix :D
> Das war doch eigentlich alles nicht zu schwer um es verstehen zu können.
Ne, eigentlich nicht, aber ich brauch noch ein wenig Übung um alles auf
Anhieb zu verstehen...
> Wenn du eine 9V Blockbatterie und kein 9V Netzteil als Versorgung hast> ja, aber woher wollen wir wissen was du hast, du hast dir nie die Mühe> gemacht es hinzuschreiben.
Erstmal wird das ganze über eine 9V Blockbatterie laufen.
> Woran man vielleicht erkennt, daß sie sinnvoll sind. Zwar kann man ein> paar davon durch den UDN2981 ersetzen, aber der ist pro LED auch nicht> anders: Ein Anschluss an plus, ein Anschluss rein, ein Anschluss raus.> Wenn man sowieso nicht versteht, wie es funktioniert, ist von aussen> alles dasselbe.
Okay, aber es geht theoretisch auch ohne Transistoren, oder?
Gehen wir mal von beiden Fällen aus:
Fall 1: Ich möchte Keinen Treiber, sondern nur Transistoren (wie in
deinem Schaltplan) benutzen. Worauf muss ich beim Kauf achten?
Fall 2: Ich möchte keine Transistoren benutzen (Wenn es überhaupt geht,
es ist mir relativ egal ob das unnütz ist oder so, Hauptsache es hat
keine negativen Auswirkungen auf das Ergebnis) Würde es prinzipiell
jetzt so wie im Schaltplan funktionieren?
> Auch der von mir verlinkte hat Defizite aber ich fand auf> die Schnelle keinen mit UDN2981.
Welche Defizite hat dieser denn? (Nur aus Neugierde)
Dietrich L. schrieb:> Noch was: die verschiedenen GNDs müssen alle miteinander verbunden
Bis auf die zwei Pins an dem avr waren auch glaube ich schon alle
verbunden...
Dietrich L. schrieb:> Die Widerstände gehören nicht auf die Seite des UDN, sondern zwischen> LEDs und ATmega.
Behoben :)
Nur habe ich immer noch das Problem, dass die LEDs ja (wie ihr sagt) nur
4mA abbekommen und da bin ich immer noch auf eure Hilfe angewiesen das
zu lösen.
Was ich mich gerade noch frage: Wenn in der Matrix jeder Spalte 100mA
zur Verfügung stehen, aber gerade nur eine LED leuchten soll.....
bekommt diese denn dann nicht zu viel Strom ab, oder ist das egal, da es
sich ja sowieso nur um Impulsströme handelt?
Vielen Dank für eure Hilfe!
Janik Sch schrieb:> Was ich mich gerade noch frage: Wenn in der Matrix jeder Spalte 100mA> zur Verfügung stehen,
Hast du aber nicht, pro Spalte max. 40mA, das sind schon Maximum-Ratings
der I/O des µC.
Hubert G. schrieb:> Hast du aber nicht, pro Spalte max. 40mA, das sind schon Maximum-Ratings> der I/O des µC.
Aber dafür möchte ich ja den Treiber verwenden... Damit ich eben mehr
Ampere zur Verfügung habe...
Hubert G. schrieb:> Du kannst mit deinem UDN die fünf Leds in der Reihe leuchten lassen,> aber in den µC gehen nur max. 40mA je I/O.
Achso! Ist das die Geschichte mit dem ULN Treiber? Also im Grunde das
Gegenstück zum UDN?
Genau so ist es. Allerdings, wenn du ULN und UDN verwendest, kannst du
mit 5V keine Leds verwenden deren Flussspannung höher als 2V ist.
Da ist es besser du verwendest die 9V, belastet auch den Spannungsregler
nicht.
Fünf Transistoren wären einfacher.
Hubert G. schrieb:> Fünf Transistoren wären einfacher.
Tja :D Ich war zu ungeduldig und hab schon bestellt ;)
Nächstes mal: erst planen, dann kaufen :/ :D
Die LEDs haben eine Betriebsspannung von 2,2-2,5V Dann werd ich da
nochmal schauen, aber ich schätze daran scheitert es nicht...
Vielen Dank für deine Hilfe!
Janik Sch schrieb:> Aber VCC und GND ist beim AVR und beim UDN doch dasselbe
Derzeit ja, aber wenn der ULN mit 9V statt 5V versorgt wird wäre das
nicht mehr der Fall, meine Beschreibung deckt beide Fälle ab.
Janik Sch schrieb:> Welche Defizite hat dieser denn? (Nur aus Neugierde)
Na er verwendet keinen UDN.
Ausserdem schalten die stärker verstärkenden Transistoren den kleineren
Strom, das ist ungeschickt, geht aber trotzdem.
Janik Sch schrieb:> Fall 1: Ich möchte Keinen Treiber, sondern nur Transistoren (wie in> deinem Schaltplan) benutzen. Worauf muss ich beim Kauf achten?
Nicht viel, der Transistor am Widerstand schaltet 100mA, es reicht ein
BC548, der Transistor direkt an den LEDs schaltet 500mA, man braucht
einen BC338-40, aber man kann auch einfach für alle BC338-40 kaufen (und
es gibt Dutzende andere Typen die auch gehen würden) und nimmt 10 Ohm
Widerstände vor den LEDs für 100mA Spitzenstrom also 20mA
Durchschnittsstrom und 180 Ohm Widerstände vor den Transistoren.
> Fall 2: Ich möchte keine Transistoren benutzen (Wenn es überhaupt geht,> es ist mir relativ egal ob das unnütz ist oder so, Hauptsache es hat> keine negativen Auswirkungen auf das Ergebnis) Würde es prinzipiell> jetzt so wie im Schaltplan funktionieren?
Jein. Angenommen du verwendest rote/grüne LEDs mit 2.1V Spannungsbedarf,
und bleibst bei 20mA aus dem ATmega, also 4mA Durchschnittsstrom pro
LED, dann liefert der UDN2981 von den 5V nur 3.2V, davon gehen 2.1V für
die LED ab und 0.9V am ATMega8, bleiben 0.2V für den
stromstabilisierenden Vorwiderstand von 10 Ohm.
Das ist zu wenig für eine ordentliche Stromstabilisierung, und reicht
erst recht nicht für blaue oder weisse LEDs.
Daher sollte der UDN2981 an 9V, bleiben 4.1V für 220 Ohm als
Vorwiderstand, leider wird das Display dunkler je stärker die Batterie
nachlässt.
Daher taugt die Schaltung wenig und die mit den Transistoren wäre besser
und dramatisch heller, natürlich hält dann die Batterie noch weniger
lang.
Hmm, blöderweise geht der UDN an 9V doch nicht, die LEDs gehen nie ganz
aus weil Strom über die ATmega Schutzdioden fliesst, ausser es wären
blaue/weisse LEDs. Die Lösung mit UDN hat also noch mehr Nachteile.
Janik schrieb:> Im Anhang ist ein Schaltplan
Die Pin-Nummerierung bei den ICs ist falsch.
Bei allen zweireihigen ICs werden die Pins so gezählt:
1 v 14
2 13
3 12
4 11
5 10
6 9
7 8
mfg.
Thomas Eckmann schrieb:> Die Pin-Nummerierung bei den ICs ist falsch.
Ja, ist mir eben auch aufgefallen. Habe ich bei mir schon korrigiert :)
Danke für den Hinweis
MaWin schrieb:> Hmm, blöderweise geht der UDN an 9V doch nicht, die LEDs gehen nie ganz> aus weil Strom über die ATmega Schutzdioden fliesst
Okay... Kannst du mir das nochmal genauer erklären? Und kann man das
nicht unterbinden?
So. Nach einiger Zeit stehe ich wieder auf der Stelle ;)
Ich habe mir den ganzen Kram jetzt wie im Schaltplan zusammen gebastelt,
aber es funktioniert immer noch nicht.
Ich habe verschiedene Sachen versucht und auch wiedermal viel gegoogelt,
aber ich konnte noch keine funktionierende Lösung finden.
Das Problem: Der ganze Mikrocontroller (Atmega3238P-PU) springt
(scheinbar) gar nicht an...
Ich habe den Mikrocontroller dann nochmal auf das Steckbrett gesteckt
und dann nur die entsprechenden PINs mit GND und VCC verbunden und ein
Messgerät angeschlossen... Das Programm habe ich auf ein einfaches "Port
2 an -> warten -> port 2 aus -> warten" reduziert (Und ja, das Programm
an sich funktioniert, wenn man den Atmega in das Arduino Board steckt).
Nur, wenn man ihn "Standalone" verbinden möchte, weigert er sich
irgendetwas zu machen.
Ich habe folg:
Vcc (+5V) mit VCC vom AVR & AVCC vom AVR & AREF vom AVR & Reset vom AVR
GND mit beiden GND pins vom AVR
Und GND & PIN2 mit dem Messgerät um zu schauen ob's klappt...
Vielleicht fehlt da ja noch was?
Wäre cool, wenn ihr mir helfen könnt ;)
Lg
Janik
Janik Sch schrieb:> auf das Steckbrett gesteckt> und dann nur die entsprechenden PINs mit GND und VCC> Vielleicht fehlt da ja noch was?
Nicht schon wieder. Erst vor 5 Minuten war das Thema hier...
Janik Sch schrieb:> Ich habe folg:
Ein Schaltplan wäre besser als Prosa.
> Vielleicht fehlt da ja noch was?
Ja, die Entkoppelkondensatoren für Spannungsregler und µC
Max H. schrieb:> Ja, die Entkoppelkondensatoren für Spannungsregler und µC
Okay, die habe ich in der Matrix eingebaut, aber da klappt es ja auch
nicht...
Janik Sch schrieb:> (Und ja, das Programm> an sich funktioniert, wenn man den Atmega in das Arduino Board steckt).
Hast du den µC auf internen Oszillator als Taktquelle eingestellt oder
verwendet er einen externen Quarz?
Max H. schrieb:> Hast du den µC auf internen Oszillator als Taktquelle eingestellt oder> verwendet er einen externen Quarz?
Nein, ich verwende keinen externen Quartz, aber ich weiß leider auch
nicht, wie ich die Taktfrequenz einstellen kann... Ich verwende ja den
Arduino Programmer.....
Janik Sch schrieb:> ich verwende keinen externen Quartz
Du nicht, die Frage war aber ob sich der µC einen erwartet.
> wie ich die Taktfrequenz einstellen kann
Programmierst du den µC über den original Arduino Bootloader? Damit
kannst du die Fuses nicht ändern. Der µC erwarte sich einen externen
Quarz als Taktquelle und den musst du ihm dann auch geben.
BTW: Quarz ohne 't'
Max H. schrieb:> Programmist du den µC über den Arduino Bootloader? Damit kannst du> die Fuses nicht ändern, der µC erwarte sich einen externen Quarz als> Taktquelle und den musst du ihm dann auch geben.
Ok, aber es geht ja auch irgendwie ohne, oder?
Ich könnte ja auch einfach einen anderen Bootloader verwenden, oder? :)
und wenn ich das mache wie stelle ich dann die Taktfrequenz ein? :)
Janik Sch schrieb:> Ok, aber es geht ja auch irgendwie ohne, oder?
Ja, wenn du die Fuses entsprechen setzt.
> Ich könnte ja auch einfach einen anderen Bootloader verwenden, oder? :)
Ein Bootloader kann prinzipiell keine Fuses ändern.
Max H. schrieb:> Ein Bootloader kann prinzipiell keine Fuses ändern.
Ok, ich weiß leider gar nicht was Fuses sind, aber das werd ich gleich
mal googeln.
Wie kann man Fuses denn sonst ändern...
Max H. schrieb:> Janik Sch schrieb:> ich weiß leider gar nicht was Fuses sind>> Siehe: AVR Fuses> Wie kann man Fuses denn sonst ändern...>> Mit einem Programmer
Okay, vielen Dank!! Ich werd mich jetzt mal weiter durchlesen :)