Forum: Mikrocontroller und Digitale Elektronik ATtiny mit vielen Ausgängen


von Schnösel (Gast)


Lesenswert?

Bin leider verdonnert worden zu einer kleinen Weihnachtsbastelei. Ich 
brauche 15 Ausgänge um 15 LEDs einzeln anzusteuern.

Ich bin etwas unsicher, ob ich hier noch mit einem ATtiny 2313 hinkomme. 
Der hat 18 I/Os, aber lassen die sich alle nutzen, wenn man den ISP dann 
auch zur Programmierung verwenden möchte?

Alternativ einen im TQFP-32 Gehäuse nehmen?

von OldMan (Gast)


Lesenswert?

Du brauchst einen Port mit 8 Ausgängen.
Das Zauberwort lautet Multiplexing.

von Timmo H. (masterfx)


Lesenswert?

ISP = in System programming.  Ja du kannst alle Ports nutzen. Zum 
programmieren darf halt nicht zu viel last dran hängen, zumindest nicht 
beim programmieren

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Schnösel schrieb:
> Der hat 18 I/Os, aber lassen die sich alle nutzen, wenn man den ISP dann
> auch zur Programmierung verwenden möchte?

Nein. Wenn du den Reset abschaltest, brauchst du dir über ISP keine 
Gedanken mehr zu machen. Bleiben also noch 17. Mit 14 davon kannst du 
machen, was du willst. Die 15. LED kommt an eine der ISP-Leitungen. 
Normalerweise hat dss keinen negativen Einfluss. Die LED flackert dann 
ein bisschen im Takt der Daten. Darüber freut sie sich. Gerade zu 
Weihnachten. Falls der Programmer dazu zu schwachbrüstig ist, musst du 
die Leitung mit einem Jumper auftrennbar machen. An die anderen beiden 
ISP-Pins kannst du z.B. Taster anschliessen.

mfg.

von Schnösel (Gast)


Lesenswert?

OldMan schrieb:
> Du brauchst einen Port mit 8 Ausgängen.
> Das Zauberwort lautet Multiplexing.

Äh .. was bitte soll ich mit Multiplexing? Ich möchte keine zusätzlichen 
Chips einsetzten, um dann doch wieder zu demultiplexen.

Oder meintest du die Anordnung in einer LED Matrix?

von M. K. (sylaina)


Lesenswert?

Hm, ich überlege mal ins Blaue: 8 bit können 255 Zustände. Du hast 15 
LEDs die wahrscheinlich jeweils nur zwei Zustände kennen, also musst du 
30 Zustände codieren können…also eigentlich reichen hierfür sogar nur 5 
IOs.

von Schnösel (Gast)


Lesenswert?

Timmo H. schrieb:
> Ja du kannst alle Ports nutzen. Zum
> programmieren darf halt nicht zu viel last dran hängen, zumindest nicht
> beim programmieren

Ja, das klingt gut. Ich muss hinzufügen, ich würde gar nicht fragen wenn 
ich nicht gerade im "Bestellstress" wäre. Sonst kommt das Zeug nicht 
mehr rechtzeitig.

von Schnösel (Gast)


Lesenswert?

Michael K. schrieb:
> Hm, ich überlege mal ins Blaue: 8 bit können 255 Zustände. Du hast 15
> LEDs die wahrscheinlich jeweils nur zwei Zustände kennen, also musst du
> 30 Zustände codieren können…also eigentlich reichen hierfür sogar nur 5
> IOs.

Sicher, ich könnte jetzt mit wenigen I/O auskommen, indem ich einen 
Binary Decoder zusätzlich einsetze. Das bedeutet aber zusätzlichen 
Schaltungsaufwand und Fläche. Will ich vermeiden. So einfach wie möglich 
soll es sein.

von Uwe (de0508)


Lesenswert?

Schnösel,

wie willst Du die LED beschalten ?
Denke an die max. Ströme der einzelnen Pins und an den gesamt Strom.

Es kann sein, dass nicht alle Pins den selben Strom als Sink oder Source 
liefern können.

von Uwe (de0508)


Lesenswert?

Schnösel,

was willst Du den Bauen ?

Vielleicht ist dies ein Projekt für dich ?

