mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8x8x3 RGB + PWM Multiplexen mit Mega32


Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ich möchte mir eine 80x80cm große "lampe" bauen. dazu würde ich ganz 
gerne 8x8 leds verwenden, genauer gesagt rgb leds.
also µC würde ich gerne einen mega32 benutzen (arbeite mit dem mega8 
seit august in der schule)

ich habe leider vom elektrotechnischen teil noch nicht soviel ahnung 
(vom programmieren wesentlich mehr^^), habe mir aber in den letzten 
tagen schon einiges hier im forum und im wiki zum thema durchgelesen.

verkabeln wollte ich folgendermaßen:

8spalten an 8 portpins (x-richtung)
8zeilen an 8 portpins (y-richtung)
3farben an 3 portpins (z-richtung)
wären also 19portpins, das sollte mit ein paar tastern ja kein problem 
an einem mega32 sein.
(habe eigentlich keine lust mir einen multiplex-ic zukaufen und das 
ganze seriell zu lösen - außer es wäre wirklich wesentlich einfacher so, 
lass mich gern beraten)

meine frage ist jetzt wie ich diese leds in der helligkeit dimmen kann 
(also das ich dafür nen pwm brauch ist mir klar, nur wie kann ich mit 
einem mega32 192leds (8x8x3) dimmen?)
und wie ich diese vernünftig mit stromsteuere - sprich habe gelesen man 
braucht einen höheren strom damit sie beim muxen die gleiche helligkeit 
behalten.
hat da jemand evtl. eine formel für mich wie ich die frequenz etc 
ausrechnen kann? weil ich hab nur gesehen das bis zu 16:1 MUX in ordnung 
gehen soll ohne die LEDs zu beschädigen, aber ich weiß nicht einmal wie 
man das Verhältnis ausrechnet, geschweige denn dann den Strom so das 
alle LEDs gleichhell leuchten. (brauche da ja auch sicher ein 
Transistorarray für oder)

ich weiß viele von den Fragen sind hier schon beantwortet, allerdings 
leider nicht so das es für mich verständlich war (bin wirklich blutiger 
anfänger) oder mit anderen lösungsansetzten (mit CPLD kenn ich mich zum 
beispiel garnicht aus)

also wenn jemand die zeit findet mir kurz zu helfen wäre ich sehr 
dankbar :)

gruß

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>verkabeln wollte ich folgendermaßen:
>8spalten an 8 portpins (x-richtung)
>8zeilen an 8 portpins (y-richtung)
>3farben an 3 portpins (z-richtung)

Interessant. Wie sollte das Funktionieren? Ohne externe Logik sicher 
nicht.

Wenn die LEDs zB. mit gemeinsamer Kathode sind, so hast du 3 LEDs in 
einer, mit 4 Anschlüssen: 3 Anoden und eine Kathode.
Damit müsstest du dann, sofern du keine weitere externe Logik verwenden 
willst, 32 IOs vernutzen, da du 8 Zeilen, zu je 8*3=24 Spalten hast, und 
damit dann 24+8=32 Pins bräuchtest.

Weitere Fragen:
Um was für LEDs handelt es sich genau?
Müssen die wirklich alle einzeln regelbar sein? Der Begriff 'Lampe' 
lässt nämlich anderes vermuten.

>meine frage ist jetzt wie ich diese leds in der helligkeit dimmen kann

Was jetzt? Doch nur die Helligkeit? Oder schon die Farben extra?

>hat da jemand evtl. eine formel für mich wie ich die frequenz etc
>ausrechnen kann?

Jemand kennt viele Formeln...
Jemand kann aber auch einfach n bisschen nachdenken:
192 LEDs wollen zu 8 * 24 gemultiplext werden. Wenn man also immer 24 
ausgibt, je für die 8 Zeilen, leuchtet jede LED 1/8 der Zeit. Damit 
müsste der Strom ca. 8mal so groß sein, wie normal, um eine 
vergleichbare Helligkeit zu erreichen. Ob das die LED verkraftet, kann 
ich mangels Informationen nicht sagen.

>also das ich dafür nen pwm brauch ist mir klar, nur wie kann ich mit
>einem mega32 192leds (8x8x3) dimmen?

