mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik möchte 5x5 LED-matrix mit AVR μC ansteuern


Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all!
ich habe vor einiger zeit ein praktikum an einer FachHochschule gemacht
und habe mich dort mit AVR μC auseinandergesetzt. Ich habe sie in
AVR assembler programiert. Jetzt setzte ich mich wieder an die sache
und will nun ein kleines feld, dass aus 5x5 LEDs besteht ansteuern und
kleine bilder oder ähnliches darstellen. meine frage nun:

wie muss ich die matrix aufbauen und kathode, anode verbinden?

sehe ich das richtig, dass einmal cathode und einmal anode an je einem
port des μC hängt?
wie programmiere ich dann, dass jetzt genau eine LED angeht?

vielen dank im voraus! ich weiss vielleicht stehen antworten auf meine
fragen auch an anderer stelle, doch ich hab jetzt seit 2 stunden
gegoogelt und hab nicht viel gefunden, weil immer vorausgesetzt wird,
dass man das die sache an sich schon verstanden hat, aber ich blicke
noch nicht so richtig durch... :(

bin froh über jeden post, der mich ein stück weiter bringt

THX!!
Roman

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die schnelle antwort! naja mein eigentliches problem ist, dass
ich fragen wollte, ob und wie ich solch eine matrix bauen und
programmieren kann, ohne einen weiteren IC zu verbauen. also es soll
nur der AVR microC und die LEDs sowie quartz etc.

gibt es eine möglichkeit, dies zu verwirklichen?

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das häng vom strom ab, den du durch die led´s ziehen willst. wenn schon
kein ic, dann besser treibertransistoren verwenden. aber 5x5 heisst ja
auch 5 treibertransen, besser du verwendest da nen treiberic, das ist
kleiner/einfacher und spart Platz.
die matrix wie gewohnt aufbauen, durch Hi und Lo schalten der
entsprechenden Aus/eingänge dann die entsprechnende LED mit Strom
versorgen.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also komme ich nicht drum rum mich mit den ICs oder treiberIcs zu
befassen? also ich würde erstmal mit einem strom von 20-25mA auskommen

wenn ich jetzt die beiden ports, an denen eine LED hängt high schalte,
brennst sie oder muss einer high und der andere low sein?

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der eine poin hi, der andere lo

der mega32 kann zB 20mA bei 5V vcc bei Hi heraus und bei Lo herein
leiten.

der 2313 lediglich 20mA hereon und 3mA heraus (wieder bei 5V).

siehe Vol und Voh im datasheet

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob Du Treiber-ICs oder -Transistoren brauchst hängt davon ab, wieviel
Strom Deine LEDs brauchen. Da in einer Matrix immer nur maximal 5 LEDs
gleichzeitig an sein können (bzw. sollten), mußt Du halt den Strom so
einstellen, daß 5 LEDs zusammen nicht mehr als 20mA brauchen. Dann
kommst Du ohne weitere Treiber aus.

Ein Pin auf High und die anderen auf Low ist richtig. Wenn beide gleich
sind, dann gibts ja keine Spannungsdifferenz und dann fließt auch kein
Strom.

Markus

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh! cool danke! ich hatte mir schon irgendwie gedacht, dass das die
angaben sind im datasheet! =]
ok wenn nur 3mA beim 2313 rauskommen muss ich mich dann wirklich mit
den ICs befassen! :S

aber gut! vielen dank für deine hilfe!

ich werde die ICs zu gemüte führen und dann bau ich das mal! wenn ich
dann noch fragen haben, werde ich wieder posten!

viele grüße

Roman

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um groessere Mengen an LEDs anzusteuern gibt es den MM5450 bzw. MM5451
Damit lassen sich bis zu 35 LEDs ansteuern und eine
Helligkeitseinstellung ist auch dabei. Da das Bauteil seriell
angesteuert wird braucht man nur 2 ports (clock und data)
Gruss
Michael

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe in meinem Schachuhrprojekt, 6 7-Segmentanzeigen gemultiplext.
Das entspricht einer 8 x 6 Matrix. Als Treiber habe ich 6 NPN
Transistoren in Kolectorschaltung benutzt. Bei 3V Betriebsspannung geht
das dann ganz ohne Vorwiderstände.
www.r-tron.de - Projekte - Schachuhr

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Michael von Gersdorff
heisst das, dass ich auch nur einen AVR aus der Tiny serie benutzen
kann? wenn ich nur 2 ports brauche müsste das doch gehen, oder?

@Christof Rieger
wenn ich diese variante nehme, brauche ich nur die NPN tranistoren?
die methode mit den 3V und ohne wiederstände spricht mir sehr zu =)


welche methode ist einfacher oder empfehlenswerter? mir erscheint die
mit dem MM5450 einfacher. ich weiss nicht wie ich die transistoren
anschließen würde.. hast du/sie vielleicht noch einen schaltplan von
der schachuhr? würde mir sehr helfen.. =)

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, der Schaltplan ist auf der Seite veröffentlicht. Links Download
Schaltplan.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
öhm... ok vielen dank! ich übersah... =]

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig, um den MM5451 anzusteuern brauchst du nur zwei Ports (clock und
data)
Der gewuenschte Zustand der 35 Ausgänge wird als Folge von 0 und 1
seriell eingelesen und nach dem letztem bitt werden alle LEDs
entsprechend ein bzw. ausgeschaltet.
Michael

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Roman:

du solltest dir klar werden was du willst bzw. wieviel der uP sonst
noch tun soll und wo deine Kriterien liegen.
Ich habe den Eindruck du willst "nur" die Matrix ansteuern und so
wenig Bauteile wie möglich verwenden?
Nimm einen Mega8 (kann +/-20mA und braucht keinen Quarz). 5 I/O Pins
liefern 5V an die Reihen der Matrix. Von den Spalten gehts über
Vorwiderstände zurück zu weiteren 5 I/O Pins (schalten gegen Masse).
Per default sind nun alle I/O Pins hochohmig. Um eine LED anzusteuern
jeweils eine Spalte und Reihe als Ausgang mit dem entsprechenden Pegel
schalten, kurz warten, hochohmig und weiter zur nächsten LED.

