Forum: Mikrocontroller und Digitale Elektronik ATmega8 kleiner LED-Cube


von Chris (Gast)


Lesenswert?

Hallo,
habe den sehr interessanten Artikel zum Bau eines LED-Cubes gelesen
http://www.mikrocontroller.net/articles/LED_cube
und würde den gerne (erstmal) in kleinerer Ausführung nachbauen.
Die Unterstützung für Schriftzeichen etc. ist erstmal nicht so wichtig.

Als Größe hätte ich mir 5x5x3 vorgestellt.
Nach intensivem Studieren der dazugehörigen Schaltpläne für die Leds 
würde ich dazu 20 I/O Pins benötigen um jede LED theoretisch einzeln 
ansteuern zu können (evtl. schnell hintereinander, damit der Eindruck 
entsteht sie leuchten gleichzeitig)
Nun hat ja der ATmega8 28Pins, 23davon sind als I/O Pins verwendbar 
soweit ich weiß.

zu den Fragen:
kann ich die Software zum ansteuern der Leds auf den ATmega brennen, 
wenn er in meinem Enwicklungsboard (myavr board usb mk2) steckt, ihn 
dann herausnehmen in eine geeingete Schaltung verbauen und dann 20 der 
23 I/O Pins zum ansteuern der LEDs verwenden?
(Ich bin Anfänger in Sachen Mikrocontroller)
Und reicht der Atmega allein aus, um beispielsweise 20Leds 
"gleichzeitig" mit Strom zu versorgen, oder muss da irgendwas mit 
n-Mosfets wie in dem genannten Artikel gemacht werden???

Vielen Dank schonmal im Vorraus für die Antworten.
mfg Chris

von Karl H. (kbuchegg)


Lesenswert?

Chris schrieb:

> zu den Fragen:
> kann ich die Software zum ansteuern der Leds auf den ATmega brennen,
> wenn er in meinem Enwicklungsboard (myavr board usb mk2) steckt, ihn
> dann herausnehmen in eine geeingete Schaltung verbauen und dann 20 der
> 23 I/O Pins zum ansteuern der LEDs verwenden?

Ja.

> Und reicht der Atmega allein aus, um beispielsweise 20Leds
> "gleichzeitig" mit Strom zu versorgen,

Wenn du da nicht Low-Current LEDs benutzt, gehts nicht.
Der Mega hat eine Beschränkung im kompletten Stromverbrauch aller Ports, 
sowie den Stromverbrauch auf einem einzelnen Pin.

> oder muss da irgendwas mit
> n-Mosfets wie in dem genannten Artikel gemacht werden???

Du wirst Treiber brauchen.

von Hannes H. (mui)


Lesenswert?

Chris schrieb:
> (Ich bin Anfänger in Sachen Mikrocontroller)

dann würde ich mit etwas Leichterem anfangen...Frust ist da schon 
vorprogrammiert...

von Volker S. (volkerschulz)


Lesenswert?

...oder vielleicht erstmal das AVR-Tutorial durcharbeiten:

Zitat: "Ab und an stellt sich folgendes Problem: Man würde wesentlich 
mehr Ausgangspins oder Eingangspins benötigen als der Mikrocontroller 
zur Verfügung stellt. Ein möglicher Ausweg ist eine Porterweiterung mit 
einem Schieberegister."

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Volker

von C. S. (chrisdask8)


Lesenswert?

Hallo,
danke für eure schnellen Antworten.
das Tutorial habe ich schon begonnen durchzulesen und ich mache schon 
gute Fortschritte beim Ansteuern der 3 LEDs die auf meinem 
Entwicklungsboard verbaut sind.
Aber irgendwie brauch ich mal ein Projekt, das etwas "anspruchsvoller" 
als die 3 fest verbauten LEDs ist.
Und der LED-Cube reizt mich schon sehr.:-)

@Karl Heiz
du sagst der ATmega8 (L) hat Beschränkungen im Stromverbrauch.
Weißt du die Werte zufällig? Aus dem Datenblatt wurde ich nicht schlau.