Beim Multiplexen regelt man die Helligkeit über den Duty-Cycle. Wenn man 
zB. eine Multiplexfrequenz von 1kHz verwendet, hat man insgesamt 1000 
Zyklen pro Sekunde, pro Zeile und damit auch pro LED 125 Zyklen. Wenn 
man die LED jetzt nur für 62 der 125 Zyklen also ca. 50% der Zeit 
leuchten lässt, so erscheint diese nur halb so hell zu leuchten, 
gegenüber einer LED die alle 125 Zyklen leuchtet.

>also wenn jemand die zeit findet mir kurz zu helfen wäre ich sehr
>dankbar :)

Jemand findet die Zeit nicht. Sie fliegt einem nicht zu. Man muss sie 
sich nehmen. Insofern wäre es schön, wenn du selbst mit zur Lösung 
deines Problems beiträgst, indem du zB. Grossschreibung verwendest. Nur 
eine kleine Bitte. Es gibt sicher noch viel schlimmere Beiträge.

So far.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie das funktionieren sollte war folgendermaßen angedacht.

die 8 Leitungen von der x-Richtung werden direkt an den µC (z.b. PORTB) 
und LED's angeschlossen.
die 8 Leitungen von der y-Richtung werden direkt an den µC (z.b. PORTC) 
angeschlossen, dann aber an drei Transistorarrays (parallel) (z.b. 
ULN2803).
die 3 Leitungen von der z-Richtung werden direkt an den µC (z.b. PORTD) 
angeschlossen, dann aber an 3 einzelne Transistoren.

so y- und z-Richtung werden verschachtel angeschlossen, gedacht ist:
LED in (2,3,2) soll leuchten. Wäre also Portpin 2 (fange der 
einfachhalber bei 1 an zu zählen) der x-Richtung, Portpin 3 der 
y-Richtung und Portpin 2 der z-Richtung.

die x-Richtung ist ja direkt an die LED angeschlossen, steuert Spalte 2 
an.
die y-Richtung an den Transistorarrays würde jetzt die dritte Zeile 
ansteuern, somit würde theo. die LED (2,3) leuchten, leider in allen 
Farben (RGB), da die Transistorarrays ja parallel geschaltet sind.
So damit das nicht passiert, werden die einzelnen Transistorarrays jetzt 
über die 3 Pins von der z-Richtung gesteuert.

Mit dieser Lösung müsste ich doch mit 19Pins auskommen und müsste nicht 
y und z Richtung Multiplexen.

Du hast jetzt allerdings geschrieben das man ohne externe Logik nicht 
Multiplexen kann, vll habe ich den Begriff Multiplexen einfach nur 
Zweckendfremdet? Meine Logik ist nochmal kurz im Bsp zusammenfassend:
LED (2|3|2) soll angesteuert werden (x-Richtung ist PORTB, y-Richtung 
PORTC und z-Richtung PORTD)
dann würde ich jetzt die Ports folgendermaßen setzen:

PORTB = 0x02;
PORTC = 0x04;
PORTD = 0x02;

So das erstmal zu dem ansteuern der LEDs.

Nun zum dimmen der LEDs.
Dimmen möchte ich nur die Helligkeit, allerdings möchte ich natürlich 
auch verschiedene Farben mischen können, sprich nicht nur die 
Grundfarben darstellen können. Dafür müsste ich doch auch wieder die PWM 
nutzen oder?

>192 LEDs wollen zu 8 * 24 gemultiplext werden. Wenn man also immer 24
>ausgibt, je für die 8 Zeilen, leuchtet jede LED 1/8 der Zeit.

Wie kann ich denn 24Leds gleichzeitig ansteuern? Ich kann doch immer nur 
eine LED ansteuern, dann die nächste oder? (halt so schnell nacheinander 
das ich auf 100hz komme)

Alles in allem möchte ich dir aufjedenfall schonmal danken das du dir 
die Zeit genommen hast. Ich bin gewohnt im Internet nur klein zu 
schreiben, habe jetzt vermehrt drauf geachtet Groß/klein zu 
unterscheiden, bitte nicht steinigen wenn ich es nicht überall gemacht 
habe ;)

