Guten Tag,
nun habe ich endlich nach einger Zeit meine Platine, unter Anderem mit
einem LED Display, fertiggestellt. Das Display ist wie folgt
angeschlossen:
Die Kathoden der Digits 1-4 liegen auf den F0-F4, bzw. ADC0-ADC4 (F1
nicht belegt).
Die Anoden der Segmente A-F befinden sich auf den Analogports A0-A6.
Ich benutze den AT90CAN128.
Nun zu meiner Frage:
Theoretisch müsste ja alles aufleuchten, wenn ich bei allen Anoden den
Port auf "1" setzte, und bei den Kathoden durch ein "0" auf Masse ziehe.
1
DDRA=0b01111111;
2
DDRF=0b00011101;
3
4
PORTA=0b00000000;
5
PORTF=0b00011101;
Allerdings leuchtet dann nur ein einzelnes Segment auf; das oberste beim
2. Digit.
Also habe ich mit einem Voltmeter mal direkt an den Pins des Displays
durchgemessen. Dabei war Folgendes auffällig.
1. Wenn ich eine Kathode einmal mit jeder Anode verbunden habe, so kamen
stets etwa 4,95V heraus. Lediglich bei dem "A"-Segent lagen die Werte
etwa 0,4V darunter.
2. Beim Verbinden der Kathode des Digits 2 mit den Anoden lagen die
Spannungen lediglich bei 2,1V, beim A-Segment wieder nur bei 1,7V.
Außerdem kann ich, wenn ich diese Kathode mit den anderen Kathoden
verbinde eine Spannung von ca. 2,8V messen, was ja auch nicht sein
dürfte.
So und nun leuchtet komischerweise als einziges Segment die Kombination
aus dem "A" und dem 2. Digit, also genau da wo die Abweichungen
auftreten?!
Ich weiß ehrlich nicht mehr weiter, denn auch Brückungen zwischen den
Pins gibt es nicht (habe das auch unter der Lupe geprüft.
Mein nächster Ansatz ware, dass die Kathoden auf den ADC Ports
geschaltet sind, aber daran kann es doch nicht liegen oder?!
Ich bedanke mich im Voraus schonmal für die Hilfe!
Mit freundlichen Grüßen,
Heinz
Deine Kathode-Anode Geschichte verwirrt mich jetzt ehrlich gesagt, beim
drüberlesen.
Ich hätte halt nicht alles auf einmal eingeschaltet (über den
Stromverbrauch und was du den Pins zumuten darfst, sollte man sowieso
noch getrennt reden9, sondern ich hätte halt erst mal nur 1 Segment an
einer Anzeigenstelle in Betrieb genommen.
1
intmain()
2
{
3
DDRA=0b01111111;
4
DDRF=0b00011101;
5
6
PORTA=0b01111110;
7
PORTF=0b00000001;
8
9
while(1)
10
;
11
}
und wenn dann nichts leuchtet, denn geh ich mit dem Voltmeter an den Pin
PF0, da müssten 5V sein bzw. an den Pin PA0, dort müssten 0V sein. Am
Port F müssen im Gegenzug die restlichen Ausgänge auf 0V liegen, bzw. am
Port A die restlichen auf 5V.
Stimmen die Spannungen, dann würde ich mir mal Gedanken machen, ob ich
vielleicht die unbekannten Anzeigen verkehrt herum angeschlossen habe.
Ist soweit alles in Ordnung, dann probiere ich das nächste Segment
1
intmain()
2
{
3
DDRA=0b01111111;
4
DDRF=0b00011101;
5
6
PORTA=0b01111101;
7
PORTF=0b00000001;
8
9
while(1)
10
;
11
}
usw.
Wenn dann fest steht, das die Verkabelung der Segment für diese Stelle
in Ordnung ist, dann wiederholt sich das Spielchen für die anderen
Stellen.
Tauchen irgendwelche Unregelmässigkeiten auf, dann wird dem
nachgegangen.
Heinz schrieb:> Theoretisch müsste ja alles aufleuchten
Unsinn, wo soll denn der Strom herkommen ?
SO ein AVR schaltet doch blos 20mA.
Da hilft es auch nichts, die unbedingt notwendigen Vorwiderstände an den
LEDs wegzulassne, mehr Strom kommt eben nicht, und der verteilt sich auf
alle LEDs.
Bloss: Jede LED hat eine leicht andere Durchlasspannung, ud die mit der
niedrigsten Durchlassspannung gewinnt, die bekomt fast allen Strom und
durch die anderen fliesst nichts, weil es keine stromverteilenden
Vorwiderstände gibt.
Ist es wirklich so schwer, erst mal nachzuschlagen wie man es richtig
macht ?
Mindestens an die Digits müssen stromverstärkende Transistoren, dann
kann man mit Vorwiderständen den Strom auf 20mA begrenzen, der sich dann
auf 4 Digits verteilt, also 5mA mittlerer Strom pro Segment:
http://ww1.microchip.com/downloads/en/AppNotes/00590c.pdf
Danke für Eure Antworten!
Ich habe einen ziemlich simplen Fehler gemacht, der nun aber wieder
behoben wurde.
Transistoren wurden verbaut und nun habe ich aber das Problem, dass
trotzdem bei Schaltung mehrerer Segmente die Helligkeit doch sehr stark
nachlässt.
Nun zu meiner Vermutung: leider habe ich beim Kauf nicht ganz aufgepasst
und ein Display mit gemeinsamer Anode gekauft, d.h. ich habe inkl. des
Doppelpunkts 8 Anoden die mit Strom versorgt werden müssten, wodurch nur
2,5mA pro Segment ankommen würden!
Liegt es vermutlich daran und ich kaufe mir ein Display mit gemeinsamer
Kathode oder könnte der Hase auch woanders begraben liegen?
Liebe Grüße,
Heinz
Heinz schrieb:> Transistoren wurden verbaut und nun habe ich aber das Problem, dass> trotzdem bei Schaltung mehrerer Segmente die Helligkeit doch sehr stark> nachlässt.
?
Es wird Zeit für einen Schaltplan
Man kann natürlich 7 Segment Anzeigen mit mehreren Stellen so aufbauen,
dass man alle Stellen gleichzeitig unabhängig voneinander einschalten
kann. Aber im Regelfall tut man das nicht, sondern man multiplext.
D.h. es leuchtet zu jedem beliebigen Zeitpunkt nur eine Stelle. Die
allerdings wechselt dauernd und so schnell, dass man als Mensch da nicht
mehr mitkommt.
Allerdings: Da jetzt bei einer zb 4 stelligen Anzeige jede Stelle nur
1/4 der Zeit leuchtet, ist die wahrgenommene Helligkeit geringer. Es ist
optisch nicht ganz 1/4, weil unser Sehapparat logarithmisch
funktioniert, aber es ist auf jeden Fall dunkler.
> Nun zu meiner Vermutung: leider habe ich beim Kauf nicht ganz aufgepasst> und ein Display mit gemeinsamer Anode gekauft, d.h. ich habe inkl. des> Doppelpunkts 8 Anoden die mit Strom versorgt werden müssten, wodurch nur> 2,5mA pro Segment ankommen würden!
Lass mich raten. Du hast nur 1 Vorwiderstand pro Segment.
Das ist falsch. Jedes Segment braucht seinen eigenen Vorwiderstand.
> Liegt es vermutlich daran und ich kaufe mir ein Display mit gemeinsamer> Kathode
Nein.
Das hat damit nichts zu tun.
Ob gemeinsame Anode oder gemeinsame Kathode hat nur darauf eine
Auswirkung, wo der Schalttransistor für den jeweils gemeinsamen
Anschluss sitzt. Aber die Physik lässt sich dadurch nicht ändern.
Wenn du eine vernünftige Anzeige willst:
* jedes Segment braucht seinen eigenen Vorwiderstand. Bei gemeinsamer
Anode sitzt der für jedes Segment dann eben an der Kathode jeder LED
* dafür können alle Segmentleitungen zum Multiplexen parallel vor dem
Vorwiderstand zusammengeführt werden, da ja immer nur 1 Stelle leuchtet.
* Um den Strom treiben zu können (wenn der Strom den ein Pin bzw. Port
abkann nicht ausreicht), wird jede Kathoden-Leitung nicht direkt vom µC
betrieben, sondern der µC schaltet die Kathoden-Segmentleitungen per NPN
Transistor
* Um die jeweilige Stelle auszuwählen, schaltet der µC mittels eines
Transistors die jeweilige Anode
Man sollte bei gemultiplexten Anzeigen die Frequenz im Auge behalten.
Einerseits sollte die über 50 Hz liegen, aber auch nicht über 300 Hz.
Zu klein und es fängt an zu flimmern, zu hoch und die Anzeige wird
zu dunkel. Die Segmentwiderstände sollten dabei so niedrig gewählt
werden, dass die Segmente eine optimale Lichtausbeute haben.
Controller können aufgrund ihrer Bauweise nur einen begrenzten Strom
liefern, was den Einsatz eines Treibers,z.B. ULN 2... rechtfertigt.
Ein Schaltplan wäre natürlich aussagekräftiger.
Klaro schrieb:> Zu klein und es fängt an zu flimmern, zu hoch und die Anzeige wird> zu dunkel.
Nein.
Die Helligkeit hat mit Multiplexfrequenz nichts zu tun, da ist ohne
PWM die Anzahl der gemultiplexten Ziffern massgebend, ansonsten ist
es Duty Cycle.
Alles klar, das mit dem Multiplexing werde ich mir mal näher anschauen.
Im Anhang befindet sich die Schaltskizze. War mein erstes Projekt mit
Visio :/
Gruß,
Heinz
Ich bin zwar auch ein Anfänger, aber eine gemeinsame Kathode bzw. Anode
hängt man überlicherweise nicht direkt an einen Mikrocontroller. Kann
mich aber auch irren.
Jemand schrieb:
> Ich bin zwar auch ein Anfänger, aber eine gemeinsame Kathode bzw.> Anode> hängt man überlicherweise nicht direkt an einen Mikrocontroller. Kann> mich aber auch irren.
Bin leider erst später auf dieses Forum gestoßen und habe mich davor mit
Hilfe eines Buches ("AVR Mikrocontroller in C programmieren") belesen.
Dort waren Anode und Kathode an den Controller angeschlossen.
Habe ich das in Zusammenhang mit dem AVR-Tutoriaö richtig verstanden,
dass es auch genügt, lediglich die Anoden an den Controller
anzuschließen?
Okay bitte vergesst die letzte Frage, habe jetzt die eichtige Abbildung
im Tutorial gesehen:
http://www.mikrocontroller.net/articles/Datei:Tut_7_Seg_03.gif
Aber danach wäre der Anschluss meines Displays doch korrekt oder? Trotz
meiner höheren Widerstände habe ich einen Durchlassstrom von 1,9V.
Heinz schrieb:> Aber danach wäre der Anschluss meines Displays doch korrekt oder? Trotz> meiner höheren Widerstände habe ich einen Durchlassstrom von 1,9V.
Wie soll das korrekt sein ?
Wenn da eine 8 angezeigt wird hast du 7*Segmentstrom an einem
Controllerpin.
Dieser kann das weder aushalten, noch ist es so "korrekt".
Marc Vesely schrieb:
> Wie soll das korrekt sein ?> Wenn da eine 8 angezeigt wird hast du 7*Segmentstrom an einem> Controllerpin.> Dieser kann das weder aushalten, noch ist es so "korrekt".
Sorry aber das verstehe ich nicht ganz. Bei einer 8 muss ich alle
Anoden, sprrich die Segmente A-G, schalten, die aber alle an
verschiedenen Pins liegen?!
Heinz schrieb:> Sorry aber das verstehe ich nicht ganz. Bei einer 8 muss ich alle> Anoden, sprrich die Segmente A-G, schalten, die aber alle an> verschiedenen Pins liegen?!
Und die gemeinsame Kathode liegt an einem Pin. Daran ändert auch der
strombegrenzende Widerstand nichts. Begrenzt zwar den Strom auf
etwa 5mA, aber das ist bei weitem nicht genug für alle Segmente.
MaWin schrieb:> Bloss: Jede LED hat eine leicht andere Durchlasspannung, ud die mit der> niedrigsten Durchlassspannung gewinnt, die bekomt fast allen Strom und> durch die anderen fliesst nichts, weil es keine stromverteilenden> Vorwiderstände gibt.
Genau.
Und seine Antwort kam vor 5 Tagen.
Ich habe mich nochmal an die Arebit gemacht und einen neuen Schalptlan
mit einem Programm erstellt, was auch Simulationen durchführen kann.
Im Anhang habe ich mal den Schaltplan als Screenshot veröffentlicht.
Durchgetestet wurden der Fall das alle Segmente auf einer Ziffer (mehr
sollen es ja durch Multiplexing nicht warden) aufleuchten sollen.
Hierbei kam ich auf ein Ergebnis von ca. 6,2mA Durchlassstrom der
Dioden.
Da dies aber nur der Fall bei einer 8 ist, sonst maximal 5 Segmente
aufleuchten, habe ich auch hier einmal durchgetestet (siehe
Schaltskizze). Dabei kam ich auf eine mittere Stromstärke von ca. 8,2 mA
pro Diode.
Ist eurer Meinung nach die Helligkeit bei gegebenen Stromstärken
ausreichend um es gut ablesen zu können?
Heinz schrieb:> Ist eurer Meinung nach die Helligkeit bei gegebenen Stromstärken> ausreichend um es gut ablesen zu können?
Das wirst du in der Praxis ausprobieren müssen.
Denn das hängt nicht nur von den Anzeigen alleine ab. Es hängt auch
davon ab, in welchem Winkel man auf die Anzeige sieht oder ob eine
Filterscheibe davor verbaut wird.
Die Grössenordnung klingt auf jeden Fall erst mal nicht schlecht (auch
wenn mir nicht ganz klar ist, warum du in deiner Simulation 2
verschiedene Werte rauskriegst, denn eigentlich sind die Stellen
voneinander ja unabhängig, genauso wie die einzelnen Segmente)
Heinz schrieb:> Im Anhang habe ich mal den Schaltplan als Screenshot veröffentlicht.
Ich finde, dass Du nach dieser Zeit noch nicht gelernt hast, wozu
Transistoren und Widerstände in der Schaltung gebraucht werden.
Was soll denn zum Beispiel die Kombination von 10k, 220 Ohm und NPN
bezwecken? Das ist doch doppeltgemoppelter Murks.
Es gibt hier im Forum soviele Vorschläge von Schaltungen und Programmen,
die doch zumindest als Basis verwendet werden können.
Gut, man muß sich schon die Mühe machen, danach auch zu suchen.
Karl Heinz schrieb:> Das wirst du in der Praxis ausprobieren müssen.
So ist es!