Zur Info, ich habe mir die Bauteile schon bestellt und folgende LED soll 
eingesetzt werden:
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A5337;GROUPID=3024;ARTICLE=54104;START=0;SORT=artnr;OFFSET=100;SID=28XvPPF6wQARwAAGj67kY8f1b1f9da05076fb6f8d8902b5039d37
diese hat den Vorwiderstand bereits integriert und "verbraucht" bei 5V 
ca. 13mA.
Genügt es jetzt auch nicht die LEDs schnell einzeln nacheinander 
anzusteuern? Oder liegen die 13mA bereits über der Grenze für die 
Stromversorgung???

Alternativ, würde dann die Schaltung aus dem Anhang funktionieren? auch 
für mehrere LEDs gleichzeitig, die parallel geschalten sind?

mfg Chris

von C. S. (chrisdask8)


Angehängte Dateien:

Lesenswert?

genannter Schaltplan im Anhang..

von C. S. (chrisdask8)


Lesenswert?

kann mir bitte jemand die Fragen aus vorangegangenem Post beantworten??
Vielen Danke :-):-)

von Andreas F. (fornax)


Lesenswert?

Atmega8 Datenblatt, Seite 242 "Electrical Characteristics", nimm aber 
den Text bei "*NOTICE" ernst.
Ich gehe aufgrund der 20 pins mal davon aus, dass du 5x3 Grundflaeche 
und 5 Hoehe hast?
Macht also bei deinen LEDs 15*13mA=195mA fuer die Kathoden pro Ebene.
Also: Anoden sourcen ja (allerdings bist du da schon ziemlich an der 
Grenze, ich wuerds nicht machen), fuer die Kathoden brauchst du dann auf 
jeden Fall 5 Transistoren.

von C. S. (chrisdask8)


Lesenswert?

hey Andreas,
danke für deine Antowort!!

du hast richtig gedacht, 5x3 Grundfläche und 5 in der Höhe habe ich 
geplant.
Finde ich besser als 4x4x4, weil man so auf der Frontseite (5x5) auch 
evtl Schriftzeichen anzeigen lassen kann.

Deine Rechnung leutet mir ein, allerdings sind die gerechneten 195mA ja 
nur die Ausnahme, wenn alle LEDs einer Ebene mal an sind. Und nachdem 
als oberster Grenzwert 300mA angegeben sind, ist das doch noch 
vertretbar.
Oder wo siehst du das Problem? Zeigt die Erfahrung, dass die Grenze 
deutlich niedriger als 300mA liegt?

Würde meine Schaltung von oben dann passen, und der verwendete 
Transistor?

Die hab ich leider noch nicht bestellt. wegen fünf 4cent Teilen nochmal 
bestellen.. aber was solls ;-)

mfg :)

von Andreas F. (fornax)


Lesenswert?

> du hast richtig gedacht, 5x3 Grundfläche und 5 in der Höhe habe ich
> geplant.
> Finde ich besser als 4x4x4, weil man so auf der Frontseite (5x5) auch
> evtl Schriftzeichen anzeigen lassen kann.
Etwas wenig, normale character LCDs verwenden 5x7.
> Deine Rechnung leutet mir ein, allerdings sind die gerechneten 195mA ja
> nur die Ausnahme, wenn alle LEDs einer Ebene mal an sind. Und nachdem
> als oberster Grenzwert 300mA angegeben sind, ist das doch noch
> vertretbar.
Ausnahme hin oder her, du musst grundsaetzlich dafuer dimensionieren.
> Oder wo siehst du das Problem? Zeigt die Erfahrung, dass die Grenze
> deutlich niedriger als 300mA liegt?
In dem Bereich habe ich selbst noch keinen m8 betrieben.
Probleme sehe ich hier v.a. weil du die ganze Leistung staendig
schaltest, da sollte die Stromversorgung schon gut gepuffert sein.
Ich koennte mir noch vorstellen, das der bei der Leistung recht
warm wird. Am ausprobieren moechte ich dich nicht hindern.

> Würde meine Schaltung von oben dann passen, und der verwendete
> Transistor?
Ja, bis auf das eben alle kathoden einer Ebene dran muessen und
nicht nur eine LED.
> Die hab ich leider noch nicht bestellt. wegen fünf 4cent Teilen nochmal
> bestellen.. aber was solls ;-)
Dann bestell lieber ein paar mehr... Sowas ist "Grundausstattung".

von C. S. (chrisdask8)


Lesenswert?

Andreas F. schrieb:
> Etwas wenig, normale character LCDs verwenden 5x7.