Da zu einem Zeitpunkt nur eine LED leuchten kann hat diese Variante
natürlich auch Nachteile: sie kann z.B. kaum erweitert werden, bei 25
LEDs liegt der Duty Cycle aber noch in vertretbarem Rahmen. Bei Einsatz
von Low-Current LEDs reichen die 20mA auch für entsprechende Helligkeit.
Für "dunkle" LEDs könnte man den Zyklus auslassen und der Duty Cycle
wird verbessert.

grüsse leo9

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm ich bin etwas unentschlossen.. es ist natürlich schön mit einem Tiny
zu arbieten, aber der fast auch weniger an daten. naja und außerdem
habe ich noch nicht allzuviel erfahrung. ich denke ich werde die
schaltung mit den transistoren nehmen, da ich da direkt die ports über
den microC ansprechen kann, sehe ich das richtig? das würde dann
erstmal reichen um sich wieder ordentlich einzuarbieten und dann später
kommt die lösung mit dem mm5451.

oder ist das eher der schwierigere weg mit den transistoren? weil wenn
ich "nur" clock und data ausgeben muss, klingt das nicht sooo schwer
mit dem mm5451! nur weiss ich dann noch nicht genau, wie ich das
anschließen muss, aber das werde ich dann wohl rausfinden.
werde mal ne nacht drüber schlafen und bin dann morgen wieder hier!
ich sag erstmal danke für heute! =)

Grüße Roman

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kann man den MM5451 beziehe und was soll er kosten. Ist eine zwar
keine schnelle aber Nette Out-Porterweiterung für Microkontroller.
Dürfte aber für dieses Projekt etwas mit Kanonen aus Spatzen geschossen
sein.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ leo9
ja ok, der eintrag kam zeitgleich.. nun ich will über die LEDs ein paar
animationen ablaufen lassen und in den PC oder ähnlichem einbauen. es
kommt mir nicht unbedingt auf die teile drauf an. es ist nur so, dass
ich mich mit ICs nicht auskenne und deshalb versuche einen bogen um sie
zu machen... =(
das ganze mit dem mega8 zu machen, gefällt mir nun eigentlich am
besten, weil die schaltung dazu recht einfach sein wird! =) das stimmt
mich fröhlich, weil ich halt noch nicht so viel ahnung habe!
naja wie gesagt, ich schlaf ne nacht drüber und werde dann sehen was
ich machen werde.
bisher habe ich verschiedene kleine projekte gemacht, bei denen ich den
2313 verwendet habe. das einzig neue ist ist die matrix und die
ansteuerung einer LED durch die 2 ports, statt durch einen.

THX
Roman

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christof Rieger  22:47

ja denke ich auch.. =) es sollen erste gehversuche, was eine matrix
angeht, werden

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ich habe mir noch viele gedanken gemacht..
also wenn ich das projekt mit einem mega8 realisiere, dann kann ich pro
Reihe, bzw pro zeile nur eine LED gleichzeitig ansprechen? sprich es
leuchten 5 LEDs bei 5x5 matrix maximal?
für mein projekt wäre es von vorteil, wenn ich wirklich jede LED
einzeln ansprechen kann, und an und aus machen kann, wann immer mir
danach ist.
wie gesagt, ich kenne mich nicht mit matrizen nicht so aus. kann man da
auch beliebige LEDs ansteuern?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Trick ist hierbei, daß man die gewünschten LEDs abwechselnd
darstellt. Wenn man schnell genug hin und herschaltet, dann sieht man
das nicht mehr. Da die LEDs dann nur noch 1/5 der Zeit an sind,
brauchst Du eben entsprechend mehr Strom.

Markus

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso, gut also dann kann ich doch alle 25 "gleichzeitig" "an"
machen.

dann brauche ich den mega8, lowcurrent-LEDs, wiederstände brauche ich
bei den strömen ja gar nicht (oder?), quarz fällt auch weg, naja und
dann das übliche..

an programierei werde ich dann noch ranklotzen ^^

grüße Roman

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Widerstände brauchst Du schon. Eine LED nimmt sich nicht einfach ihren
Strom, sondern der Strom wird quasi durch die angelegte Spannung
gesteuert. Auch die AVRs begrenzen den Strom nicht. Wenn Du den Port
überlastest, dann geht er eben kaputt.

Zu den Transistoren: Beim 5-fach-Multiplex sind die LEDs ja nur 1/5 der
Zeit an, also auch nur 1/5 so hell wie im Dauerbetrieb. Üblicherweise
nimmt man dann den 5fachen Strom (wieviel genau steht im Datenblatt,
Helligkeitseindruck im Vergleich zum Strom). Die I/O-Ports für die
Spalten müssen maximal 5 LEDs gleichzeitig treiben, wenn dann auch noch
der 5fache Strom nötig ist, dann ergibt das den 25fachen LED-Strom, d.h.
bei einer Maximalbelastung von 25mA die ein I/O-Pin verträgt darf eine
LED im Mittel maximal 1mA bekommen. Das reicht durchaus aus, aber je
nach Anwendungsfall (wie hell ist es dort?) kann es Dir zu wenig sein.
Dann brauchst Du doch noch Transistoren.

