Hallo Leute,
beim Bau einer kleineren 6-stelligen Digitaluhr mit dem Atmega8 im
Multiplexbetrieb ist mir aufgefallen, dass die einzelnen LEDs eine
jeweiligen Segments auch immer dann noch minimal mitleuchten, wenn
eigentlich das Signal auf "aus" steht.
Ich nutze sechs 7-Segmentanzeigen mit gemeinsamer Annode, die über
PNP-Transisteoren (BC560C) geschalten werden, wobei die Basis mit einem
1kOhm-Widerstand am jeweiligen PIN des ATmega liegen und der Emitter
direkt mit Vcc verbunden ist. Der Kollektor geht somit an die gemeinsame
Anode. Die Multiplexfrequenz beträgt ca. 67 Hz je Segment. Ein Flimmern
ist nicht zu sehen.
Wie kann man sich dieses minimale Mitleuchen erklären. Schalte ich
zwischen der Basis des Transistors und Vcc einen weiteren Widerstand
(z.B. 10kOhm), so verschwindet das Mitleuchten. Wäre diese
Vorgehensweise mit den zusätzlichen Widerständen korrekt?
Hier mal ein kurzer Code-Auszug des Interrupts, der das Multiplexen
steuert:
ISR (TIMER0_OVF_vect)
{
TCNT0 = 256-39; // 16 Mhz:Vorteiler(1024):39 = 400Hz
PORT_DIGIT = 0xff; // Port ausschalten
PORT_SEGMENT = bcd_7_ca[zeitanzeige[positionMultiplex]];
PORT_DIGIT = digit[positionMultiplex];
positionMultiplex++;
if (positionMultiplex == 6)
{
positionMultiplex=0;
}
}
> Wäre diese Vorgehensweise mit den zusätzlichen Widerständen korrekt?
Eigentlich überflüssig, denn ein auf HIGH geschalteter Ausgang
hat wesentlich weniger als 10k nach +5V, nämilch deine 1k
Basisvorwiderstand.
Also ist vermtulicu dein Port nur "LOW" oder "Offen" und nicht
"LO=0V" und "HIGH=5V"
HIGH bedeutet bei 7-Segmwent-Anzeigen mit gemeinsamer Anode, dass die
jeweils gesteuerte LED aus ist. Bei LOW ist diese LED an.
Wie kann ich nun erreichen, das LOW wirklich 0 und HIGH auch wirklich
5Volt sind?
Inu0815 schrieb:> geschalten
Bist du aus Österreich?
> Ich nutze sechs 7-Segmentanzeigen mit gemeinsamer Annode, die über> PNP-Transisteoren (BC560C) geschalten werden, wobei die Basis mit einem> 1kOhm-Widerstand am jeweiligen PIN des ATmega liegen und der Emitter> direkt mit Vcc verbunden ist.> Schalte ich zwischen der Basis des Transistors und Vcc einen> weiteren Widerstand (z.B. 10kOhm), so verschwindet das Mitleuchten.
Elektroniker verständigen sich nicht mit Prosa, sondern mit
Schaltplänen.
> Wäre diese Vorgehensweise mit den zusätzlichen Widerständen korrekt?
Hört sich eher nach "Murks" an...
> HIGH bedeutet bei 7-Segmwent-Anzeigen mit gemeinsamer Anode, dass die> jeweils gesteuerte LED aus ist. Bei LOW ist diese LED an.
Definiere "High" und "Low".
Inu0815 schrieb:> Wie kann ich nun erreichen, das LOW wirklich 0 und HIGH auch wirklich> 5Volt sind?
Wozu brauchst du das? Eigentlich willst du nicht 0V und 5V, sondern eine
leuchtende und eine dunkle LED. Oder nicht?
Karl Heinz Buchegger schrieb:> Gib halt dem Transistor nach dem Abschalten noch ein bischen Zeit.
Das geht nur, wenn er tatsächlich ein Problem mit Ghosting (das wäre
dann ein feines Stichwort für die Fehlersuche) hat. Die Beschreibung im
ersten Post hört sich für mich aber nach "immer und alle" an:
Inu0815 schrieb:>>> dass die einzelnen LEDs eine>>> jeweiligen Segments auch immer dann noch minimal mitleuchtenFalk Brunner schrieb:> Oweh, jetzt hast du ihn gescholten! ;-)
Augenscheinlich zuviel der Schelte, denn er meldet sich nicht mehr...
:-o
Mal abgesehen davon, dass du den BC560 total überlastest.
Der kann nur 100mA aber selbst ohne Multiplex fließen schon bei
7x20mA=140mA
Jetzt den Strom noch mal 6 wegen 6 fach Multiplex, gleich noch ne hohe
Pulsbelastung.
Guck dir mal den BF421 an.
1k Basiswiderstand isn bissel klein, der Transe ist daher schön in der
Sättigung und braucht länger zum Abschalten.
Mit den 10k gegen VCC bauste dir nen Spannungsteiler und damit ist der
Transe nimemr so stark gesättigt -> Ghosting weg
Hallo inu0815
Lass den Treibertransistor pro Digit ruhig fort u. mach die Digit-Ports
zu den gemeinsamen Anoden H-aktiv.
Die zusammengefassten Segmente jeweils über einen Widerst. zum L-aktiven
Segment-Port.
Siehe hier:
Beitrag "DCF / DCF77 UHR - LCD LED Samplingverfahren ATmega8 ASSEMBLER"
--> SCHALTPLAN_DCF77_LED_2012.pdf
fredl schrieb:> Lass den Treibertransistor pro Digit ruhig fort u. mach die Digit-Ports> zu den gemeinsamen Anoden H-aktiv.
Auf dass die Pintransistoren brennen, amen.
Hi,
so ich habe jetzt folgende Änderungen vorgenommen:
1.
Aus der Emitterschaltung habe ich eine Kollektorschaltung gemacht. Damit
war das Mitleuchten verschwunden.
2. Jetzt habe ich den Ratschag von Martin berücksichtigt und die
Transistoren ersetzt. (Hatte leider keinen BF421 - habe statt dessen
einen BC327-40) genommen. Die Folge war, dass die Leuchtstärke
zugenommen hat. Hier jedoch sehe ich nun wieder ein geringes Mitleuchten
der einzelner, eigentlich abgeschalteten LEDs.
Vergrößere ich nun den 1k-Widerstand an der Basis der Transistoren,
verschwindet zwar das Mitleuchten, jedoch wird auch die Leuchtstärke
insgesamt wieder geringer. Vor den einzelnen LEDs hängen
330-Ohm-Widerstände, da ich mir nicht sicher bin, ob die chinesischen
Anzeigen vom Typ JGD390407AY 10mA- oder 20mA-Versionen sind.
Viele Grüße
Wie wärs denn so langsam mal mit einen SCHALTPLAN mit BauteilNAMEN und
BauteilWERTEN statt dieser andauernden und elend ausufernden textuellen
Beschreibung?
Elektroniker kommunizieren nun mal in Schaltplänen und nicht mit
textuellen Netzlisten (oder beliebigen Abarten davon)... :-/
Ich hatte mal an nem PIC beobachtet, dass ich ihn beim peweemmen
(0..255) nicht auf 0 sondern nur auf 1 runterbekam. Das hat ausgereicht
um ein Glimmen deutlich wahrzunehmen. Schau doch mal mitm Oszi ob die
Ausgänge auch wirklich das machen was sie sollen.
Wie wenig Milliampere soll denn so eine Anzeige abbekommen, wie dunkel
darf es sein ?
Die meisten sind für 10mA gebaut, aber du schickst nur 3.3mA durch die
Segmente, falls deine BC327 das überhaupt schalten, denn die bekommen
nur 4mA Basisstrom für 140mA geschalteten Strom, also 1:35 statt den
normalerweise verwendeten 14mA.
Stimmt die Geschwindigkeit von 67 Hz?
Hatte auch öffters schon das Problem mit ULN´s als LED-Treiber...
Weis auch nicht genau woran es liegt. Bei mir hat nur immer
"runterschrauben"
Der Multiplexgeschwindigkeit geholfen...
Das Problem ist
1. Die Transistoren für die Anoden, das solltest Du erstmal korrigieren.
Hinweise gab es schon genügend.
2. Beim Multiplexen nimmt man nicht die üblichen Vorwiderstandswerte
wie im konstanten Betrieb, sonder wesentlich kleinere, damit
der Helligkeitsverlust, der durch das Multiplexen entsteht, ausgeglichen
wird. In Deinem Fall würde ich auf 1/3 oder etwas weniger gehen.
Steht oft in den Datenblättern drin, mit welchem Strom beim Multiplexen
gefahren werden darf und mit welcher Impulsdauer.
67 Hz sind m.E. ein bissel langsam.
Nachtrag zu meinem letzten Kommentar zu Punkt 2:
Der Strom sollte natürlich nicht die Ports vom AVR brennen lassen.
Hänge einen ULN2003 dazwischen, dann kannst Du die Widerstände
entsprechend
verkleinern.
@MaWin:
wieso kommst Du auf lediglich 3.3mA für ein Segment? Der PNP BC327-40
kann 800mA schalten. Sollte also reichen. Die Verstärkung ist hier mit
typ. 320 und mind. 170 bei 300mA im Datenblatt angegeben. Selbst nur 170
sollte reichen.
@Matze0001:
Die 67Hz sind auf eine einzelne 7-Segment-Anzeige bezogen. Das
Multiplexing ist über einen Timer/Interrupt gelöst. Der Timer steuert
alle 2,5ms (400 Hz) den Interrupt an.
Ich habe auch schon versucht von 67Hz auf ca. 50Hz runter zu schrauben.
Brachte aber keinen Erfolg.
@Unixer:
Wenn ich die Anoden wieder mit dem Emitter verbinde, ist daas
Mitleuchten noch viel stärker. Mit Vorwiderständen meinst Du sicher die
für die abcdefg-LEDs. also mit 160 Ohm ist die Anzeige mehr als hell.
Ein Datenblatt für diese JGD390407AY habe ich leider nicht. Im Internet
kann ich auch nichts finden.
Ich habe noch mal ein Bild mit angehangen, um den Effekt irgendwie zu
zeigen. Im übrigen ist das Mitleuchen von links nach rechts abnehmens,
wobei die letzten beiden Stellen nie mitleuchten. Dieser Effekt tritt
auch auf, wenn ich die beiden 4-stelligen 7-Segment-Anzeigen vertausche;
hat also nichts mit den Exemplaren selbst zu tun.
Inu0815 schrieb:> @MaWin:> wieso kommst Du auf lediglich 3.3mA für ein Segment?
Weil dein Vorwiderstand von 160Ohm bei einem Multiplex von 1:6 nun mal
Im Schnitt nicht mehr zulässt.
5-1.7 = 3.3V, die über dem Widerstand abfallen
3.3 / 160 = ca 20mA
gemultiplext: 20 / 6 -> 3mA
deine LED leuchten also so hell, als ob du den Strom auf ca. 3mA
einstellt hättest.
Ein wunderschönes Bild, und soooo groß ;-)
Es liegt nicht am Programm, sondern daran, dass die BC327 nicht
vollständig sperren. Erkennen läßt sich das an den linken Anzeigen, wo
die Segmente der 4 und der 7 mitleuchten.
Ein zusätzlicher Widerstand basis-emitter würde sie vollständig
ausschalten.
Ferner ist es nicht gut, den Basisstrom der BC327 zu hoch zu wählen.
1/100stel des Emitterstroms reichen völlig aus und verringern die
Sättigung und damit auch die Freiwerdezeit.
Abschließend muß auch noch ein Filterglas vor die Anzeige kommen, sonst
ist der Kontrast immer zu gering.
Okay, das scheint logisch.
Folgende Versuche habe ich jetzt gemacht:
1.
Emitter aller PNP-Transistoren wieder an PLUS gelegt. Kollektor ist
somit an den Anoden angeschlossen.
--> das Mitleuchten wird stärker
2.
Jetzt habe ich mal die Vorwiderstände in den einzelnen LEDs verringern
(47 Ohm).
--> Mitleuchten wird noch stärker und die Ziffernausgabe ist kaum noch
sinnvoll zu erkennen.
@Willi:
Ich habe festgestellt, dass ein zusätzlicher Widerstand zwischen Basis
und Emitter bzw. zwischen Basis und Kollektor diesen Erfolg hat (siehe
Threadbeginn). Was ist nun bei den PNPs sinnvoller?
Basis-Emitter-Widerstand oder Basis-Kollektor-Widerstand? Wie hoch
sollte ich den dimensionieren?
> wieso kommst Du auf lediglich 3.3mA für ein Segment?
Weil du 150 Ohm geschriebe hast, und ich rote/grüne 2.1V LEDs
vorausgesetzt ahbe. Bei blauen/weissen 3.6V LEDs wäre es natürlich noch
weniger
> Die Verstärkung ist hier mit typ. 320 und mind. 170 bei 300mA> im Datenblatt angegeben
EINE Verstärkung, nämlich hFE BEI Linearverstärkeranwendungen.
Im Schaltbetrieb gilt eine andere, im Diagramm Collector-emitter
saturation voltage VCEsat = f (IC) hFE = 10
P.S.: Auf dem Bild sieht man, daß die 4 und 7 korrekt dargestellt
werden, nur die 1 haben mitleuchtende Segmente, und zwar alle 4 auf die
gleiche Art (Segment a leuchtet mit, Segment d nicht). Damit ist ein
übersprechen wegen zu lansgamer Schaltzeit nicht die Ursache, sondern es
ist wohl ein Programmfehler.
Willi schrieb:> Ein wunderschönes Bild, und soooo groß ;-)>> Es liegt nicht am Programm,
Wenn seine Pins nicht auf Ausgang geschaltet sind, dann schon.
Sicher ist sicher.
Es kostet nichts, das Programm mal zu überprüfen.
Wär nicht das erste mal, dass sich ein Frager mit seiner 'Ich präsentier
immer nur Minimalausschnitte' selber ins Knie schiesst.
Inu0815 schrieb:> 1.> Emitter aller PNP-Transistoren wieder an PLUS gelegt. Kollektor ist> somit an den Anoden angeschlossen.> --> das Mitleuchten wird stärker
Das ist die richtige Beschaltung der BC327, bei der sie ihre nominelle
Stromverstärkung haben. Deine 1k würde ich auf 3k3 erhöhen und einen
Widerstand 1k zwischen Basis-Emitter vorsehen.
Du mußt dahin kommen, dass die BC327 als schnelle Schalter arbeiten, und
auch schnell ausschalten.
Dann betrachte die Anzeige hinter einer Filterglasscheibe. Nackt sehen
7-Segment-LEDs immer bescheiden aus.
Karl Heinz Buchegger schrieb:> Sicher ist sicher.> Es kostet nichts, das Programm mal zu überprüfen.> Wär nicht das erste mal, dass sich ein Frager mit seiner 'Ich präsentier> immer nur Minimalausschnitte' selber ins Knie schiesst.
Schon, aber solange grundlegende Defizite bei der Beschaltung von
Transistoren vorliegen, sollte erstmal die Hardware stehen, bevor am
Programm geschliffen wird.
Ein bißchen Geisterbild hat man immer, es sein den man würde die
Kapazität der einzelnen Segment gezielt entladen. Eine LED ist selbst
mit 1µs Impulsen als schwach leuchtend zu erkennen - spätestens, wenn
man schärfstens hinkuckt :-)
Inu0815 schrieb:> und hier ist noch der Schaltplan. Erbitte weitere Hilfe.
Der ist völlig falsch.
T1 .. T6 müssen npn sein (BC337).
Und R8 .. R13 müssen weg.
Peter
Moment mal.
Port C beim Mega8 ist der ADC Port.
WEnn du AVcc nicht angeschlossen hast, dann arbeitet der Port nicht
richtig!
Ja, auch dann wenn du den ADC gar nicht benutzt, musst du AVcc/AGND
versorgen.
Es werden IMMER alle Vcc/GND Pärchen angeschlossen. Immer. Und jedes
Pärchen kriegt 100nF als Blockkondensator!
@Karl Heinz Buchegger:
Das war der Fehler!!!
Jetzt läuft es wunderbar - so wie es soll!
Danke an alle für eure Anregungen, Hinweise und Meinungen.
Viele Grüße
Inu0815 schrieb:> @Karl Heinz Buchegger:>> Das war der Fehler!!!
Willi mit seinen Kapazitäten hat mich auf die Idee gebracht, das zu
checken.
Genau deshalb mag ich deine Schaltpläne nicht. Im Eagle sind auch die
Alternate-Functions an jedem Pin aufgeführt und da wärs schneller
aufgefallen.
Karl Heinz Buchegger schrieb:> Genau deshalb mag ich deine Schaltpläne nicht.
... der ja auch nicht eindeutig ist.
PC4 und PC5 werden über Vcc versorgt, sollten daher schon immer
funktionieren und A1 + A2 ansteuern, die ja ganz links gezeichnet sind.
Mit dem 'neuen Wissen' ist A1 wohl die Anzeige ganz rechts, bei der die
'7' ohne Restleuchten der '4' angezeigt wird.
Vermutlich lieferten PC0-PC3 wegen fehlender AVcc keinen allzu hohen
'1'-Pegel bzw. einen offenen Ausgang und ließen die BC327 immer leicht
eingeschaltet.
Steht auch so im DB:
PC4 can also be used as ADC input Channel 4. Note that ADC input channel
4 uses digital power.
• ADC3 – Port C, Bit 3
PC3 can also be used as ADC input Channel 3. Note that ADC input channel
3 uses analog power.
Wobei sowas ja bissel doof is, wenn man dann nen Pin C als IO nimmt und
ne LED steuert hat man ja wieder schön Ripple aufm AVcc...