ja das ist richtig, aber es geht mit 5x5 schonmal "besser" als mit 4x4 
Frontfläche ;-)

Andreas F. schrieb:
> In dem Bereich habe ich selbst noch keinen m8 betrieben.
> Probleme sehe ich hier v.a. weil du die ganze Leistung staendig
> schaltest, da sollte die Stromversorgung schon gut gepuffert sein.
> Ich koennte mir noch vorstellen, das der bei der Leistung recht
> warm wird. Am ausprobieren moechte ich dich nicht hindern.

Um das Stromproblem zu beheben, könnte ich dann die Schaltung von oben 
insofern erweitern, dass die +5V nicht vom Pin des Mikrocontrollers 
kommen, sondern über einen weiteren npn (??) Transistor, der genauso 
angesteuert wird wie der andere aus dem Schaltplan oben?? Da könnte ich 
ja das selbe Modell benutzen oder?

Andreas F. schrieb:
> Dann bestell lieber ein paar mehr... Sowas ist "Grundausstattung".


ist richtig ;-)

danke
mfg

von C. S. (chrisdask8)


Angehängte Dateien:

Lesenswert?

Hi @all

bin jetzt mit dem Aufbau meiner Platine zur Steuerung des LED-"cubes" 
beschäftigt.
(s. Anhang)
Platine noch nicht komplett fertig, aber großteils und Cube fertig zum 
anschließen.
Habe jetzt bemerkt, dass ich zusätzlich nur die "low Power" Version des 
Atmega8 habe, nämlich den Atmega8L - 8PU.

Hat dieser dann noch eine niedrigere Gesamtstrom- Grenze als die 
genannten 300mA??? Weil er ja nur die "low Power" Version ist???
Dann müsste ich die obige Platine auf jeden Fall noch um 15 Transistoren 
für die vertikalen "Säulen" erweitern, oder?

Genügend Bauteile (Transistoren) habe ich auf Rat von Andreas auf jeden 
Fall.

was meint ihr??

danke

gruß Chris

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

C. S. schrieb:

> Hat dieser dann noch eine niedrigere Gesamtstrom- Grenze als die
> genannten 300mA??? Weil er ja nur die "low Power" Version ist???
> Dann müsste ich die obige Platine auf jeden Fall noch um 15 Transistoren
> für die vertikalen "Säulen" erweitern, oder?

ja, das Datenblatt das ich habe gilt zumindest für Atmega8(L).

"low power" weil die Versorgungsspannung niedriger sein darf.

Schau dir auch genau an auf welchen Ports du die 300mA ziehen darfst, da 
gibts eine Ausnahmeregel für PortC

von C. S. (chrisdask8)


Lesenswert?

Hi Thomas,
danke für die Antwort. Ich denke bevor da irgendwas anbrennt (im 
wahrsten Sinne des Wortes) steuere ich nicht nur die 5Ebenen über 
Transistoren an, sondern auch entsprechend die 15 "Säulen".
Ist zwar nervig zum Aufbauen, aber dann funktioniert es wenigstens 
ordentlich.
Werde auch ein Bild des fertigen "Cubes" einstellen, wenn Interesse 
besteht.

Noch eine Frage:
Sollte ich für die Säulen eher pnp oder npn Transistoren verwenden??
Ich würde jetzt einfach analog wieder npn (BC 337 - 40) verwenden.

gruß

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

ich hab den Schaltplan nicht im Kopf, aber wennst an der Kathode hängst 
mit Emitter Richtung Masse nimm den NPN, von der Anode aus mit Emitter 
gegen VCC den PNP.

von C. S. (chrisdask8)


Lesenswert?

hey Thomas habe deine Schaltung mal auf einem Steckbrett vorher 
aufgebaut.
Allerdings hat es nicht wie gwünscht funktioniert.
Die "Test-LED" leuchtete auch wenn beide Pins schnell nacheinander im 
Wechsel auf High und Low geschalten werden.
Leuchten soll diese ja aber nur, wenn beide Pins gleichzeitig auf High 
stehen.
Habe trotzdem mal einen npn Transistor verwendet (s. Anhang)
und es funktioniert wie ich es geplant hatte.

Ist die Schaltung korrekt?