Markus

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
puh nur 1mA bei vollauslastung..
ich denke das wird nicht reichen! ich will und brauche dann schon
fullpower.. soll ja effekt haben.. ;)
also meine frage dann, welche transistoren muss ich dann wie benutzen,
also das errechnet sich dann mit dem strom, den die LEDs brauchen?

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Roman,
jetzt mal Klartext.
Willst du die Schaltung mit mit 3V oder 5V oder eventuell mit einer
anderen Spannung betreiben ?
Wenn du richtig Power brauchst kommst du um die Transistoren nicht
drumrum. Dann ist sogar anzuraten sowohl in die Matrix-Spalte als auch
in die Matrix-Zeile Transistoren zu setzen. Als LED bieten sich dann
Ultrahelle LED's an mit >=3000 mcd. Der maximale Zeilen Strom beträgt
dann 100mA und der Maximale Spaltenstrom 500mA. Diese Anzeige siehst du
im dunkelen noch über mehrere 100m weit.
Du brauchs vor den 10 Transistoren und den Wiederständen keine Angst zu
haben, deine LED Matirix ist vom Aufbau her aufwendiger.
Wenn du genau weist was du willst, kann ich dir beim Schaltplan helfen.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super vielen dank!
also ich habe mich nun entschlossen!
ich werde das bauen und in die front meines pc-towers einsetzen. ich
werde die 5V aus dem Netzteil des PCs nehmen.
alle teile werde ich bei reichelt kaufen.
ich nehme folgende LEDs:
http://www.reichelt.de/inhalt.html?SID=10QYHQo9S4A...
die sollen auf voller helligkeit leuchten können, egal wie viele grad
an sind. mein netzteil hat genug power um die voll zu versorgen.
ultrahelle LEDs müssen es nicht sein, weil ich gute erfahrungen mit den
oben genannten gemacht habe und sie reichen voll aus. ich hoffe ich habe
alles genau genug beschrieben, damit sie den rest berechnen können. wie
berechnet man das eigentlich, welche transistoren man benutzen muss?
und was macht ein transistor genau?
danke für die hilfe!
grüße Roman

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Transisror ist von Hause aus ein Stromverstärker.
Kleinsignaltransistoren verstärken den Strom im Verhältnis 1:50 bis
1:300. Das heißt, wenn ein Transistor eine Stromverstärkung ß=100 hat
und es fließt ein Strom von 1mA von der Basis aus durch den Transistor
zum Emitter dann KANN vom Collector zum Emmitter ein Strom von 100mA
fliesen. Bei den üblichen bipolaren Silizium Transistoren (z.B. BC547)
hat man in diesem Zustand eine Spannungsdifferenz zw. Basis und Emitter
von ca. 0,7V.
Das Geniale ist, dass du mit den vorgeschlagenen LED's und einer
Versorgungsspannung von 5V meinen Schachuhraufbau exakt kopieren kannst
und weder für die LED's noch für die Transistoren Vorwiederstände
brauchst.
Der Transistor:
            / Emitter (der mit dem Pfeil)
          |7
Basis  ---|   Transistor NPN-Typ (Schaltet durch wenn die Spannung
          |\                      an der Basis um 0,7V größer ist
            \ Collektor           als die am Spannung am Emitter.)

Warum braucht man keine Wiederstände.
Aufbau einer Spalte:
Collector mit +5V verbinden
5 LED's mit der Anode zusammen schalten und mit dem Emitter
verbinden.
Die 5 Kathoden der LED's auf 5 Ports des µControllers verteilen.
Die Basis des Transistors direkt mit einem weiteren Port verbinden.

Für den kompletten Aufbau werden 5 Spalten aufgebaut. Wobei nicht jede
LED Kathode ihren eigenen Port erhällt sondern sich den Port mit den
anderen 4 LED's teilt die dann in der gleichen Zeile liegen.

nu zeichne das erst einmal auf und stell die Zeichnung ins Forum ein,
dann gehts weiter.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super vielen Dank! endlich habe ich auch vor den transistoren keine
"angst" mehr! =D

gut ich werde bald einen schaltplan machen! ich werde mich mich damit
wahrscheinlich am wochenende beschäftigen.

Das war jetzt ein großer schritt näher an mein projekt! wunderbar, dass
ich die selbe schaltung nehmen kann.

ich werde dann eine liste mit teilen machen, sowie den schaltplan! =)

THX! Roman

Autor: Roman Konrad (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So nun habe ich den Schaltplan mal gemacht und hoffe, dass soweit alles
ok ist...
- Die NPN-transistoren nehme ich von reichelt. bestellnummer: BC 547B

den rest habe ich eigentlich zu hause.
so der hardware komme ich ja immer näher freu

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir denn keiner sagen, ob der schaltplan richtig ist?
ich wollte nämlich ne sammelbestellung machen und die anderen leute
warten.. =)

grüße Roman

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Warum braucht man keine Wiederstände.
Ja, warum denn?

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weis es auch nicht warum man die widerstände weglassen kann, aber im
schaltplan habe ich sie jetzt einfach nicht eingeplant! ne erklärung
fände ich auch ganz gut, obwohl ich mir vorher auch keine gedanken
darüber gemacht hab warum ich keine benötige! =) war froh, dass ich sie
einfach nicht brauche?!

gruß Roman

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mann braucht keine widerstände, weil die led's (geschweige denn atmels
usw..) heutzutage ganz billig sind, darum! :-)))

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
komisch kann gar nicht lachen

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@roman:
natürlich braucht man widerstände, das ohm-gesetz ist doch
unumgänglich!

@christof:
also ich würde da vorsichtiger sowas von keinen widerständen
verbreiten; nimm' einen guten niederohmigen netzteil, einen guten
schaltransistor und eine led und takte das ganze mit einer beliebigen
frequenz und ohne vorwiderstand; wie lange, glaubst du, wird die led
überleben?

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja da müsste sich christof noch mal melden...

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt eines AVRs sagt's :
jeder Ein-/Ausgang kann 20mA direkt treiben !
Demzufolge sind dort Widerstände eingebaut.
Allerdingens gilt es die Gesamtverlustleistung des Käfers im Auge zu
behalten.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

richtig. Er kann 20mA treiben. Er treibt bei einem Kurzschluß aber
deutlich mehr.

Matthias

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joo, daß auch......'ne kleine Weile lächel

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, nu ma ende mit dem spaß-talk am ende! ;]
ich muss jetzt echt bald die teile bestellen und wollte nun mal fragen,
ob es irgendetwas an meinem schaltplan auszusetzen gibt!? also es haben
bis jetzt schon 31 leute einen blick drauf geworfen und niemand hat
etwas bemängelt. kann ich nun davon ausgehen, dass alles richtig ist?
hab ich die transistoren richtig angeschlossen?

