Forum: Mikrocontroller und Digitale Elektronik 5x5 Led-Matrix Schaltplan


von Janik (Gast)



Lesenswert?

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

von MaWin (Gast)


Lesenswert?

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

von Janik S. (xkap50x)


Lesenswert?

> 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 ;)

von Janik S. (xkap50x)



Lesenswert?

> 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?

von Dietrich L. (dietrichl)


Lesenswert?

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

von Dietrich L. (dietrichl)


Lesenswert?

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

von MaWin (Gast)


Lesenswert?

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.

von Janik S. (xkap50x)


Angehängte Dateien:

Lesenswert?

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!

von Hubert G. (hubertg)


Lesenswert?

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.

von Janik S. (xkap50x)


Lesenswert?

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...

von Hubert G. (hubertg)


Lesenswert?

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.

von Janik S. (xkap50x)


Lesenswert?

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?

von Hubert G. (hubertg)


Lesenswert?

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.

von Janik S. (xkap50x)


Lesenswert?

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!

von MaWin (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Thomas E. (thomase)


Lesenswert?

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.

: Bearbeitet durch User
von Janik S. (xkap50x)


Lesenswert?

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?

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Janik Sch schrieb:
> Und kann man das nicht unterbinden?

Man verwendet Transistoren.

von Janik S. (xkap50x)


Angehängte Dateien:

Lesenswert?

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

von Micha H. (mlh) Benutzerseite


Lesenswert?

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...

von Max H. (hartl192)


Lesenswert?

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

: Bearbeitet durch User
von Janik S. (xkap50x)


Lesenswert?

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...

von Max H. (hartl192)


Lesenswert?

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?

von Janik S. (xkap50x)


Lesenswert?

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.....

von Max H. (hartl192)


Lesenswert?

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'

: Bearbeitet durch User
von Janik S. (xkap50x)


Lesenswert?

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? :)

von Max H. (hartl192)


Lesenswert?

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.

von Janik S. (xkap50x)


Lesenswert?

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...

von Max H. (hartl192)


Lesenswert?

Janik Sch schrieb:
> ich weiß leider gar nicht was Fuses sind
Siehe: AVR Fuses
> Wie kann man Fuses denn sonst ändern...
Mit einem Programmer

von Janik S. (xkap50x)


Lesenswert?

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 :)

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
Noch kein Account? Hier anmelden.