gruß

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pro LED einfach mal 10mA. Bei 192 LEDs 1,92A. Das bringt der
AVR nicht.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst du jetzt dass er das nicht verkraftet oder das er 1,92A nicht 
aufbringen kann?
Letzteres wäre mir in soweit klar, sonst hätte ich nicht das 
Transistorarray vorgeschlagen.
Wenn er es aber nicht verkraftet würde, wie kann ich das ganze dann 
lösen?

Achja und 1,92A würde ich dann aber auch nicht als Multiplexstrom durch 
je eine LED jagen müssen oder?

gruß

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Achja und 1,92A würde ich dann aber auch nicht als Multiplexstrom durch
>je eine LED jagen müssen oder?

Nein.

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du hast jetzt allerdings geschrieben das man ohne externe Logik nicht
>Multiplexen kann

Nein. Ich sagte, dass man ohne externe Logik, keine commoncathode 
RGB-LEDs im  3D-Multiplex ansteuern kann. Wobei ich immernochnicht 
weiss, welche LEDs genau du verwenden willst (Datenblatt).

>die 8 Leitungen von der x-Richtung werden direkt an den µC (z.b. PORTB)
>und LED's angeschlossen.
>die 8 Leitungen von der y-Richtung werden direkt an den µC (z.b. PORTC)
>angeschlossen, dann aber an drei Transistorarrays (parallel) (z.b.
>ULN2803).
>die 3 Leitungen von der z-Richtung werden direkt an den µC (z.b. PORTD)
>angeschlossen, dann aber an 3 einzelne Transistoren.

Hmm, hört sich erstmal komisch an, mittlerweile(nach kurzzeitiger 
Verwirrung) weisz ich aber, was du machen willst. Ist Ok, das wird so 
funktionieren. Vorausgesetzt die LEDs sind commonanode.

>Wie kann ich denn 24Leds gleichzeitig ansteuern? Ich kann doch immer nur
>eine LED ansteuern, dann die nächste oder? (halt so schnell nacheinander
>das ich auf 100hz komme)

Nein, du kannst immer eine ganze Zeile ansteuern.
-An PortB auswählen welche Zeile, zB. 2.
-An PortD die Farbe wählen.
-An PortC die Daten für alle 8 LEDs dieser Zeile und Farbe anlegen.

Du hast dann effektiv wieder einen Duty-Cycle von 1/24.
Eine "Bildwiederholfrequenz" von 25Hz sollte schon sein, besser Richtung 
100Hz dann sieht man sicher kein Flimmern mehr. Demnach wäre die 
Zeilenfrequenz dann 2.4kHz.

>Dafür müsste ich doch auch wieder die PWM nutzen oder?

Mehr oder weniger, ja. PWM ist definitionsgemäsz das Nutzen eines 
Tastverhältnisses, um den Mittelwert (des Strom) zu verringern. Bei 
konstanter Frequenz wird nur das Tastverhältnis(auch Duty-Cycle) 
geändert.
Wenn man eine LED jede Sekunde aus- und wieder einschaltet, so leuchtet 
sie im Mittel nur halb so hell, als wenn sie die ganze Zeit an wäre. 
Macht man dies nun hinreichend schnell, so bemerkt man das An- und 
Ausgehen der LED nicht mehr.
Da du aber hier sowieso Multiplext, und damit die LEDs sowieso die ganze 
Zeit an- und ausgeschaltet werden, bietet es sich an, "das Anschalten ab 
und zu mal auszulassen", um eine geringere Helligkeit zu erreichen.


>Meinst du jetzt dass er das nicht verkraftet oder das er 1,92A nicht
>aufbringen kann?
>Letzteres wäre mir in soweit klar, sonst hätte ich nicht das
>Transistorarray vorgeschlagen.

Er meint, dass er sie nicht verkraftet. Aufbringen tut der sowieso 
nichts, denn der flieszende Strom, ist von Spannung und Widerstand 
abhängig, der AVR regelt da nichts irgendwie nach. Da er aber auch 
(intern) einen Spannungsabfall und damit Wärmeentwicklung verursacht, 
würde er unter die Raucher gehen.


>Wenn er es aber nicht verkraftet würde, wie kann ich das ganze dann
>lösen?

Mit dem Transistorarray ;-)