ich mache nun heute die bestellung fertig! ich würde mich freuen wenn
ich jetzt noch in der endphase auf eure unterstützung hoffen kann! ich
bin halt newbie, aber das soll sich ja ändern, deshlab gibt es doch
foren um sich auszutauschen und zu lernen, oder?!

wie gesagt, ich würde mich tierisch freuen wenn ich heute ein richtiges
statement zu meiner schaltung bekommen würde.. am besten von Christof
Rieger, weil er mir ja sagte, dass ich keine widerstände brauche! also
zu hause hab ich noch genug 270ohm und 100ohm, geht es auch mit denen?

also ich bedanke ich im voraus!


gruß Roman

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...Zitat: "wie gesagt, ich würde mich tierisch freuen wenn ich heute
ein richtiges
statement zu meiner schaltung bekommen würde.. am besten von Christof
Rieger, weil er mir ja sagte, dass ich keine widerstände
brauche!"/Zitat Ende!

was für absurde logik!

mir wäre auch am liebsten ein "richtiges statement" von meiner frau,
dass ich eh keine brille brauche, obwohl ich eine seit 20 jahren
trage...was weiss denn der inkompetente augenartzt, der alte
schmarotzer...:)))

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee! so meinte ich das ja nich! es ging mir darum, dass Christof ja
sagte ich bräuchte keine widerstände! ^^ tja und alle anderen sind so
zeimlich anderer meinung! und wenn ihr du sagst, dass ich welche
brauche, würde ich mich freuen wenn du mir dann auch die entsprechenden
empfehlen könntest. =D das meinte ich mit "richtiges statement"...=)
ich muss nun ja fertig werden und naja, dazu brauche ich die werte..

also mit dem beispiel deiner frau:

willst du damit sagen, dass du eine brille auf jeden fall brauchst aber
naja ein statement deiner frau haben willst, die dir sagt, "du brauchst
keine"?
heisst das dann übertragen, dass ich auch auf jeden fall widerstände
einplanen muss??

ihr seid alle zeimliche PROs, aber ich bin noch klein und muss alles
lernen... ich weis halt nicht ob ich widerstände brauche oder nicht!
manche sagen ja und manche nein.. =( deshalb bin ich ein bissl verwirrt
und würde mich deshalb freuen wenn Christof sich nochmal melden könnte
und allen seine Theorie von den widerständen erklären könnte, weil es
doch viele unstimmigkeiten gibt.. =(

ich bin nun erstmal etwas verwirrt und zöger die bestellung noch raus!

also ich formuliere nochmal ;) :
ich bin froh über jedes statemant zu meinem schaltplan, weil ich jede
hilfe brauche! wenn ich widerstände brauche, welche sollte ich nehmen?

sorry wenn mein "richtiges statement" falsch angekommen war ;D

gruß Roman

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ok, nehm' meine worte zurück;

zu deinem schaltplan_5x5.jpg:

1. 2x kondensator ca. 22pF von XTAL0 und XTAL1 zu masse schalten; ohne
sie funktioniert der interne quarzoszi unzuverlässig;

2. widerstand ca. 10k von RESET zu VCC schalten;

3. beide widerstände bei SCK und MOSI sind eigentlich überflüssig; wenn
du sie trotzdem haben willst- dann 200 bis 470 ohm, 1k ist zu viel
(probleme beim programmieren mit schnellem pc)

4. und jetzt zum besten part: led matrix; und ja, strombegrenzende
widerstände braucht man leider auf jeden fall; die gute nachricht-sie
sind nicht so viel; so, wie du die matrix gezeichnet hast, würde ich
sie nicht machen, aber dennoch:

zuerst einmal 5x widerstände zwischen jeder basis und µc-pin, würde so
ca. 4-7k nehmen, sie müssen den basisstrom begrenzen, aber gleichzeitig
eine vollsättigung erlauben

die leds: sie brauchen auch strombegrenzung; du betreibst sie wohl im
zeit multiplex, hetzutage sind die leds mit gutem wirkungsgrad, ich
würde dich nicht mit theorie quellen:  nehmen wir an, du multiplexierst
zeilenweise, also zuerst wird PD6 low, dann PD5, dann PD4 usw.
R=U/I; in deinem fall ist U=5-0.7-2=2.3V; das ist der spannungsabfall
über eine led, z.b. LED1;
für I gilt folgendes: für eine led sind z.b 10mA ganz gut; wir haben
aber im schlimmsten fall 5 eingeschaltete leds und die µc-pins können
maximal 20ma sinken, oder max. 4ma pro led; das bedeutet I=4mA, daraus
ergibt sich:
R = 2.3V / 0.004 mA = 575 Ohm;
wenn du ein auge zumachst und mir versprichst, die schaltung nur bei
dir zu hause zu betreiben, kannst du die µc-spezifikationen ein wenig
überschreiten und z.b. 470 ohm nehmen...
besser ist jedoch, low current leds zu kaufen, die benötigen ca. 2mA,
somit bist du mit 4 mA pro led bei 570-580 Ohm bestens bedient.

die so mühsam errechneten 5 widerstände musst du zwischen jedem emitter
und led-spalte (gem. anode) schalten.

voraussetzung dafür ist, wie gesagt, dass du die matrix ZEILENWEISE
multiplexierst...

sooo und nun frohes basteln :) übrigens, ich helfe dir, weil ich gerade
eine 3x5 led matrix auf ungefähr deiner weise gemacht habe.
sie zeigt verschiedene scrollende texte, uhrzeit und temperatur, ist
also machbar, was du vorhast, nur muttig weiter!

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> voraussetzung dafür ist, wie gesagt, dass du die matrix ZEILENWEISE
>> multiplexierst...

Ja, aber warum sollte er das tuen wollen ? So wie ich die Beschaltung
sehe macht die doch nur mit einem Spaltenweisem Multiplexing auch Sinn
?

In dem Momement kann er pro Pin 20mA ziehen. Da aber übr alle Pins zur
gleichen Zeit nur ca 100mA erlaubt sind reduziert sich dies auf 100/5 =
20 mA. Ich meine also statt Zeilenweise und < 4mA pro LED, steuert er
Spaltenweise mit 20 mA pro LED. Am Dutycycle der LEDs ändert sich bei
eine 5x5 Matrix ja nichts, egal ob Spalten- oder Zeileweise
gemultiplext wird.

