Problem mit LED Schaltung, ich komme einfach nicht dahinter

OP #2626549
Lesenswert?

Hallo zusammen,

ich bin leider mit meinem Latein am Ende. Ich kenne mich auch gernell 
recht wenig mit elektronik aus aber nun brauche ich echt eure Hilfe.

Folgendes soll passieren:

Ein Meta32 steuert eine matrix aus 25x3 Leds. Dazu sind diese Leds (blau 
ca 3,1V in reihe gelötet und mit 82 OHM Widerstand) an einem ULN2003 
angeschlossen.

Ich habe auch eine skizze des schaltplans aufgemacht. aktuell kommt auch 
noch ein quarz zum einsatz.

Sollte der Mega32 nun auf einem Port 5v ausgeben soll der ULN eben masse 
durschalten und der led verbund soll leuchten.

Ansich geht das ganze auch NUR glimmen die LEDs nur, wenn eben 5V vom 
Mega kommen. Hier erstmal das Programm (geschrieben in Bascom)

$regfile = "m32def.dat"
$regfile = "m32def.dat
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Config Portd = Output
Config Portc = Output


Dim Warten As Byte                                          '


Warten = 2
Warten2 = 75

Do
   Wait Warten

   Porta.0 = 1
   Portd.5 = 1
   Portd.6 = 1
   Wait Warten

   Porta.0 = 0
   Portd.5 = 0
   Portd.6 = 0
Loop
End

Das ganze sieht so aus: bei "aus" sind die leds aus, bei "1" glimmen sie 
jedoch nur.

Wenn ich nun aber 5v vom netzteil an den stiftleiste und daher den pin 
des ULN2003 halte leuchten die leds normal, also sollte hier kein fehler 
sein.

wenn ich nur das board mit dem mega betreibe und das flachbandkabel 
entferne sehe ich schön eine schwankung vom 1,4V bei "aus" und 5,07V bei 
"an". stecke ich nun das kabel drauf ist die schwankung von 0v bei aus 
zu 0.9v bei an.

ich kann es mir nicht mehr erklären, in meinem augen gehen beide boards 
zusammen jedoch nicht zusammen, warum bitte ist das so?

ich hoffe das mir hier echt wer helfen kann :(

mfg
Simon
Angehängte Dateien:
Gast #2626605
Lesenswert?

@ Willy:
Datenblatt lesen ist wohl aus der Mode gekommen? Pin 9 wird nur bei 
induktiven Lasten benötigt, da hängen die Kathoden der internen 
Freilaufdioden dran. Am Verhalten der LEDs hat Pin 9 überhaupt keinen 
Einfluss.

@ Simon:
Der Grund für das "Glimmen" wird wohl in deinem Programm liegen. Was 
soll denn das Programm deiner Meinung nach tun? Hast du deine Portpins 
schon mal mit einem Oszi angesehen?
Gast #2626606
Lesenswert?

> Ich kenne mich auch gernell recht wenig mit elektronik aus

Keine Sorge. Du kennst dich offenbar eherblich besser aus als
Dummbatz Willy.

> Dazu sind diese Leds (blau ca 3,1V in reihe gelötet und mit
> 82 OHM Widerstand) an einem ULN2003 angeschlossen.

Macht theoretisch satte 30mA, das müsste also hell sein.

> Config Portc = Output
> Porta.0 = 1

Wohl eher

Config Porta = Output
OP #2626609
Lesenswert?

holger schrieb:
>>ich kann es mir nicht mehr erklären, in meinem augen gehen beide boards
>>zusammen jedoch nicht zusammen, warum bitte ist das so?
>
> Weil du PORTA nicht auf Ausgang schaltest?

...........

kopf -> tisch

aber sowas von !!!!

oh man, danke für die einfache aber sehr deutliche lösung....

es geht


edit: die leds sind mit bis zu 30ma angegeben ;) und dank ca 0,5v 
sättigungsspannung des uln2003 kommen da gemessene 22ma an

mfg :D
OP #2626799
Lesenswert?

ich muss den thread nochmal hochheben.

folgendes problem nun:

c5,c2,c4,c3 sowie d0 machen auch nicht das was ich will.

andere anderen bis in dieser reihe: a0-7,b0-7,c0-7,d0 tun genau das was 
ich will.

kann es sein das hier durch fusebits oder ähnliches 5 oben genannte pins 
nicht wirklich aus output arbeiten?

mfg
Simon

P.s hier der code, diesmal hoffentlich fehlerfrei

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Config Porta = Output
Config Portd = Output
Config Portc = Output
Config Portb = Output

Dim Warten As Byte                                          '


Warten = 2
Warten2 = 75

Do
   Wait Warten

   Porta.0 = 1
   Porta.1 = 1
   Porta.2 = 1
   Porta.3 = 1
   Porta.4 = 1
   Porta.5 = 1
   Porta.6 = 1
   Porta.7 = 1
   Portb.0 = 1
   Portb.1 = 1
   Portb.2 = 1
   Portb.3 = 1
   Portb.4 = 1
   Portb.5 = 1
   Portb.6 = 1
   Portb.7 = 1
   Portc.0 = 1
   Portc.1 = 1
   Portc.2 = 1
   Portc.3 = 1
   Portc.4 = 1
   Portc.5 = 1
   Portc.6 = 1
   Portc.7 = 1
   Portd.0 = 1
   Portd.6 = 1
   Wait Warten

   Porta.0 = 0
   Porta.1 = 0
   Porta.2 = 0
   Porta.3 = 0
   Porta.4 = 0
   Porta.5 = 0
   Porta.6 = 0
   Porta.7 = 0
   Portb.0 = 0
   Portb.1 = 0
   Portb.2 = 0
   Portb.3 = 0
   Portb.4 = 0
   Portb.5 = 0
   Portb.6 = 0
   Portb.7 = 0
   Portc.0 = 0
   Portc.1 = 0
   Portc.2 = 0
   Portc.3 = 0
   Portc.4 = 0
   Portc.5 = 0
   Portc.6 = 0
   Portc.7 = 0
   Portd.0 = 0
   Portd.6 = 0
Loop
End
#2627198
Lesenswert?

Schau dir mal das DATA statement in bascom an. Damit kann man Werte im 
Flash speichern. Das wäre eine elegante Methode deine Leuchtmuster im 
AVR abzulegen. Also für jeden PORT ein Array im Flash und dann ungefähr 
so:
1
Porta_Muster:
2
Data &H00 , &HFF , &H10 [...]
3

4
Portb_Muster:
5
Data &H01 , &H11 , &H10 [...]
6

7
Portc_Muster:
8
[...]
9

10

11

12
Dim i  As Byte
13

14
Do
15
  For i  = 1  To 3  Step 1
16
    Porta = Lookup(i, Porta_Muster)
17
    Portb = Lookup(i, Portb_Muster)
18
    [...]
19
    WAITMS 1000
20
  Next i
21
Loop

Gruß Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren