Forum: Mikrocontroller und Digitale Elektronik Attiny2313 und multiplex LEDs zu wenig Spannung/Strom?


von Simon W. (simon1711)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Schaltung mit einem Attiny2313 und 22 LEDs entwickelt. die 
Schaltung funktioniert, nur wenn der Controller drauf kommt leuchtet nur 
die einzelne LED aber sehr schwach.

Jetzt meine Frage:
Wie viel Strom kann ein I/O Port vom Attiny2313?
Wie kann es sein, dass ich nur ca. 2 Volt am Ausgang mit Last messe. Und 
ohne Last schwankt es start zwischen 0V und 4,8V.

Wenn ich direkt 5V an den Sockel anlege funktioniert alles einwandfrei.
1
' Initialisierung MCU = ATTiny12 ohne SRAM
2
3
$regfile = "attiny2313.dat"                                 ' Controller = ATtiny12
4
$crystal = 1000000                                          ' Takt 1MHz
5
$noramclear                                                 ' RAM nicht initialisieren
6
$Tiny                                                       ' Stack nicht initialisieren
7
'$hwstack = 32                                              ' Stackinitialisierung wird durch $TINY unterdrückt
8
$swstack = 0                                                ' Software 0
9
$framesize = 0                                              ' Framesize = 0
10
11
Portb = &B11111111
12
13
Led1 Alias Portb.0
14
Led2 Alias Portb.1
15
Led3 Alias Portb.2
16
Led4 Alias Portb.3
17
Led5 Alias Portb.4
18
Led6 Alias Portb.5
19
Led7 Alias Portb.6
20
Status Alias Portb.7
21
22
Config Portd.4 = Output
23
Config Portd.5 = Output
24
Config Portd.6 = Output
25
26
Seg1 Alias Portd.4
27
Seg2 Alias Portd.5
28
Seg3 Alias Portd.6
29
30
31
Config Portd.2 = Input
32
Config Portd.3 = Input
33
34
S1 Alias Portd.2
35
S2 Alias Portd.3
36
Status = 1
37
38
Do
39
Toggle Status
40
Wait 1
41
Loop
Schaltung im Anhang.

Vielleicht kann sichs ja mal jemand anschauen. Gibt ein funkelndes 
Weihnachtsgeschenk ;-)

Viele Grüße

Simon

von MaWin (Gast)


Lesenswert?

Deine Schaltung ist nicht so schlecht,
daß nur eine LED schummrig leuchten sollte,

Der ATtiny-Ausgang liefert 20mA
dein 220 Ohm Widerstand begrenzt den Strom einer 2V LED auf 10mA,
den BC547 wird somit 70mA Schalten müssen
und bekommt über den 440 Ohm (aus welcher Wühlkiste hast du
denn den Wert, vertippt?) Widerstand 9mA,
sollte reichen wenn auch die LEDs nicht ganz hell sind.

besser wäre:
ATTiny bis 30mA belasten (irgendwo zwischen 20mA und 40mA
regelt er ab), R12 bleibt 220R, R5ff auf 82 Ohm reduzieren,
BC547 gegen BC328 ersetzen, Basisvorwiderstand auf 180 Ohm
verringern.

aber das Programm kann nichts werden.
Ich sehe nicht, wo Portb auf output geschaltet wird.
Ich sehe nicht, auf welche Pegel Seg1, Seg2, Seg3
geschaltet werden (nur einer dürfte auf HI liegen).
und ansonsten tut das Program auch noch nichts ausser
der nicht-gemultiplexten LED
Mit einem richtigen programm wird es funktionieren,
auch mit deiner Schaltung,
bei meinen Änderungen sind die 21 LEDs sogar ähnlich
hell wie die einzelne.

von Simon W. (simon1711)


Lesenswert?

> Ich sehe nicht, wo Portb auf output geschaltet wird.
Hier:
> Portb = &B11111111

Also das Programm ist keinesfalls mein Programm zum Multiplexen. Ich 
hatte nur soweit abgespeckt, bis sich überhaupt was getan hat.

Ich kann dir einen BC639 bieten.

Aber mich wunderts trotzdem, dass bei angelegten 5V alles wunderbar 
funktioniert. Bricht beim Attiny die Spannung ein??? Oder liefert der 
gar keine 5V am Ausgang?

Kann heute Abend deine Änderungen testen.
Danke!

von Karl H. (kbuchegg)


Lesenswert?

Simon W. schrieb:
>> Ich sehe nicht, wo Portb auf output geschaltet wird.
> Hier:
>> Portb = &B11111111

Das schaltet aber nicht auf Ausgang
Tippfehler?

 DDrb = &B11111111

von Simon W. (simon1711)


Lesenswert?

>  DDrb = &B11111111

Ok.... klar!
Hab ich wohl falsch kopiert.

Dann habe ich auch immer nur die Pull-Ups an und aus geschaltet, deshalb 
vielleicht die geringe Spannung.

Muss ich  unbedingt ausprobieren. Meld mich heute Abend wieder.

von Simon W. (simon1711)


Lesenswert?

Meine Schaltung funktioniert jetzt  auch mit Attiny.

Nur leuchten die LEDs nicht sauber, sondern glimmen leicht mit den 
anderen Segmenten mit.
Kann mir jemand eine "saubere" Methode zum Multiplexen erklären???

von Martin (Gast)


Lesenswert?

du musst vorher alle leds ausschalten, bis das nächste segment 
angeschaltet wird. sonst glimmts halt.

von Falk B. (falk)


Lesenswert?

@  Simon W. (simon1711)

>Kann mir jemand eine "saubere" Methode zum Multiplexen erklären???

Aktuelle Segmente und Digit ausschalten
Neu Daten verarbeiten und auf Segmente ausgeben (bewirkt eine kleine 
Pause von ein paar Mikrosekunden, wo keinerlei Digit aktiv ist)
Neues Digit einschalten

http://www.mikrocontroller.net/search?query=%2Bled+%2Bmultiplex+%2Bnachleuchten&forums[]=1&forums[]=19&forums[]=9&forums[]=10&forums[]=2&forums[]=4&forums[]=3&forums[]=6&forums[]=17&forums[]=11&forums[]=8&forums[]=14&forums[]=12&forums[]=7&forums[]=5&forums[]=18&forums[]=15&forums[]=13&forums[]=16&max_age=-&sort_by_date=0

MFG
Falk

von Peter D. (peda)


Lesenswert?

Simon W. schrieb:
> Kann mir jemand eine "saubere" Methode zum Multiplexen erklären???

Timerinterrupt


Peter

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.