Gruß Hagen

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso, ja, natürlich hat hagen recht und es ist sogar besser,
spaltenweise zu steuern, denn da könnte mann bis zu 20ma durch die leds
jagen; dann werden natürlich die widerstände zwischen gem. kathode jeder
led-spalte und pd6, pd5, pd4 usw. eingeschaltet und deren wert wäre
(5-2-.7)/.002;

es war spät in der nacht und ich wollte dem junden einfach eine lösung
geben, mene bezog sich auf widerstand zw. emitter und gem. anode, daher
die zeilenweise-ansteuerung; doch in dem fall ist hagen eindeutig voraus
mit dem strom :)))

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, meine (5-2-0.7)/0.02, natürlich

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst 5 Widerstände von PORTD zu den LEDs, Pi * Daumen = 120 Ohm.

Gemultiplext wird Spaltenweise, d.h. immer nur ein Transistor ein.

PORTD treibt die LEDS etwa 20mA je Pin und die Transistoren müssen die
Summe treiben, 5 * 20mA = 100mA, deshalb ja die Transistoren.

Zu den Transistoren keine Widerstände, da die ja in Kollektorschaltung
arbeiten.

Am Quarz noch 2* 15 ... 33pF, dann sollte es klappen.


Peter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quarz 10000Hz wirst Du schwer kriegen, nimm lieber 7,3728MHz.


Peter

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Roman, das ich dich solange habe warten lassen, war zimlich im
Stress. Was die Randbeschaltung des Controllers angeht hast du besimmt
nützliche Tips von den Kollegen bekommen.

Nun zu der Auflösung warum du in der Matrix und vor den Transistoren
keine Wiederstände brauchst.

Deine Versorgungspannung beträgt 5V. Da ein Transistor nur dann öffnet,
wenn zwischen der Basis und dem Emitter eine Spannung von 0,7 V abfällt
hast du am Emitter gegen Masse gemessen nur noch 4,3 Volt. Wollte nun
der Strom der in die Basis herreinfließt weiter ansteigen so wüder sich
die Spannung zwischen Collector und Emitter veringen und damit auch die
Spannung zwischen Basis und Emitter was wiederum zur Follge hätte, das
der Strom in die Basis wieder sinken würde, Du siehst also, das der
Strom der in die Basis fließt sich in dieser Schaltungsvariante
komplett selbst regelt und somit ist kein Basisvorwiederstand nötig. In
Fachkreisen nennt man das eine 100% Rückkopplung.
4 Volt benötigt die von dir gewählte LED, verbleiben am Controllerport
noch 0,3 V.
Und Bingo bei einer Erzwungenen Portspannung von 0,3V Stellt sich Lt.
Datenblatt Seite 79 Figure 70 bei 25 Grad ein Strom von 20mA ein. Damit
sind keine Vorwiederstände nötig. In der Realität wird der Strom sogar
noch etwas niedriger sein, da die Belasttung der Ports die die Basen
der Transistoren treiben dort auch die Spannung leicht absinken läßt.
Noch ein Tip, die Hauptbelastung tragen die Ports, die mit den Kathoden
der LED's verbunden sind. Desshalb würde ich sie auf zwei Ports
verteilen. Macht zwar Programmtechnisch mehr arbeit dürfte  aber auch
ein hauch mehr Power auf die Dioden bringen und den Genzlastbetrib des
controllers vermeiden.

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@emil
Du bist an der Sache dicht dran aber Roman will Blaue LED's mit 4 Volt
Durchlassspannung verwenden. Der braucht keine Wiederstände und der
Trick mit der Kollektorschaltung wurde extra gewählt um einmal einen
Spannungsabfall von 0,7V zu erwingen und zum anderen auf die
Basisvorwiederstände verzichten zu können. Selbst, wenn die LED's nur
eine Betribsspannung von 3,5V hätten würde der Basisstrom auf Maximal 4
mA ansteigen, da dann die Portspannung vom Basistreiberport bei dieser
Belastung bereits um 0,5V einbricht. Selbst bei der Verwendung von 2V
LED's würde der Basisstrom nicht über 13mA ansteigen und selbst das
dürfte sowohl der Controller als auch die Transistoren noch ab können.
Wobei ich bei 2V LED's Vorwiederstände doch dem Vorzug geben würde.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christof,

"...aber Roman will Blaue LED's mit 4 Volt..."

Bist Du Hellseher ?

Du bist der erste, der in diesem Posting von blauen LEDs spricht.

Aber auch blaue LEDs haben eine Z-Dioden Kennlinie, d.h. benötigen
unbedingt einen Widerstand zur Stromeinstellung.

Allerdings wird dann der Spannungsabfall zu gering für eine
Stabilisierungswirkung, d.h. die Kollektorschaltung sollte dann nicht
mehr verwendet werden.

Und mit einem Basisstrom von 4mA komme ich bei typischen Beta = 300 auf
1,2A, da bricht also definitv nicht der Port zusammen.

Es ist generell davon abzuraten, Ports so zu betreiben, das sie
zusammenbrechen, wenn der Hersteller diese Betriebsart nicht explizit
vorgesehen hat.

Ganz abgesehen davon, daß ein Zusammenbrechen lastabhängig ist, d.h. je
nach Anzahl der leuchtenden LEDs sind sie unterschiedlich hell.


Peter

Autor: Roman Konrad (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ peter dannegger

ziemlich weit oben habe ich ein link angegeben:

"ich nehme folgende LEDs:
http://www.reichelt.de/index.html?SID=10QYHQo9S4AQ...
" daher hatte christof die hellseherischen fähigkeiten ;) hier kannst
du nun die kompletten daten der LEDs einsehen. ich hoffe das hilft dir
weiter. ok, dann diskutiert mal noch weiter über die widerstände, weil
ich da wenig zu sagen kann...

aber ich habe nun den schaltplan geändert. ich denke ich habe alle
tipss eingebaut, aber die widerstände noch nicht eingezeichnet. da
müssen die profis noch auskunft geben ;)