*Blinkenlights (LED-Matrix)*
# 
http://www.ehajo.de/baus%C3%A4tze/smd-baus%C3%A4tze/blinkenlights-led-matrix.html

von Schnösel (Gast)


Lesenswert?

Uwe S. schrieb:
> Schnösel,
>
> wie willst Du die LED beschalten ?
> Denke an die max. Ströme der einzelnen Pins und an den gesamt Strom.
>
> Es kann sein, dass nicht alle Pins den selben Strom als Sink oder Source
> liefern können.

Ja, ich weiß. Die LED sollen langsam ihre volle Helligkeit erreichen, 
verharren und dann wieder bis auf Null abschwellen, also ein Zeitglied. 
Der ATtiny braucht nur das RC-Glied dazu langsam laden und wieder 
entladen; ich werde für jeden Ausgang eine SMD-Transe als Treiber 
spendieren. Die Schaltung für alles habe ich aber noch nicht.

von Ulrich F. (Gast)


Lesenswert?

Schnösel schrieb:
> Äh .. was bitte soll ich mit Multiplexing?
Hattest du nicht eine Frage gestellt?
Ich halte den Multiplexing Vorschlag für eine gute Antwort.


Schnösel schrieb:
> Ich möchte keine zusätzlichen
> Chips einsetzten, um dann doch wieder zu demultiplexen.
Wie wäre es mit Charlieplexing, wenn dir Matrixen nicht gefallen....

von Schnösel (Gast)


Lesenswert?

Uwe S. schrieb:
> Schnösel,
>
> was willst Du den Bauen ?
>
> Vielleicht ist dies ein Projekt für dich ?
>
> *Blinkenlights (LED-Matrix)*
> #
> http://www.ehajo.de/baus%C3%A4tze/smd-baus%C3%A4tz...

Ne, nix "blinken". :)

Es soll einfach ein bisschen Acryl mit superhellen LEDs zum aufleuchten 
gebracht werden. Nix besonderes. Werde auch keine Bilder hier einstellen 
(ist nicht bös gemeint, aber es soll anonym bleiben für den Empfänger, 
sonst sieht der noch meine Doofheit, dass ich hier überhaupt frage ;-)).

von pluti (Gast)


Lesenswert?

Schnösel schrieb:
> Uwe S. schrieb:
>> Schnösel,
>>
>> wie willst Du die LED beschalten ?
>> Denke an die max. Ströme der einzelnen Pins und an den gesamt Strom.
>>
>> Es kann sein, dass nicht alle Pins den selben Strom als Sink oder Source
>> liefern können.
>
> Ja, ich weiß. Die LED sollen langsam ihre volle Helligkeit erreichen,
> verharren und dann wieder bis auf Null abschwellen, also ein Zeitglied.
> Der ATtiny braucht nur das RC-Glied dazu langsam laden und wieder
> entladen; ich werde für jeden Ausgang eine SMD-Transe als Treiber
> spendieren. Die Schaltung für alles habe ich aber noch nicht.

PWM und Mosfet?

von Michael U. (amiga)


Lesenswert?

Hallo,

beschaff Dir noch schnell ein paar WS8212, dann kommst Du mit einem 
Datenpin aus. Es hängt allerdings von Deinen Programmierkenntnissen ab, 
Beispiele sind zu finden, das Timing der Ansteuerung ist nicht 
sonderlich kompliziert, aber etwas zeitkritisch.

Außer dem Tiny und den LEDs brauchst Du nichts weiter, die LEDs haben 
den PWM-Controller schon eingebaut, jede einzelne.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Schnösel (Gast)


Lesenswert?

Ulrich F. schrieb:
> Ich halte den Multiplexing Vorschlag für eine gute Antwort.

Multiplexen geht mit takten einher. Das kann ich nicht gebrauchen für 
das langsame auf- und abschwellen der LEDs. Ich brauche also nicht nur 
"An-Aus", sondern die Ausgabe einer Rampe (Dreieck). So wie bei den 
hübschen Farbwechsler-Lichtkugeln. Ausgänge am µC sparen brauche ich 
nicht. Wenn ich sie schon habe, kann ich sie auch nutzen. ;) Ob ich da 
noch was mit Lichtprogramm-Umschaltung mache per Taster weiß ich noch 
nicht.