>Achja und 1,92A würde ich dann aber auch nicht als Multiplexstrom durch
>je eine LED jagen müssen oder?

Nein, das ist der Gesamtstrom für alle LEDs.
Er hatte pro einzel LED 10mA, bzw dann 30mA pro RGB-LED angenommen.


>bitte nicht steinigen wenn ich es nicht überall gemacht habe ;)

War ja nur eine Bitte, bzw. nützt es auch dir, weil man dann ehr mal 
antwortet. Manche Leute finden dauernde Kleinschreibung extrem 
abschreckend, wennauch ich nicht zu selbigen gehöre.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay vielen dank für deine Antwort.
Sorry den Link zur LED habe ich eben vergessen:
http://www.leds24.com/shop/product_info.php?info=p...

sollte er hier geblockt werden:
5mm 3Chip RGB 4pin LED diffus 50° - steuerbarPol wählbar:
   gemeinsame Anode ( + )
   gemeinsame Kathode ( - )

Soviel zu den von mir verwendeten LEDs.


>Nein, du kannst immer eine ganze Zeile ansteuern.
>-An PortB auswählen welche Zeile, zB. 2.
>-An PortD die Farbe wählen.
>-An PortC die Daten für alle 8 LEDs dieser Zeile und Farbe anlegen.

Das letzte habe ich noch nicht ganz verstanden (sorry hab da wohl einen 
Logikfehler im Hirn :| )

Die ersten beiden Punkte verstehe ich, aber den letzten verstehe ich 
noch nicht ganz? Könntest du mir vll ein kurzes C Beispiel 
programmieren? Weil ich kann nicht ganz nachvollziehen wie ich die Daten 
für alle 8 LEDs an die komplette Zeile senden kann.

So wie ich das "Multiplexing" verstanden habe, stelle ich mir das in 
etwa wie ein Röhrenmonitor vor, der Zeile für Zeile jedes Pixel einzeln 
ausleuchtet.

Übernommen auf das LED-Projekt dachte ich das man jede LED nacheinander 
ansteuert, als Bsp (PWM erstmal außer Acht):
//LED(1|1|1)
PORTB = 0x01;
PORTC = 0x01;
PORTD = 0x01;
//LED(1|2|1)
PORTB = 0x01;
PORTC = 0x02;
PORTD = 0x01;
//LED(1|3|1)
PORTB = 0x01;
PORTC = 0x03;
PORTD = 0x01;
//LED(1|4|1)
PORTB = 0x01;
PORTC = 0x03;
PORTD = 0x01;

etc...

>Er meint, dass er sie nicht verkraftet. Aufbringen tut der sowieso
>nichts, denn der flieszende Strom, ist von Spannung und Widerstand
>abhängig, der AVR regelt da nichts irgendwie nach. Da er aber auch
>(intern) einen Spannungsabfall und damit Wärmeentwicklung verursacht,
>würde er unter die Raucher gehen.

Sprich ich würde hinter alle Ports ein Transistorarray schalten? Würde 
der ULN2803 den Strom schaffen?

Gruß

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>So wie ich das "Multiplexing" verstanden habe, stelle ich mir das in
>etwa wie ein Röhrenmonitor vor, der Zeile für Zeile jedes Pixel einzeln
>ausleuchtet.

Vergiss es einfach. Du könntest Spalte für Spalte die Helligkeit
per PWM einstellen. Pixel für Pixel geht nicht so einfach.

>Könntest du mir vll ein kurzes C Beispiel
>programmieren?

Ach daher weht der Wind. Kein Job, kein Geld, keine Ahnung.
Versuch doch einfach mal EINE RGB Led durch alle Farben
laufen zu lassen. Das ist ein angemessenes Projekt für einen
Anfänger.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ach daher weht der Wind. Kein Job, kein Geld, keine Ahnung.

Danke aber für solche Comments bist DU hier falsch, ich denke nicht dass 
das ein Forum ist wo Leute sich nur darüber austauschen was sie eh schon 
wissen.
Da besteht nicht der Sinn eines Forums.