Danke und grüße

Roman

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ihr macht mich ständig konfus. Die einen sagen das man ohne
Vorwiderstände arbeiten kann (unter bestimmten Bedingungen) die anderen
wiederum meinen man muß immer Vorwiderstände nehmen.

Desweitern: die einen behaupten das bei gemultiplexter Anzeige, zB. 20%
Dutycylce == 1/5, die Helligkeit sinkt und deshalb der Strom erhöht
werden sollte. Wiederum lese ich aber in Datenblättern von Osram und
Agilent das die eben auf LEDs bezogen nicht ganz richtig ist.
PHysikalisch kann man also durch einen Dutycycle Strom sparen da das
menschliche Auge eben psychologisch eine LED in gewissen Bereichen viel
heller wahrnimmt als die ein Lux-Meter tut. D.h. unterschreitet man bei
einer LED eine gewissen Dutycycle NICHT, so ist es auch NICHT nötig den
Stom zu erhöhe um den Helligkeitsverlustzu kompensieren. Denn unser Auge
arbeitet nicht als kontinuierler Lichmesser. So jedenfalls sind die
Aussagen bei Agilent und Osram.
Diese Aussage würde für mich persönlich auch erklären warum mit einer
gepulsten LED tatsächlich Strom gespart werden kann. Für das Auge
leuchtet sie nämlich noch genauso hell.

Was ist nun richtig ?

Gruß Hagen

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke, das kann jeder für sich ersichtlich machen, indem man einfach
paar leds nimmt (mit vorwiderständen, versteht sich :)) und sie dann mit
gleich- und danach mit wechselspannung versorgt...bei meiner 3x5 matrix
sind die leds im statischen betrieb mit 2.7v betriebspannung ungefähr
so hell, wie bei 5.5v betriebsspannung, 1/3 duty cycle multiplex'd,
brauchen also ungefähr den doppelten strom, um gleichermassen hell zu
leuchten, wie im statischen betrieb... traurig, aber wahr :)))

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, inetwa also

1/3 Duty * 2 facher Strom == 1/1 Duty * 1 facher Strom.

Angenommen die LED zieht bei 1/1 Duty 20mA/t, dann zieht sie 1/3  2 
20 mA == 13mA/t im Pulsbetrieb ohne Helligkeitsverlust.

Das ist doch schon eine Ersparnis ?

Gruß Hagen

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter dannegger
Peter, wie sollen den bitteschön 1,5A fliesen, du hast nominal 4V
Spannungsabfall an der Diode und 0,7 V über der Collektor
Emitterstrecke, damit bleiben 0,3V die am Controller abfallen müssen.
Nach Kennlinie Seite 79 Figure 70 bei 25 Grad stellt sich dann ein
Strom von 20mA ein.
Wenn 4mA in die Basis eines Transistors mit einem Beta von 300
reinfliest, dann lässte er über der C-E-Strecke einen Stromfluss von
1,2A zu aber nur dann, wenn der Rest der Schaltung diesen Strom
überhaupt fließen lassen kann. Die restlichen komponeten Begrenzen aber
den Stromfluss.
Glaubt es mir, es funktioniert tadel los. Die Verlusstleistung an den
Transistoren beträgt je ca.70mW und am Controller 30mW, wenn alle
LED's an sind. Da wird nicht warm.

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@hagen:
ahaaa, so meinst du das; ist natürlich richtig, ja, man spart
tatsächlich  durch multiplexen; habe vor langer zeit einen
spektrum-analyzer mit 16x16 led matrix gebaut, der hat im statischen
betrieb und vollaussteuerung so an die 2.7A gezogen, im multiplexen nur
ca. 0.5A (mittelwerte, versteht sich).

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wunderbar! ich schenke Christof nun mein glauben! also seine lösung
klingt sehr schlüssig und einwandfrei, soweit ich das beurteilen kann.
ich werde nun die bestellung fertig machen. ich denke die hardware ist
dann bald fertig und die ersten tests können gemacht werden :)))

ich möchte mich an dieser stelle erstmal bei allen leuten bedanken!
naja erstmal gucken ob das alles läuft ;)

wenn weitere probleme auftauchen werde ich mich wieder melden.

grüße Roman

ps: werde natürlich schrieben, wenn ich fertig bin =D

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christof,

"...würde der Basisstrom auf Maximal 4mA ansteigen..."

Ich hatte aufzeigen wollen, daß das ja erst bei etwa 1,2A der Fall
wäre, die fließen hier aber lange nicht. Das die 4mA irgendwas
begrenzen ist also falsch.


Ein Bastler darf natürlich Schaltungen aufbauen, wo die
Stromeinstellung durch die zufälligen Streuungen aller Bauteile
erfolgt. Z.B. kann ein 7805 ja schon von 4,9...5,1V differieren.

Ich entwickele aber Profischaltungen, wo ich durch gezielte
Dimensionierung den Arbeitspunkt einstellen kann und er auch relativ
unabhängig von Bauteilestreuungen ist.

Wenn ich eine Schaltung abliefern würde, wo bei Änderung nicht
garantierter Bauteileparameter Bauteile kürzer leben oder große
Unterschiede in der Helligkeit auftreten, würde mich mein Chef zu Recht
feuern.

Wenn z.B. im nächsten Stepping die AVRs eine andere
Ausgangscharakteristik haben, darf es nicht passieren, daß man eine
komplette Fertigungsserie in die Tonne kloppt und nochmal ne Platine
entwickeln muß. Einmal entwickelt muß ein Produkt laufen !!!

Und die 2 Cent für nen Widerstand sind dafür kein Kostenfaktor.

Die Widerstände hätten auch den Vorteil, wenn sich die Modefarbe (blau)
ändert, andere LEDs einsetzen zu können.

Um nun aber genügend Spannungsabfall für die Widerstände übrig zu
haben, muß man bei blauen LEDs pnp-Transistoren mit Basiswiderstand
oder P-MOSFETs verwenden.