von pluti (Gast)


Lesenswert?

Schnösel schrieb:
> Ulrich F. schrieb:
>> Ich halte den Multiplexing Vorschlag für eine gute Antwort.
>
> Multiplexen geht mit takten einher. Das kann ich nicht gebrauchen für
> das langsame auf- und abschwellen der LEDs. Ich brauche also nicht nur
> "An-Aus", sondern die Ausgabe einer Rampe (Dreieck). So wie bei den
> hübschen Farbwechsler-Lichtkugeln. Ausgänge am µC sparen brauche ich
> nicht. Wenn ich sie schon habe, kann ich sie auch nutzen. ;) Ob ich da
> noch was mit Lichtprogramm-Umschaltung mache per Taster weiß ich noch
> nicht.

warum willst du denn kein PWM nutzen? Sollen alle LEDs gleich hell und 
dunkel werden oder unterschiedlich steuerbar?

von OldMan (Gast)


Lesenswert?

Schnösel schrieb:
> Es soll einfach ein bisschen Acryl mit superhellen LEDs zum aufleuchten
> gebracht werden.

Und warum brauchst Du dafür einen uC?
Das könnte man auch mit ein paar Standardkomponenten lösen, ohne uC.

Solange Du nicht detailliert schreibst, wie das Aufleuchten ablaufen 
soll,
solange kann Dir hier nicht wirklich geholfen werden.

Im Supermarkt gibt es derzeit LED-Lichterketten mit blauen, roten und 
gelben LEDs. 50 Stück mit kleiner Steuerung für lächerliche 4,95 €.
Das solltest Du dir einmal näher anschauen, dann klappt es vielleicht 
mit Deinem Projekt vor Weihnachten noch.....
Ansonsten sehe ich da kein Licht am Ende des Tunnels für Dich.

von Sebastian S. (amateur)


Lesenswert?

Wenn es hell werden soll, kommst Du sowieso nicht ohne Treiber für die 
LEDs aus. Die Belastbarkeit eines Tiny (worst case: alle Ausgänge sind 
vollgedröhnt, also high) ist nämlich begrenzt. Somit sollte es kein 
Problem sein, den ISP doppelt zu belegen. Wenn Dich allerdings das 
synchrone Geflacker der Dioden während des Programmiervorganges stört, 
kann auch ein Löt-Jumper helfen. Der ist in der Preisklasse: Kost' fast 
nix - nur ein bisschen Platz auf der Platine.

von Schnösel (Gast)


Lesenswert?

Michael U. schrieb:
> Außer dem Tiny und den LEDs brauchst Du nichts weiter, die LEDs haben
> den PWM-Controller schon eingebaut, jede einzelne.

PWM war auch meine erste Idee. Das gefällt mir aber von der Wirkung her 
nicht. Das ist zu grob aufgelöst und ruckelt. Ich möchte keine 
erkennbaren Stufen.

Ich weiß, man kann das feiner aufgelöst hinbekommen. Aber dann steigt 
der Aufwand wieder und ich brauche das für 15 LEDs einzeln und 
laaaangsam, du verstehst?!

;)

von Schnösel (Gast)


Lesenswert?

pluti schrieb:
> warum willst du denn kein PWM nutzen?

Weil mir das flackern nicht gefällt.

> Sollen alle LEDs gleich hell und
> dunkel werden oder unterschiedlich steuerbar?

Auf jeden Fall unterschiedlich. Vielleicht per Zufallsprinzip.

von M. K. (sylaina)


Lesenswert?

Schnösel schrieb:
> PWM war auch meine erste Idee. Das gefällt mir aber von der Wirkung her
> nicht. Das ist zu grob aufgelöst und ruckelt. Ich möchte keine
> erkennbaren Stufen.

Ne 16 bit PWM ist dir zu grob aufgelöst? Hallo? Also das kauf ich dir 
mal nicht ab.

von Schnösel (Gast)


Lesenswert?

OldMan schrieb:
> Und warum brauchst Du dafür einen uC?
> Das könnte man auch mit ein paar Standardkomponenten lösen, ohne uC.
>
> Solange Du nicht detailliert schreibst, wie das Aufleuchten ablaufen
> soll,
> solange kann Dir hier nicht wirklich geholfen werden.