Und noch eine kleine Frage:
Laut Beschreibung bei reichelt hat der Atmega 23 I/O Pins,
2 davon (Pin 9 und 10) sind bei mir bereits vom externen Quarz belegt.
D.h. es wären noch 23-2 = 21 I/O Pins verfügbar.
Allerdings wenn ich nachzähle komme ich nur auf 20?

Kann man den reset Pin oder evtl den Aref Pin als I/O Pin verwenden??

ich würde diesen "21.Pin" nämlich genau noch benötigen ;-)

habt ihr eine Idee??

mfg

von C. S. (chrisdask8)


Angehängte Dateien:

Lesenswert?

s. Anhang. Nur schematisch. Für den LED cube sind mehrere LEDs 
angeschlossen.

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

C. S. schrieb:

> Und noch eine kleine Frage:
> Laut Beschreibung bei reichelt hat der Atmega 23 I/O Pins,
> 2 davon (Pin 9 und 10) sind bei mir bereits vom externen Quarz belegt.
> D.h. es wären noch 23-2 = 21 I/O Pins verfügbar.
> Allerdings wenn ich nachzähle komme ich nur auf 20?

Also der PortB geht von PB0..PB7, PortD geht von PD0..PD7, PortC aber 
nur von PC0..PC6, insgesamt 8+8+7=23 Pins.
OK, Reichelt kann zählen (vorausgesetzt ich kann zählen), hast du 
vielleicht den Reset-Pin (PC6, Pin 1) nicht mitgezählt?

> Kann man den reset Pin oder evtl den Aref Pin als I/O Pin verwenden??
> ich würde diesen "21.Pin" nämlich genau noch benötigen ;-)

ah, da stehts eh! Ja kann man, dann brauchst aber einen parallel 
Programmer (weiß ich nicht ob dein Board das kann) um das Teil wieder 
neu zu programmieren.

Ich würde eigentlich statt deinem Quarz einen externen Oszillator nehmen 
(findest zB bei Reichelt unter "Artikel-Nr.: OSZI 8,000000") und an den 
XTAL1 hängen, dann kannst den XTAL2 als IO Pin verwenden. Fuse Bits 
setzen nicht vergessen.

Grüße aus Österreich!

von C. S. (chrisdask8)


Lesenswert?

hey mein LED Cube 5x5x3 ist jetzt fertig geworden und mit einer zunächst 
einfachen Muster-Abfolge bespielt. Bei Interesse ist das ganze auf 
Youtube zu betrachten:
http://www.youtube.com/watch?v=jvTHHrJh-Ys

Thomas Klima schrieb:
> Ich würde eigentlich statt deinem Quarz einen externen Oszillator nehmen
> (findest zB bei Reichelt unter "Artikel-Nr.: OSZI 8,000000") und an den
> XTAL1 hängen, dann kannst den XTAL2 als IO Pin verwenden. Fuse Bits
> setzen nicht vergessen.

Gute Idee, werde ich demnächst machen, danke für den Tipp.

Gruß Christian

von Jan L. (Firma: SAM Electronics) (lexow)


Lesenswert?

Hey bin voll begeistert hiervon

möchte mir auch einen LED Cube bauen am besten den gleichen.

Hast du einen Schaltplan dafür?


Mit freundlichen Grüßen Lexow

von C. S. (chrisdask8)


Lesenswert?

Hi Lexow,
habe keinen fertigen Schaltplan dafür, könnte dir aber einen anfertigen, 
wenn du weiterhin Interesse hast.
Wie groß soll dein LED-cube werden?
Wenn es etwas größer werden darf, kann ich dir den Artikel hier 
empfehlen:

http://www.mikrocontroller.net/articles/LED_cube

Falls du lieber erstmal einen kleinen Cube oder einen "Prototypen" bauen 
willst, so wie mein Exemplar, dann meld dich nochmal, Schaltplan kann 
ich dir bei Bedarf machen ;)

Gruß
Christian

von Tappan (Gast)


Lesenswert?

Hi, habe noch Programm und Schaltplan für einen 3^3-Cube also 
Wochenendspielerei, falls du interesse hast. Programmitert wurde das 
ganze in Assembler. Als Programmspeicher dient zZt der interne Flash, 
geplant war noch UART-Verbindung, ist aus akutem Zeit und Launemangel 
bisher allerdings noch nicht umgesetzt worden.

von led's (Gast)


Lesenswert?

moin,

hätte auch interesse an einem schaltplan:)