Wie man aus meinen Eingangspost entnehmen kann bin ich Schüler und wenn 
ich die komplette Ahnung hätte würde ich hier nicht nachfragen, über 
meine Liquidenmittel muss ich wohl kaum Rechenschaft ablegen um hier 
Hilfe zu erfragen oder?

Ich habe nicht nach einem Beispielcode gefragt um mich am 
Geistigeneigentum anderer zubereichern oder weil ich faul bin (wenn ich 
das wollte hätte ich wohl kaum selbst ein Bspcode geschrieben wie ich es 
mir vorstelle), sondern weil ich diese Erklärung nicht ganz 
nachvollziehen konnte. Mit Beispielcode geht das in manchen Fällen 
einfacher. Manche Leute nennen sowas auch Tutorial und benutzen es 
anstatt einer Anleitung - hast du scheinbar noch nie gehört.

Und ich vergess das Projekt ganz sicher nicht, nur weil ich einen 
Zusammenhang nicht direkt nachvollziehen kann. Wie ich geschrieben habe 
bin ich Anfänger - aber ich bin kein Vollidiot, es ist sicher nicht mein 
erstes Projekt welches ich programmiere, aber eins der ersten die ich 
auch aufbauen möchte - und auch das habe ich bereits erwähnt, µC kann 
ich programmieren von manchen anderen Bauteilen kenne ich die Theorie 
wie sie funktionieren - aber weder wie sie zusammen agieren können noch 
die Praxis.

Wenn du beim ersten kleinen Projekt aufgibst ist dass deine Sache, meine 
ist das nicht!

Und sicher werde ich erstmal eine RGB-LED ansteuern, aber ich möchte 
mich vorher über den Sachverhalt informieren, denn wie schon gesagt ich 
bin Schüler - habe keinen vierstelligen Betrag zur Verfügung und kann 
nicht mal eben 70€ für LEDs ausgeben die ich nachher nicht benutzen 
kann.

Aus genau diesem Grund möchte ich das Projekt vorher durch gehen, dann 
kann ich direkt die richtigen Bauteile bestellen kann, denn mit allem 
drum und dran geht das mal schnell auf 150-200€ und das ist für mich 
sicher ein Grund sich vorher einen Gedanken zumachen.
Außerdem ist es für mich auch ärgerlich Zehnmal nachbestellen zu müssen, 
weil ich die falschen Bauteile gekauft habe oder mir Bauteile fehlen!

Wie das ganze zu realisieren ist, ist mir noch nicht ganz klar, ich habe 
eine Idee - diese habe ich hier versucht zu beschreiben und habe gehofft 
das mir Fehler und Verbesserungen dargestellt werden (was ja bis jetzt 
eigentlich auch gut geklappt hat und wofür ich auch dankbar bin).

Da außerdem viele Leute hier schonmal eine ähnliche Schaltung aufgebaut 
haben bitte ich halt um Hilfe, ich denke dafür würde dieses Unterforum 
gegründet.

Aber mit der Antwort hast du dich für diesen Thread disqualifiziert, sie 
hat nämlich nicht mehr viel mit dem Topic zu tun!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber mit der Antwort hast du dich für diesen Thread disqualifiziert, sie
>hat nämlich nicht mehr viel mit dem Topic zu tun!

Wenn du keinen Wert auf qualifizierte Aussagen legst,
dann sag es doch gleich. Dann diskutieren wir dein
Projekt auf einer spirituellen Ebene.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geenau Oo

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bin ich Anfänger

Dann solltest du auch am Anfang mit dem Thema Elektronik anfangen, und 
dir ersteinmal die Begriffe wie Strom, Spannung, Leitung, Widerstand, 
Transistor zu Gemüte führen. Mikrocontroller kommen in einem späteren 
Kapitel.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Dann solltest du auch am Anfang mit dem Thema Elektronik anfangen, und
>dir ersteinmal die Begriffe wie Strom, Spannung, Leitung, Widerstand,
>Transistor zu Gemüte führen. Mikrocontroller kommen in einem späteren
>Kapitel.

Ach was, wer braucht denn heute noch solche alten Kram? Programmieren 
reicht doch, den Rest macht der Mikrocontroller . . .

MfG
Falk