Keine Angst, ich weiß schon was ich will.

> Im Supermarkt gibt es derzeit LED-Lichterketten mit blauen, roten und
> gelben LEDs.

Ich will keine Lichterkette bauen.

> Ansonsten sehe ich da kein Licht am Ende des Tunnels für Dich.

Mal sehen, ob's noch klappt.

von Loddaar (Gast)


Lesenswert?

Michael K. schrieb:
> Du hast 15
> LEDs die wahrscheinlich jeweils nur zwei Zustände kennen, also musst du
> 30 Zustände codieren können…also eigentlich reichen hierfür sogar nur 5
> IOs.

verstehe deine Rechnung nicht, bei mir kommen da 2 hoch 15 Zustände raus 
(entsprechend 15 Bit)

von pluti (Gast)


Lesenswert?

Schnösel - du musst deine Anforderungen genauer spezifizieren. Es ist 
sehr unschön & anstrengend, wenn man dir alles aus der Nase ziehen muss 
:-/

mach doch erstmal eine Anforderungsliste und dann wird dir bestimmt 
geholfen :-)

von Michael U. (amiga)


Lesenswert?

Hallo,

@Schnösel: was gefällt Dir daran nicht?
http://www.avr.roehres-home.de/Stern.mp4

Die Videoqualität zeigt leider nicht die ganz die wirkliche Darstellung, 
der Kontrastumfang ist meinem Fotoapparat zu groß.
Kaum Bauteilaufwand, letztlich nur etwas programmieraufwand oder man ist 
faul wie ich und nimmt die ArduinoIDE und deren FastLED-Lib.
Was da läuft ist ein Demo der Lib mit verschiedenen Effekten, ich muß 
mir noch ein paar eigene Muster ausdenken und programmieren.

http://www.ebay.de/itm/4-Stripes-mit-je-6-x-WS2812B-LED-schwarz-WS2812-5050-SMD-WS2811-/350951233708?hash=item51b652d8ac:g:UtMAAOSwmUdUV6PK
Sollte ja nur ein Hinweis sein, die Teile werden zur Zeit wohl etwas 
knapp bei Versand aus Deutschland.

Gruß aus Berlin
Michael

von Schnösel (Gast)


Lesenswert?

Michael K. schrieb:
> Schnösel schrieb:
>> PWM war auch meine erste Idee. Das gefällt mir aber von der Wirkung her
>> nicht. Das ist zu grob aufgelöst und ruckelt. Ich möchte keine
>> erkennbaren Stufen.
>
> Ne 16 bit PWM ist dir zu grob aufgelöst? Hallo? Also das kauf ich dir
> mal nicht ab.

Das was ich auf YouTube gesehen habe ist mir jedenfalls zu grob und 
bedenke bitte, ich bräuchte die PWM an 15 Ausgängen!!

Bedenke bitte, ich bin kein "Peter Dannegger" mit jahrelanger täglicher 
µC-Erfahrung. Also bitte etwas Nachsicht, wenn ich momentan den 
einfachen Weg suche. Es ist nur eine kleine Bastelei mit etwas 
Lichteffekt, mehr nicht. ;)

von Sebastian S. (amateur)


Lesenswert?

Irgendwie habe ich es nicht mitbekommen:

Sollen alle LEDs synchron die Erleuchtung bekommen?
Dann würde ein Ausgang mit einem ausgewachsenen Treiber reichen.

Hat jede LED ihre eigene Vorstellung von Hell und Dunkel und dem 
zugehörigen Zeitpunkt dafür?
Dann brauchst Du aber 15 PehWehÄmm-Generatoren. Die hat aber kein mir 
bekannter µP. Also wirst Du das Ganze wohl auf der weichen Ebene machen 
müssen. Sportlich!

von Schnösel (Gast)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> @Schnösel: was gefällt Dir daran nicht?
> http://www.avr.roehres-home.de/Stern.mp4

