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?
@ Lothar Miller (lkmiller) (Moderator) Benutzerseite >Inu0815 schrieb: >> geschalten >Bist du aus Österreich? Oweh, jetzt hast du ihn gescholten! ;-)
Gib halt dem Transistor nach dem Abschalten noch ein bischen Zeit. Leg die Berechnung des nächsten Index zwischen Ausschalten und Einschalten.
1 | ISR (TIMER0_OVF_vect) |
2 | {
|
3 | PORT_DIGIT = 0xff; // Port ausschalten |
4 | |
5 | TCNT0 = 256-39; // 16 Mhz:Vorteiler(1024):39 = 400Hz |
6 | positionMultiplex++; |
7 | if (positionMultiplex == 6) |
8 | {
|
9 | positionMultiplex=0; |
10 | }
|
11 | |
12 | PORT_SEGMENT = bcd_7_ca[zeitanzeige[positionMultiplex]]; |
13 | PORT_DIGIT = digit[positionMultiplex]; |
14 | }
|
Probier mal, ob das schon reicht.
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 mitleuchten Falk 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
Port nicht als Ausgang konfiguriert und nur über die Pull-Ups "oben"?
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.
Hallo, und hier ist noch der Schaltplan. Erbitte weitere Hilfe.
Ist als Kollektorschaltung gedacht. Wenn ich Emitter und Kollektor tausche (Emitterschaltung), so wird das Mitleuchten schlimmer.
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 :-)
Willi schrieb:
.. es sein denn, man würde die Kapazität der einzelnen Segment gezielt
entladen.
Soviel Zeit muß sein!
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...
Welchen Grund gibt es, sich die Arbeit zu machen ein Foto nach png zu konvertieren?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.