Autor: Kai Franke (kai-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
servus allerseits

hab in letzter Zeit sehr viel mit RGB LEDs gemacht, die Teile sind aber 
auch cool :P , und erkläre mich bereit dir zu helfen.
Hab gerade auch noch ein wenig Zeit...
ICQ 177183zwei99

Gruß
Kai

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man Leute was ist denn bei euch los... Ich arbeite jetzt in der 
Schule seit August 2006 mit µC und weiß wie ein Transistor, Diode, 
Kondensator, Operationsverstärker, Multiplexer, Widerstand und 
Ohmschegesetzt funktioniert bzw. lautet.

Aber wir machen in der Schule nur Theorie was Bauteile angeht, arbeiten 
nur mit dem myAVR-Board.

Ich frage hier nach weil ich hoffe das ihr mich auf Fehler die ich in 
meinen Planungen habe hinweisen könnt, Alternativen aufzeigen könnt und 
Verbesserungsvorschläge äußert.
Logischerweise muss ich die Fehler die ich gemacht habe und auf die Ihr 
mich hingewiesen habt auch nachvollziehen können - dafür benötige ich 
eine Erklärung, ein Beispiel oder eine Quelle.
Sagen "so geht das nicht" kann jeder und hilft mir nicht weiter...

Machen wir das doch einfach so, die Leute die mir helfen möchten können 
weiter hier im Thread antworten, die anderen die nur nörgeln können und 
ihre Zeit in SPAM-Posting verschwenden, verweise ich höflich auf den 
ZURÜCK Button oben im Browser, sowie www.google.de

@ Kai habe dich in ICQ geaddet - Danke für dein Angebot :)

Gru

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pseudocode für:
>Nein, du kannst immer eine ganze Zeile ansteuern.
>-An PortB auswählen welche Zeile, zB. 2.
>-An PortD die Farbe wählen.
>-An PortC die Daten für alle 8 LEDs dieser Zeile und Farbe anlegen.
PORTB = 0x01; //Zeile 2
PORTD = 0x02; //Farbe 3 = Blau (1=Rot, 2=Grün, 3=Blau)
PORTC = 0b01010011 // LEDs-Daten
Die blauen LEDs der Zeile 2 leuchten hier folgendermaszen:
Angeschaltet sind die ersten zwei, sowie die fünfte und siebte LED.
Der Rest ist aus.

Ich denke, das Problem, das du gerade hast, ist, dass du eigentlich die 
Hardware-PWM des AVRs verwenden willst, um den Farbwert festzulegen.
Dieses ist aber aufgrund dessen, dass die LEDs gemultiplext werden, 
nicht sinnvoll.

Erklärung dazu siehe meinen letzten Post:

>>Dafür müsste ich doch auch wieder die PWM nutzen oder?
>Mehr oder weniger, ja. PWM ist definitionsgemäsz das Nutzen eines
>Tastverhältnisses, um den Mittelwert (des Strom) zu verringern. Bei
>konstanter Frequenz wird nur das Tastverhältnis(auch Duty-Cycle)
>geändert.
>Wenn man eine LED jede Sekunde aus- und wieder einschaltet, so leuchtet
>sie im Mittel nur halb so hell, als wenn sie die ganze Zeit an wäre.
>Macht man dies nun hinreichend schnell, so bemerkt man das An- und
>Ausgehen der LED nicht mehr.
>Da du aber hier sowieso Multiplext, und damit die LEDs sowieso die ganze
>Zeit an- und ausgeschaltet werden, bietet es sich an, "das Anschalten ab
>und zu mal auszulassen", um eine geringere Helligkeit zu erreichen.

>Sprich ich würde hinter alle Ports ein Transistorarray schalten? Würde
>der ULN2803 den Strom schaffen?

Vorsicht! Der ULN2803 ist ein Low-Side Treiber. Er kann nur gegen Masse 
treiben.
Desweiteren fliesst ja gar nicht überall so viel Strom.
Zeichne dir am besten mal den Schaltplan auf, und überlege, wo wann 
welcher Strom flieszt.

>dafür benötige ich eine Erklärung, ein Beispiel oder eine Quelle.

Da hilft Google gerne weiter:
http://www.google.de/search?hl=de&q=multiplexen+le...

>Und ich vergess das Projekt ganz sicher nicht, nur weil ich einen
>Zusammenhang nicht direkt nachvollziehen kann.