Nimms mir also bitte nicht übel, wenn ich an Schaltungen den Maßstab
anlege, daß sie 100% nachbausicher, d.h. auch für die Massenfertigung
geeignet sind.


Peter

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter dannegger

Klar, in der Beziehung hast du natürlich Recht. Die Produkte die du
Entwikelst kosten mit Sicherheit auch mehr als 3,50 Euro. Damit sollte
man sich natürlich auf solche Nebenefekte nicht verlassen.

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Nachtrag:
Bei 3,5 Volt LED erreicht man bei 5V Versorgungsspannung schon die
Schmerzgrenze des Controlers hier würden dann nähmlich ca. 40mA in den
Port abfliesen. Allerdings würde die LED mit mehr als 20mA durchflossen
werden, was die Spannung über der LED auch leicht ansteigen ließe und
damit würde sich wieder ein niedrigerer Strom einstellen. Auf jeden
Fall sollte man die Ports die die Kathoden der LED's versorgt auf zwei
Portgruppen aufteilen.
Die Betriebsmöglichkeit mit 2,0 Volt LED ohne Vorwiederstäde ist
natürlich nonsens, da dürfte man nicht lange Freude an der Schaltung
haben ;-) Strom >60mA.
@peter dannegger
Zugegeben Peter in manchen Dingen bin ich ein kleiner Kanikazie, was
lt. Datenblatt geht wird gemach. Ich verbinde auch gnadenlos eine
Controllerport über einen 150 Ohm Wiederstand mit der Gate eins Triacs
(funktioniert gut ;-).

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich nun aber ungerne die ports die zur kathode der LED führen
aufteilen will, kann man dann nicht doch eben kleine widerstände
einbauen und dann geht das auch alles auf einem port?
also schöner wäre das auf jeden fall, wenn es um das programmieren
geht...

gruß Roman

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In deinem Fall ist die LED mit Typisch 4,0V und Max 4,5V bei 20mA
angegeben. Die Grenzbelasung des Controllerports wird nur erreicht,
wenn alle LED's gleichzeitig an sind. Ich denke das kannst du
riskieren. Es geht ja auch nur um einen Moddingefekt und nicht um eine
sicherheitsrelevante Anwendung.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ganz genau! also das riskier ich ruhig. ich habe noch mehrere 2313 zu
hause und wenn doch mal einer dabei drauf geht nehm ich ein neuen...
und ich werde auch höchstselten alle 25 LEDs zum lechten lassen!
außerdem sind es ja nur bruchteile von sekunden, die ich die LEDs an
lasse.
gut ich werde montag die teile bekommen und dann wird erstmal
ordentlich gebastelt! freu =D

Autor: Roman Konrad (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so es ist vollbracht!
ich kann jede LED ansprechen und alles funktioniert herrlich! die LEDs
sind ziemlch hell und ich bin voll zufrieden!
aus technischen gründen habe ich die matrix ein bisschen gedreht. ich
werde gleich noch ein post hinterherschicken, in dessen anhang sich
dann eine zeichnug der gedrehten matrix befindet.

ich habe aber trotzdem noch ein paar fragen:

ich habe im anhang mal eine programm reingepackt, dass auf dem LED-feld
ein großes X anzeigt, dann kurz wartet und dann ein großes + anzeigt.
ich weiss nicht, aber mir erscheint die methode, die ich gewählt habe
als sehr umständlich... es funktioniert, aber naja es ist viel
schreibarbeit...
ich habe nun noch kein timer eingebaut. es funktioniert komplett mit
schleifen.

also ich wäre froh, wenn ihr ein bisschen konstruktive kritik an meinem
programm üben könntet :)


gruß Roman

Autor: Roman Konrad (Gast)
Datum:
Angehängte Dateien:
  • preview image for 25.jpg
    25.jpg
    3,93 KB, 430 Downloads

Bewertung
0 lesenswert
nicht lesenswert
hier ist das bild von der gedrehten matrix, damit es klar wird, wenn ich
im programm schrieb, dass ich eine zeile lade

Autor: Roman Konrad (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so und damit ihr auch mal seht, was das programm leistet, habe ich ein
gif gemacht, dass zeigt wie das ganze dann aussieht =D

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und Roman klappt doch. Wenig Aufwand große Wirkung. Bleiben alle
Bauteile wie versprochen Cool ?

Ich habe mir dein Programm noch nicht angesehen, aber am besten gehst
du so vor.
Eine Routine schreiben die in züklischen Abständen 5 festgelegte Bytes
aus dem RAM-Speicher liest und diese auf die LEDs aus gibt. Den Aufruf
der Routine kannst du entweder über TimerInterupts oder über
TimerPolling machen.
Der Vorteil, für den Wechsel der Zeichenausgabe musst du nur noch die
fünf Bytes im RAM-Speicher ändern.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein bauteil erwärmt sich und alles läuft wie gesagt reibungslos.

ok, wenn du dir das programm angeschaut hast, kannst du mir ja
vielleicht anhand dessen mir verbesserungsvorschläge geben. :)

oder du schreibst ein kurzes programm, die deine methode erläutert,
weil ich mich mit den timerinterupts noch nicht so gut auskenne...


danke im voraus

gruß Roman

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, Kollegen

Von euch hat jemand betimmt einen ähnlichen Quelltext Auszug parrat,
ich habe so etwas ähnliches zwar auch bei meiner Schuhr programmiert,
aber das dürfte für einen Anfänger undurchschaubar sein.
Bin selbst momentan etwas knapp an Zeit.

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ich sehe finden die bilder mehr interesse als mein code... naja aber
trotzdem haben leute ihn sich doch angeguckt! warum ist mein thread so
eingeschlafen? :(

bitte schreibt doch kurz ein kommentar zu meinem code...
sagt mir verbesserungsvorschläge oder so?!

gruß Roman

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, mit fallen mehere Dinge auf:

1.) Du "löschst" die Zeile und Spalte und gleich danach setzt du sie
mit den neuen Werten. Ich meine das "Löschen" ist überflüssig.
2.) Der Code könnte übersichtlicher sein. Dazu wird das Display in
einer Schleife Spalte für Spalte angesteuert, und die Pixel-Daten
werden als Tabelle im FLASH gespeichert. Das macht vieles
übersichtlicher und kostet weniger Resourcen.
3.) Du benutzt keine eigene Namen für die Register als Substitution.
Man benennt meistens über eigene Namen per Defines die Register um den
Code lesbarer zu gestalten.
4.) Die Wait-Schleifen sind meiner Meinung nach viel zu umständlich,
das läst sich einfacher realisieren.
5.) An PORTD gibts du zB. 0b00110010 aus. Bei einer 5x5 Matrix, wobei
du an PORTB 5 Spalten angeschlossen hast, verstehe ich aber nicht warum
du an PORTD mit 0b00110010 mehr als 5 Zeilen ansteuerst.