von Rene K. (draconix)


Lesenswert?

led's schrieb:
> moin,
>
> hätte auch interesse an einem schaltplan:)

Dito :D

von C. S. (chrisdask8)


Angehängte Dateien:

Lesenswert?

Hey Leute,

Schaltplan ist im Prinzip nicht kompliziert für nen kleinen Cube.
Ich habs folgendermaßen gemacht:
Es geht mit Sicherheit eleganter ;-)

Der Atmega8 ist wie üblich angeschlossen (habe ich weggelassen), dh. 
stabile +5V Versorgungsspannung,zb. durch 7805 Standartschaltung, 
10k-Pull-up sowie 100N am Reset, 100N zwischen Vcc und GND, Quarz etc...

Dann hat der Atmega8 im Prinzip noch 20 nutzbare I/O Pins.

Für einen 5x5x3 Cube könnte die Belegung zb. folgendermaßen aussehen:
PO-P4 "schaltet" die jeweiligen Kathoden der Ebenen alle gleichzeitig 
auf GND (über Transistor).
Die restlichen 15Pins "schalten" die vertikal verbundenen Anoden einer 
Säule auf Vcc.
Durch die Kombination einer Säule (Anode auf Vcc) und einer Ebene 
(Kathode auf GND) lässt sich jede beliebige LED ansteuern.

Zu beachten ist, dass die Leds einer Säule jeweils einen passenden 
Vorwiderstand bekommen, und die Transistoren einen Basiswiderstand von 
ca. 1kOhm.

Im Anhang noch der grobe Schaltplan (mein erster in Eagle :D, wie man 
sieht) und die Belegung der Säulen und Ebenen in meinem Cube.

Zur Vollständigkeit habe ich noch meinen C-Code angehängt.
Hier möchte ich nocheinmal darauf hinweisen, dass dieser Code primitivst 
ist und es viel eleganter und effizienter geht ;-)

mfg

von Jan L. (Firma: SAM Electronics) (lexow)


Lesenswert?

Hey Danke für alles

Der Code sieht aber extrem Umfangreich aus ^^

Hast auch einen in Bascom?

Ich werde mir das mal alles angucken und wens Probleme gibt meld ich 
mich :P

Gruß Lexow

von C. S. (chrisdask8)


Lesenswert?

Jan Lexow schrieb:
> Hey Danke für alles

Kein Ding. Mir wurde hier auch schon oft geholfen. Zwar bin ich im 
Prinzip auch noch Anfänger, aber ich helf wo ich kann ;-)

Jan Lexow schrieb:
> Hast auch einen in Bascom?

Leider nicht. Habe 0 Erfahrung mit Bascom.

Jan Lexow schrieb:
> Der Code sieht aber extrem Umfangreich aus ^^

Ja, ich sagte ja, dass der Code primitiv und unübersichtlich ist, 
kommentiert mit uninformativen Kommentaren (im Code).
War jetzt auch nicht als Non-Plus-Ultra gedacht, sondern nur als 
"Testcode", falls du den Cube genau so aufbauen solltest wie ich.

Jan Lexow schrieb:
> Ich werde mir das mal alles angucken und wens Probleme gibt meld ich
> mich :P

Wär nett, wenn du mich auf dem laufenden hälst, wie es so läuft bei dir.
Weitere Fragen auch gerne ;-)

mfg
Christian

von Typhoon (Gast)


Lesenswert?

Hi

Kleiner Tipp von mir:

Statt diese vielen lästigen Transistoren zu verlöten würde ich lieber 
ULN2803 (Treiber IC) einsetzen, damit kannst du jeweils 8 LEDS 
betreiben, scheint mir wesentlich einfacher.

Vielleicht baue ich mir auch so ein Teil :)

Gruss

von j0 (Gast)


Lesenswert?

Hat hier noch keiner an Charlieplexing gedacht? damit komme ich bei 21 
genutzten Pins auf schlappe 21 * 20 = 420 LEDn.
Siehe auch:
http://en.wikipedia.org/wiki/Charlieplexing
Beitrag "Charlieplexing Frequenz?"
Beitrag "Charlieplexing mit PIC - wie den Strom erhöhen?"
Soll mir bitte keiner mehr sagen er hätte für seine paar LEDn nicth 
genug Pins... ;)
j0

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.