Gute Einstellung! Lass dich nicht von irgendwelchen Idi- sry, Leuten, 
von deinem Projekt abbringen.

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>PORTB = 0x01; //Zeile 2
>PORTD = 0x02; //Farbe 3 = Blau (1=Rot, 2=Grün, 3=Blau)
>PORTC = 0b01010011 // LEDs-Daten
>Die blauen LEDs der Zeile 2 leuchten hier folgendermaszen:
>Angeschaltet sind die ersten zwei, sowie die fünfte und siebte LED.
>Der Rest ist aus.

Danke für das Beispiel, das hat mir weiter geholfen, aber so wie ich das 
erkenne Steuer ich dann immer eine Zeile gleich Hell und mit der 
gleichen Farbe an, oder?

Zu den LEDs nochmal kurz, commonanode bedeutet dass die LEDs einen 
gemeinsamen + Pol haben (Anode), richtig?

Werd mir morgen mal einen Schaltplan aufzeichnen. (Gibt es eine bessere 
Freeware alternative zu TinyCAD?)

Gruß

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Danke für das Beispiel, das hat mir weiter geholfen, aber so wie ich das
>erkenne Steuer ich dann immer eine Zeile gleich Hell und mit der
>gleichen Farbe an, oder?

Exakt. Das ist ja der Witz bei PWM: Es gibt nur 0 oder 1, an oder aus.
Nur wechselt dieses An und Aus so schnell, dass man es nicht mehr 
bemerkt. Wenn die An- und die Auszeiten gleichlang sind, so nimmt man 
subjektiv halbe Helligkeit wahr. Wenn die Anzeit ein Neuntel der Auszeit 
beträgt, so nimmt man die Helligkeit als ein Zehntel so hell wahr...
Pulsweitenmodulation
Im Prinzip mischt du bei deinem Projekt das PWM-Konzept in das 
Multiplexing mit ein, dadurch, dass du die LEDs 'immer mal aus lässt' 
oder auch nicht.

>Zu den LEDs nochmal kurz, commonanode bedeutet dass die LEDs einen
>gemeinsamen + Pol haben (Anode), richtig?

Ja.

>Gibt es eine bessere Freeware alternative zu TinyCAD?

'Besser' ist ein sehr subjektives Wort. Ich verwende derzeit Eagle, will 
aber auch schon länger mal was anderes ausprobieren, bisher nie dazu 
gekommen.
Eine Übersicht: Schaltplaneditoren

Autor: der-gt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay vielen Dank nochmal, meld mich dann bald mal mit Schaltplan zurück 
:)

Gruß

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jemand -_- (-_-)

>bemerkt. Wenn die An- und die Auszeiten gleichlang sind, so nimmt man
>subjektiv halbe Helligkeit wahr. Wenn die Anzeit ein Neuntel der Auszeit
>beträgt, so nimmt man die Helligkeit als ein Zehntel so hell wahr...
>Pulsweitenmodulation

Falsch. Die PHYSIKALISCH halbe Helligkeit wird PHYSIOLOGISCH NICHT als 
halbe Helligkeit wahrgenommen.

Warum das so ist, siehe LED-Fading.

MFG
Falk

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
>>bemerkt. Wenn die An- und die Auszeiten gleichlang sind, so nimmt man
>>subjektiv halbe Helligkeit wahr. Wenn die Anzeit ein Neuntel der Auszeit
>>beträgt, so nimmt man die Helligkeit als ein Zehntel so hell wahr...
>>Pulsweitenmodulation
>
> Falsch. Die PHYSIKALISCH halbe Helligkeit wird PHYSIOLOGISCH NICHT als
> halbe Helligkeit wahrgenommen.

Du hast Recht, danke für den Hinweis.
Da hatte ich in dem Moment nicht dran gedacht. Allerdings wollte ich 
nicht schreiben, dass es "physikalisch halbe Helligkeit" ist, denn das 
wäre wiederum auch falsch, da die Helligkeit sich eben zeitlich zwischen 
den beiden Extrema bewegt.
"Im Mittel hat man damit die halbe Helligkeit." wäre wohl eine bessere 
Formulierung gewesen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.