Dein Code könnte vereinfacht so aussehen:

.equ  LED_ROW = PORTB
.equ  LED_COL = PORTD
.def  Temp    = r16
.def  Spalte  = r17


// in Register ZH:ZL Zeiger auf Flash Daten mit 5 Bytes
Print:
  ldi   Spalte, 0b00010000
Print0:
  lpm   Temp, Z+
  out   LED_ROW, Spalte
  out   LED_COL, Temp
  rcall Wait1ms
  lsr   Spalte
  brne  Print0
  ret

Ausgabe eines Kreuzes dann so:

  ldi   ZL, low(Kreuz) *2
  ldi   ZH, high(Kreuz) *2
  rcall Print


Kreuz:
.db  0b00110010, 0b01010001, 0b01100011, 0b01010001, 0b00110010


Gruß Hagen

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja du multiplext ja mehrmals, dann könnte Print auch so aussehen:

// in Register XH:XL Zeiger auf Flash Daten mit 5 Bytes
Print:
  clr   Count
Print0:
  ldi   Spalte, 0b00010000
  movw  Z, X
Print1:
  lpm   Temp, Z+
  out   LED_ROW, Spalte
  out   LED_COL, Temp
  rcall Wait1ms
  lsr   Spalte
  brne  Print1
  dec   Count
  brne  Print0
  ret

Nun wird in XH:XL der Zeiger auf die Daten an Print übergeben. Print
wiederholt nun die Ausgabe 256 mal mit Hilfe des Zählers Count.

Gruß Hagen

Autor: Roman Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wow, vielen dank!

du hast mich sehr viel weiter gebracht! wie kompliziert mein code doch
war...
mein befehlssatz den ich kannte war sehr klein ^-^ aber jetzt verstehe
ich die art des matrizenansteuers und multiplexieren viel besser!!
danke mal sehen wie ich das nun weiter benutzen und was sich jetzt noch
für möglichkeiten ergeben!!! mir schien das alles bei mir schon sehr
umständlich und vor allem unübersichtlich!! -_- aber nu wird das um
einiges einfacher!  freu

gruß Roman

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, wenn du fertig bist lass uns deinen Source sehen, damit alle was
davon haben ;) Fragen nach solchen Codeschnipseln tauchen immer wieder
auf. Übrigens in der Codesammlung findest du einen Source von mir der
erklärt wie man zb. mit 5 Pins eines ATTiny15L insgesamt 20 LEDs ohne
Treiber ansteuern kann. Mit Hilfe des gewählten Muliplexings kann
zusätzlich noch jede LED in 16 Stufen individuell in der Helligkeit
eingestellt werden. Mit 6 Pins wären 30 LEDs machbar.

Gruß Hagen

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe vor kurzem angefangen mich mit der µC (ATmega8) programmierung
zu befassen.
Ich habe ähnliches vor wie Roman.
Allerdings kam ich ein wenig ins stutzen als ich mir sein Schaltplan
angeschaut habe.
Er setzt Transistoren ein, damit die Ausgangsports nicht zu stark
belastet werden. Ist ja alles schön und gut.
Aber ist es nicht richtig, dass die i/o Ports ebensoviel Strom
aufnehmen dürfen, wie sie abgeben können?
Sprich, in seiner Schaltung kann sich maximal der Strom von 5 LEDs
addieren, welcher komplett in einen Port des µCs fließt.
Ist der Port dann nicht überlastet?
Oder habe ich jetzt was verwechselt?

Gruß
Daniel

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig, zumindestens bei den neueren AVR's.
Allerdings hat er ja die Rows an einem Port und die Cols an einem
anderen Port. Bei 20mA pro LED * 5 = 100mA pro Port. Das dürfte gerade
so noch ohne Treiber gehen. Oder man nimmt Lowcurrent LEDs mit 5mA.

Gruß Hagen

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
100mA pro Port ist als dauerlast OK. Dürfte bei einer Matrix eh kein
Problem sei, wann sind schon mal alle LED's gleichzeitig an.

Autor: Hans Maltek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, es tut mir leid, das ich diesen alten Thread hier nochmal
ausgrabe:

Hier in diesem Thread steht am anfang dieser link :

http://www.armory.com/~spcecdt/electronics/LED_mat...

Nun meine Frage zu diesem Schaltbild:
Wieso wurden hier immer 2 Transistoren verwendet? kann ich das nicht
auch jeweils mit einem machen?
Wieso muss ich erst mit einem Trans. den anderen Schalten, der dann
erst meine Vcc bzw. gnd schaltet?

Außerdem: Angenommen ich schalte diese Transistoren mit einem µC, also
5V. Ich möchte die ganze Sache aber an einem 12V Netz betreiben, muss
ich dann noch etwas beachten, oder kann ich einfach mit +5V den
Transistor schalten und der Transistor hängt dann eben mit dem
Collektor an +12V und schaltet mir diese zu den LED´s?
Die Versorgnung des µC geht über einen 7805. Vcc für die LEDs ist dann
direkt die +12V.


Vielen vielen Dank im Vorraus,

Gruß,

Hans M.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guck mal nach Darlington...Es geht um die Verstärkung des Schaltstroms.
Mit NPN-Transistoren kann man problemlos höhere Spannungen schalten
(Open-Collector). Bei PNPs ist das etwas schwieriger wegden des
Bezugspotenteials.

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.