Gefällt mir gut. Hast du schön gemacht. Für meine Zwecke ist der 
Lichteffekt aber noch deutlich zu schnell. Ich setze eher auf den Effekt 
sehr langsamer Farbübergänge, ähnlich wie bei den käuflich matten 
Acryl-Lichtkugeln. Da gibt es aber auch "sone und solche", also manche 
sind sehr schön langsam, so dass man es kaum wahrnimmt. Andere versuchen 
sich als "Disko". Letzteres möchte ich nicht (das nervt auf Dauer). Ist 
ja nicht nur für Weihnachten gedacht, sondern soll zeitlos sein. Es soll 
nicht die Nerven strapazieren, sondern beruhigen (aber keine 
therapeutischen Zweck dienen; just for fun).

;)

von Schnösel (Gast)


Lesenswert?

Sebastian S. schrieb:
> Irgendwie habe ich es nicht mitbekommen:
>
> Sollen alle LEDs synchron die Erleuchtung bekommen?
> Dann würde ein Ausgang mit einem ausgewachsenen Treiber reichen.
>
> Hat jede LED ihre eigene Vorstellung von Hell und Dunkel und dem
> zugehörigen Zeitpunkt dafür?
> Dann brauchst Du aber 15 PehWehÄmm-Generatoren. Die hat aber kein mir
> bekannter µP. Also wirst Du das Ganze wohl auf der weichen Ebene machen
> müssen. Sportlich!

Wie ich es genau auslege muss ich noch sehen. Das ist dann Sache der 
Programmierung der Ausgänge. Wichtig ist nur, die Ausgangsspannung bzw. 
der LED-Strom fährt langsam hoch und kann auch wieder langsam 
abschwellen. Die Zeit dazwischen wie lange und wann überhaupt welche LED 
angesteuert wird ist Sache des Programms. Das kann fest eingeprägt oder 
per Zufall geschehen. Muss ich noch sehen.

Notfalls wird eben alles so einfach gemacht wie es passt. Es muss halt 
schön aussehen.

von JoJoBa (Gast)


Lesenswert?


von JoJoBa (Gast)


Lesenswert?

....
dann noch hier;
http://www.beck-shop.de/fachbuch/leseprobe/9783645650199_Excerpt_001.pdf


suchbegriff;  Hyperplexing von LED´s

....

von Oldie (Gast)


Lesenswert?

Mir sind die Tiny261/461/861 sympathischer, als der 2313.
Ist aber eine subjektive Meinung.

Jedenfalls sind das auch 20-Pin-µCs und haben jeweils
PortA-0..7 und PortB-0..7.

Den Reset-Pin PortB-7 brauchst du für ISP, also sind
15 Port-Pins frei. Für die Lichtspiele reicht der interne
RC-Oszillator.

Wenn du für die Software-PWM jedem Port-Pin einen Transistor mit
Vorwiderstand (z.B. 4,7 k) spendieren willst, kannst du die ISP
(direkt an den entsprechenden Pins angeschlossen) ohne Probleme
einsetzen.

- Und alles "live" testen...

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe mir noch nicht die Zeit genommen, da selber was zu machen.
Die LEDs machen 3x8Bit PWN für die 3 Farben, laufen zur Zeit mit 120Hz 
Wiederholrate. Mit einer 8Bit PWM sind es eben nur 256 
Helligkeitsstufen. Ein Farbübergang z.B. von Rot nach Grün sind dagegen 
schon 256*256 mögliche Schritte. Das können die LEDs auch und mehr 
machen besagte Kugeln auch nicht, schon des Aufwandes wegen.
15 LEDs einzeln ansteuern ist Aufwand. In Hardware wie in Software.
15x WS2812 ansteuern heißt so oft man will oder der Tiny zuläßt mit 
800kHz die Farbinfo (2x 8 Bit) für alle LEDs rausschieben. Dann eben 
nach (fast) beliebiger Zeit die neuen Farben für alle LEDs rausschieben.

Wie willst Du Deins anlegen? Je ein Portpin an-/ausschalten und mit 
RC-Gliedern das Faden erzeugen? LEDs sind nicht unbedingt linear zum 
eingestellten Strom und das menschliche Auge noch viel weniger.
Wie also ein "3/4" Rot erzeugen, weil da das Gelb zusammen mit Grün 
besonders angenehm wirkt?

Gruß aus Berlin
Michael

von M. K. (sylaina)


Lesenswert?

Loddaar schrieb:
> Michael K. schrieb:
>> Du hast 15
>> LEDs die wahrscheinlich jeweils nur zwei Zustände kennen, also musst du
>> 30 Zustände codieren können…also eigentlich reichen hierfür sogar nur 5
>> IOs.
>
> verstehe deine Rechnung nicht, bei mir kommen da 2 hoch 15 Zustände raus
> (entsprechend 15 Bit)

Das liegt daran, dass du falsch gerechnet hast. Eine LED kann zwei 
Zustände, mit jeder weiteren LED kommen zwei weitere Zustände hinzu. 
Macht bei 15 LEDs gesamt also 30 Zustände die entsprechend codiert 
werden müssen. Natürlich hast du recht, mit 15 LEDs kann man 2 hoch 15 
Zustände codieren aber das ist ja hier gar nicht gefordert, sprich du 
hast von der falschen Seite geschaut ;).

Schnösel schrieb:
> Das was ich auf YouTube gesehen habe ist mir jedenfalls zu grob und
> bedenke bitte, ich bräuchte die PWM an 15 Ausgängen!!

Vielleicht schaust du es dir dann mal Live und in Farbe selbst an. Aber 
15 PWMs wäre schon ne sportliche Sache, da kommst du mit dem ATTiny2313 
ohne weiter Chips schlicht nicht hin (außer vielleicht mit ner 
Soft-PWM).

: Bearbeitet durch User
von leuchter (Gast)


Lesenswert?

Du kannst auch einen Tiny mit interner PLL nehmen dann kommst Du auf 
mehrere kHz die Du dann via Soft-PWM auf die PINs umlegst.
Wenn Du die LEDs dann noch passend verschaltest kommst Du bei 16 LEDs 
mit  I/Os aus.
Such mal hier im Forum gab's schon öfter.
Nebenbei ein Mega88 ist auch nicht wesentlich größer.
Und warum kannst Du nicht nachsehen:
http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx
Immer die Hausaufgabenverbummler&Co. :-P

von Christian B. (luckyfu)


Lesenswert?

und wieso müssen es eigentlich 15 LEDs sein? Du schreibst von Farb 
Übergängen, warum nimmst du kein RGB Band? Die einfachen kannst du nach 
jeder 3. LED Abschneiden. Damit brauchst du nur 3 PWM Ausgänge. Ich kann 
dir dazu den Attiny 841 empfehlen, den hab ich gerade für sowas 
ähnliches missbraucht. Der hat einen 8 bit Timer (nehm ich als 
Zeitscheibe für die Helligkeitswerte und 2 16Bit Timer mit je 2 Compare 
Ausgängen. Das beste jedoch ist, daß er eine Ausgangsmatrix hat, welche 
es erlaubt die PWM an verschiedenen Portpins auszugeben. Damit kann man 
super einfach einen langsamen, nicht ruckelnden Farbübergang erledigen. 
(Speicher hat der auf jeden Fall mehr als genug dafür)

von Peter D. (peda)


Lesenswert?

Schnösel schrieb:
> Der hat 18 I/Os, aber lassen die sich alle nutzen, wenn man den ISP dann
> auch zur Programmierung verwenden möchte?

Den MISO-Pin kannst Du mit einer LED belasten, d.h. Du hast 15 Ausgänge 
verfügbar.
Die Ausgänge der ISP-Programmer mögen keine großen Lasten.
Oder Du nimmst einen Bootloader:
Beitrag "AVR-Bootloader mit Verschlüsselung"


Mehrkanal-PWM:
Beitrag "AVR: Fast-PWM (BAM) 12 Bit für 8 Kanäle"

von Ingo L. (corrtexx)


Lesenswert?

Schnösel schrieb:
> So einfach wie möglich soll es sein.
Charlieplexing rules, auch wenn man schnell n Knoten im Kopf hat.

von Peter D. (peda)


Lesenswert?


von Ingo L. (corrtexx)


Lesenswert?

Peter D. schrieb:
> http://giphy.com/search/facepalm
Was stimmt denn mit dir nicht ;) ?

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.