Hallo alle zusammen, die Schaltung, wie ich sie vor geraumer Zeit unter Beitrag "Viel mehr Spaß mit einfachen LED - Teil 2" im Forum beschrieben hatte, läuft eigentlich recht gut. Beim Chinesen habe ich mir dazu paar Platinen machen lassen, weil Freunde auch so ein Ding haben wollten. Einen kleinen Schönheitsfehler hat die ganze Sache nun aber doch. Und dazu meine Frage an euch. Wenn ich sehr hellstrahlende LED verwende, sieht man im Dunklen gelegentlich auch eine ganz schwach leuchten, die laut Programm eigentlich aus sein sollte. Die Schaltung arbeitet komplett mit Multiplexing und PWM zur Helligkeitssteuerung. Das Einfügen einer kompletten Dunkeltastung aller LED nach jedem Leuchtimpuls, um ein eventuelles Übersprechen zu verhindern, bringt nichts. Die Platine sieht eigentlich auch sauber geätzt aus und Flussmittelreste sind alle entfernt. Eine LED habe ich probehalber mal in Serie mit einem 2,2 Megaohm Widerstand an ein LNG gehängt. Bereits bei 3,1 Volt (!) erscheint ein etwa gleichstarkes Leuchten an der LED. Habt ihr eine Idee, wie ich das unerwünschte Leuchten weg bekomme? Am naheliegendsten erscheint, einfach je einen SMD-Widerstand ca. 1 Megaohm parallel zu jedem LED-Paar auf die Platine zu löten. Wegen dem Charlieplexing (in meiner Schaltung treiben 9 Pins im tristate-mode individuell 60 LEDs), bei dem an jedem Pin mehrere LED-Paare hängen, würde das aber wohl die ganze Logik durcheinander bringen. Im Bild ist der Anschluss der LED am Controller symbolisch dargestellt. Der Leuchteffekt ist nur bei totaler Dunkelheit sichtbar und stört kaum. Trotzdem würde ich gern wissen, ob es für die gegebene Schaltung eine grundsätzliche Lösung gibt. Bei LED mit geringerer Strahlungsleistung tritt der Effekt übrigens garnicht auf. Beste Grüße Micha
Wenn Pin A und Pin B beide auf Low oder High liegen, kann die LED unmöglich leuchten. Möglicherweise liegt ein Softwarefehler vor.
wie ist PinA und PinB geschaltet wenn sie leuchtet?
Stefan U. schrieb: > Möglicherweise liegt ein Softwarefehler vor. LOW ist klar, aber vielleicht ist es auf HIGH durchaus möglich? Immerhin liegt eine Spannung an. Und sollte im Controller irgendwie eine Potenzialdifferenz an den Pins entstanden sein, dürfte eine leichtes glimmen erkennbar sein. So gut kenne ich mich aber mit der Materie aber nicht aus und daher ist es nur eine Vermutung!
Michael P. schrieb: > Eine LED habe ich probehalber mal in Serie mit einem 2,2 Megaohm > Widerstand an ein LNG gehängt. Bereits bei 3,1 Volt (!) erscheint ein > etwa gleichstarkes Leuchten an der LED. Warum soll eine LED bei 3.1V nicht leuchten? Die Flussspannung bei kleinen Strömen wird sicher unter den auf der Tüte angegebenen 3.2 .. 3.3V liegen. Was heißt "gleichstarkes Leuchten"? In Relation wozu?
Dass 1µA eine LED zum leuchten bringt, liegt einfach daran, dass 1mA bei Hochleistungs-LEDs ja schon grell ist und das Auge logarithmisch arbeitet. Wenn Du Charlieplexing betreibst, bitte ein konkretes, minimales Schaltbild poste und die Ansteuerlogik dazu. Dann kann man ggf. abschätzen, wo noch ein paar ns Totzeit hinzu kommen sollten. Wenn es aber nicht stört, oder Du eh keinen Oscar hast, dann schiebe es einfach auf Schaltzeiten (in mikrocode/Logic UND Ausgangstreiber des µC) und parasitäre Kapazitäten.
123 schrieb: > Immerhin liegt eine Spannung an. Und sollte im Controller irgendwie eine > Potenzialdifferenz an den Pins entstanden sein, dürfte eine leichtes > glimmen erkennbar sein. die leichten Potenzialdifferenz kommen aber nicht auf 3V!
Wolfgang schrieb: > Warum soll eine LED bei 3.1V nicht leuchten? Die Flussspannung bei > kleinen Strömen wird sicher unter den auf der Tüte angegebenen 3.2 .. > 3.3V liegen. Die LEDs werden auch deutlich unter 3V schon gut leuchten. Der TO wundert sich, dass sie das trotz 2.2MOhm@3.1V schon tun. (also vermutlich so etwa 0.2µA, Größenordnungsmäßig.)
Achim S. schrieb: > bitte ein konkretes, minimales > Schaltbild poste und die Ansteuerlogik dazu. Ich wollte mich nicht wiederholen und habe deshalb nur den Link zu den Details angegeben. Peter II schrieb: > wie ist PinA und PinB geschaltet wenn sie leuchtet (und nicht leuchtet > soll)? Die Wahrheitstabelle sieht folgendermaßen aus PinA PinB LEDA LEDB L L - - H H - - H L ON - L H - ON INP INP - - INP L - - INP H - - L INP - - H INP - - .... alle anderen Kombinationen : beide LED aus Die Software läuft mit weniger leuchtstarken LED tadellos! Beste Grüße Micha
Michael P. schrieb: > Die Schaltung arbeitet komplett mit Multiplexing und PWM zur > Helligkeitssteuerung. Das Einfügen einer kompletten Dunkeltastung aller > LED nach jedem Leuchtimpuls, um ein eventuelles Übersprechen zu > verhindern, bringt nichts. Hast Du beim Dunkeltasten alle Port-Pins RC[5:0] und RA[2:0] gleichzeitig auf LOW gelegt? Für wie lange? Per Scope überprüft? PS: Habe mir erlaubt, Deinen Schaltplan zum besseren Verständnis aus dem genannten Link einzufügen.
Michael P. schrieb: > Habt ihr eine Idee, wie ich das unerwünschte Leuchten weg bekomme? Ich hatte ganz früher bei einer Multiplexansteuerung einer vierstelligen LED-Anzeige mal den Fehler gemacht, dass ich die Anzeige eine Stelle weiter geschaltet habe und erst danach die Segmentdaten für die neue Stelle ausgegeben habe. Dieser kurze zeitliche Versatz von ein paar Dutzend µs hat gereicht, dass in der Dunkelheit immer die Segmente der vorherigen Stelle durchschimmerten. Die Lösung war simpel, vorm ändern der Stelle einfach die Segmentdaten dunkeltasten. Ich kenne das verwendete Charlieplexing nicht, könnte mir aber vorstellen, das dein Problem in die gleiche Richtung geht.
Eberhard H. schrieb: > Hast Du beim Dunkeltasten alle Port-Pins RC[5:0] und RA[2:0] > gleichzeitig auf LOW gelegt? Bei Charlieplexing ist ein Dunkeltasten aller LED prinzipiell nur möglich, indem alle steuernden Pins auf INPUT, also hochohmig, geschaltet werden. Bei mir in der Schaltung hängen 30 antiparallele LED-Paare an 9 Pins, also immer mehrere einseitig an einer einzelnen Leitung.
Michael P. schrieb: > Bei Charlieplexing ist ein Dunkeltasten aller LED prinzipiell nur > möglich, indem alle steuernden Pins auf INPUT, also hochohmig, > geschaltet werden. Es sollte ja nicht allzu schwierig sein, alle genannten Port-Pins zum Dunkeltasten gleichzeitig aktiv (= OUTPUT) auf LOW zu ziehen anstatt hierzu alle auf INPUT zu schalten. Oder was spricht dagegen?
Bei AVRs wäre es die Ursache, wenn ein Ausgang auf Eingang umgeschaltet wird, der vorher High war, dann ist der Pullup aktiv und liefert etwas Strom. Auch eine falsche Umschaltung, d.h erst auf Input und dann auf Low würde zumindest für kurze Zeit etwas Strom fließen lassen. Bei PICs gibt's den weak pullup, der aber offenbar bei den meisten PICs nur für ganze Ports gesetzt werden kann. Evtl. mal in die Richtung suchen, ob im Quellcode RBU gesetzt wird.
Der PIC hat doch zwei Ports zu je 6bits. (Port_A und Port_C) Selbst wenn man direkt beide nacheinander auf Eingang schaltet vergehen dazwischen doch mindestens 200ns (bei 20Mhz Takt). Das kann schon ausreichen das die immer kurz aufblitzen, welches als schwaches leuchten wahrgenommen wird. Wetten wenn du Port_A und Port_C andersrum hochohmig schaltest, leuchten andere LED schwach auf. Gruß Gerd
Michael P. schrieb: > Bei Charlieplexing ist ein Dunkeltasten aller LED prinzipiell nur > möglich, indem alle steuernden Pins auf INPUT, also hochohmig, > geschaltet werden. Ich vermute mal, dass die für das Charlieplexing benutzen Pins alles DIOs sind. Warum irgendeine LED leuchten können soll, wenn man nicht alle Pins auf INPUT sondern z.B. auf OUTPUT L oder H schaltet, ist mir nicht einleuchtend.
Ich wuerde als erstes Testen, ob das Leuchten getaktet ist. Dazu einfach die LES im Dunkeln schnell bewegen, dann sollte man das Takten sehen. Mit einer ueberschlaegigen Rechnung kann man dann noch die Frequenz und das Taktverhaeltnis schaetzen. gjhfhsf
MWS schrieb: > ist der Pullup aktiv und liefert etwas > Strom. Guter Hinweis. Aber alle Pullups sind komplett abgeschaltet. Eberhard H. schrieb: > Oder was spricht dagegen? Habe alle Varianten zum Dunkeltasten (alles H, alles L, alles INP) getestet. Ich habe auch die Länge der Austastung variiert. Bei zu langer Auszeit nimmt die Grundhelligkeit unweigerlich ab. Es hilft aber auch nicht. Ob mit oder ohne Dunkelpause, das leichte Aufleuchten passiert ja immer nur sporadisch auf, bei irgendwelchen Kombinationen von an anderer Stelle gleichzeitig leuchtenden LED.
Hallo Michael. Michael P. schrieb: > Einen kleinen Schönheitsfehler hat die ganze Sache nun aber doch. Und > dazu meine Frage an euch. Wenn ich sehr hellstrahlende LED verwende, > sieht man im Dunklen gelegentlich auch eine ganz schwach leuchten, die > laut Programm eigentlich aus sein sollte. Ich hatte mal ein ähnliches Problem mit Optokopplern. Das "ganz schwache Leuchten" war alledings in diesem Fall für die Funktion der Schaltung fatal. Die Schaltausgänge des Controllers bzw. die eines Treibers (ULN2803) liessen noch genug Strom durch, um einen Optokoppler zu schalten. Der Schaltausgang eines 555 hat aber gelegentlich auch dieses Problem. Meine Lösung war, vor den Optokoppler eine z-Diode (3,9V) zu schalten, deren Schwelle erst überwunden werden muss, um den Optokoppler anzusteuern. In einem anderen, ähnlich gelagerten Fall langte dafür sogar die Flussspannung einer 1N4148, die ich vor den Optokoppler geschaltet hatte. Dort war allerdings auch die treibende Spannung geringer. Leuchtdioden haben eine sehr flache Kennlinie. Die Kennlinie einer 1N4148 oder die einer Z-Diode in Sperrrichtung sinde deutlich steiler. Der Unterschied zwischen Deinem Fall und meinen Fällen: Bei mir handelte es sich um statische Signale, Du aber Multiplext. D.h. ein AUS bei mir bedeutete geringe Spannung und ein EIN hohe. Du schaltest immer mit voller Spannung, und ein EIN bedeutet lange an, und ein AUS (sehr) kurz an. Du könntest dazwischen einen Brückenschluss machen, indem Du über die Dioden (Kette) einen kleinen Kondensator legst. Zusammen mit dem Vorwiderstand hast Du dann einen mittelnden, glättenden Tiefpass. Das Problem ist die richtige Größe des Kondensators. Wenn er zu klein ist, wirkt er nicht, ist er zu groß, leuchtet die LED aus dem Kondensatorinhalt nach, was u.U. auch unerwünscht ist. Das Entladen des Kondensators würde ein Widerstand über den Kondensator beschleunigen. Ist er zu groß, geht die LED nicht mehr an, bzw. Du verbrauchst zuviel Strom. Kondensator und Vorwiderstand und Bleederwiderstand müssen also auf die Multiplexfrequenz, die Summenspannung der Diodenkette und Deinen benötigten Strom abgestimmt werden. Noch ein Unterschied zwischen Deiner und meiner Schaltung damals: Du hast eine möglicherweise blaue LED mit über 3V Vorwärtsspannung, und nur vermutlich knapp 3,3V Spannungsversorgung. Ich dagegen hatte 5V bzw. 12V Versorgungsspannung und die Optokoppler hatten eine Vorwärtspannung von 1,35V (CNY17) und somit hatte ich eine sehr komfortable Marge um damit zu schalten. Auf der anderen Seite war die Anoednung mit den nur 1,35V Flussspannung auch sehr empfindlich gegen Restströme. Du müsstest aber jetzt erst einmal Feststellen, was genau bei Dir den Effekt verursacht. Entweder Deine Ausgänge machen schon eine ausreichend hoche Spannungsdifferenz zum Leuchten, selbst wenn sie beide gleichzeitig High oder low sind, oder trotz eigentlich "AUS" Zustand treten aus welchen Gründen auch immer, noch ganz kurze Pulse auf, die LED leuchten lassen. Das könntest Du mit einem Oszilloskop überprüfen. Mit etwas Geschick könnte aber ein Multimeter langen, wenn Du mal einen Kondensator wie beschrieben einschaltest und die geglättete Spannung misst. In Falle der kurzen "Spannungspulse" sollte ein ausreichend großer leckarmer Kondensator auf jeden Fall irgendeine Wirkung zeigen. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.l02.de
:
Bearbeitet durch User
Bernd W. schrieb: > Ich hatte mal ein ähnliches Problem Wow. Danke, die ausführliche Antwort muß ich erstmal im Detail verarbeiten. Melde mich dann später wieder. Beste Grüße Micha
Michael P. schrieb: > Ob mit oder ohne Dunkelpause, das leichte Aufleuchten passiert ja immer > nur sporadisch auf, bei irgendwelchen Kombinationen von an anderer > Stelle gleichzeitig leuchtenden LED. Das nenn ich mal nen Hinweis! Port_A und Port_C kann man ja nicht gleichzeitig abschalten, ein Befehlszyklus vergeht da dazwischen mindestens. Wenn genau dazwischen noch ein Interrupt auftritt dauert das eben genau da mal länger, passt dann exakt zum Fehlerbild. Gruß Gerd
Michael P. schrieb: > Ob mit oder ohne Dunkelpause, das leichte Aufleuchten passiert ja immer > nur sporadisch auf, bei irgendwelchen Kombinationen von an anderer > Stelle gleichzeitig leuchtenden LED. Dann würde ich erst einmal untersuchen, ob es ein dynamisches Problem ist (sprich beim Umschalten der einzelnen Zustände) oder ein statisches (unsicherer 3. Zustand während die Port-Pins der betroffenen LED-Anschlüsse als Eingang geschaltet sind). Letzteres könntest du herausfinden, indem du die Blink-Orgie um mindestens den Faktor 10 langsamer machst. Dann dauert das Warten auf den Störenfried halt auch entsprechend länger - aber auch der unerwünschte Zustand. Oder eben ein Scope nehmen (keinesfalls einen Logic-Analyzer). Falls es tatsächlich ein Problem mit dem 3. Zustand ist (der beim Charlieplexen keine unwesentliche Rolle spielt), kann ich dir weitere Tipps geben, wie man dies möglicherweise in den Griff bekommt. Auf jeden Fall würde ich der ganzen Schaltung einen größeren Puffer-Kondensator spendieren. Nur 100nF sind bei deiner Applikation auf jeden Fall viel zu wenig.
:
Bearbeitet durch User
Hmm... hab mal den Schaltplan ein wenig ausgedünnt und frage mich, was da alles leuchtet. (Und was passiert wenn nicht die LEDs den Vorwiderstand bekommen sondern die Portpins)
Ich schätze, dass Widerstände pro Port-Pin (anstatt pro LED) effektiv zur Parallelschaltung von LED's führt, mit den damit verbundenen Nachteilen.
yesitsme schrieb: > Was sind die Nachteile dieser Schaltung? Unterschiedliche Teilspannungen und damit unterschiedliche Teilströme. Wenn man nach Charlieplexing googelt findet man das Problem da auch erwähnt. http://www.elektronik-labor.de/AVR/Charlieplexing.html Wenn man einen Ausgang hochohmig schaltet, sucht sich der Strom eben einen anderen Weg auch wenn der über eine andere LED geht. Vermutlich bekommt man das nur über ein Hystertese in den Griff.
Hallo, bin nun auch wieder mit an Bord. Danke für die vielen wertvollen Hinweise. Ich muss mich da jetzt erstmal reinlesen. Einen Oszi oder LA habe ich leider nicht. GeGe schrieb: > Das nenn ich mal nen Hinweis! > Port_A und Port_C kann man ja nicht gleichzeitig abschalten, ein > Befehlszyklus vergeht da dazwischen mindestens. Wenn genau dazwischen > noch ein Interrupt auftritt dauert das eben genau da mal länger, passt > dann exakt zum Fehlerbild. Völlig korrekt, komisch ist eben nur, dass bei weniger starken LED alles problemlos läuft, mit identischer Software. Vielleicht liegt es ja auch daran, dass das Charlieplexing hier noch massiv von einer PWM überlagert wird. Ich glaube, der Controller kommt dabei ganz schön ins Schwitzen... Im komplett statischen Betrieb tritt das Leuchten nicht auf. Es gibt auch viele schnelle Lichtmuster, wo keinerlei Flimmern erkennbar ist. Ich werde noch mal ein kurzes Video dazu reinstellen, wo der Effekt zu sehen ist. Beste Grüße Micha
Eberhard H. schrieb: > kann ich dir weitere > Tipps geben, wie man dies möglicherweise in den Griff bekommt. Dieses Angebot nehme ich hiermit gerne an! Werde nun auch mal in der Bucht nach einem brauchbaren LA Ausschau halten. Der hilft bei solchen Problemen bestimmt weiter. Beste Grüße Micha
Michael P. schrieb: > Eberhard H. schrieb: >> kann ich dir weitere >> Tipps geben, wie man dies möglicherweise in den Griff bekommt. > > Dieses Angebot nehme ich hiermit gerne an! > Werde nun auch mal in der Bucht nach einem brauchbaren LA Ausschau > halten. Der hilft bei solchen Problemen bestimmt weiter. > > Beste Grüße > > Micha Du willst das Angebot annehmen und im gleichen Atemzug machst du das, was er ausdrücklich ausgeschlossen hat? Eberhard H. schrieb: > Oder eben ein Scope nehmen (keinesfalls einen Logic-Analyzer). Lies nochmal in Ruhe alles durch, ja?
Michael P. schrieb: > Der hilft bei solchen Problemen bestimmt weiter. Nicht unbedingt, weil das wohl eher ein Analogproblem ist.
Hallo alle zusammen, Huh schrieb: > Du willst das Angebot annehmen und im gleichen Atemzug machst du das, > was er ausdrücklich ausgeschlossen hat? Wieso denn gleich so aufgeregt, es ist doch noch garnicht klar, woran es liegt. Was spricht gegen so einen LA? Soll ich mir gleich ein 9-Kanal-Scope ;-)) wegen dem Problem in meiner Schaltung zulegen? Einen Clip, in dem man das Flimmern gut sehen kann habe ich mal hochgeladen. https://youtu.be/6CkWI8bSllk Die Leucht-Muster sind wie immer automatisch generiert. Ich habe paar davon (wegen Zeitmangel wahllos) in Kurzfassung zusammengeschnitten. Wenn man das Video in starker Zeitlupe abspielt, kann man das Leuchten besser erkennen. Die Schaltung steckt hier mit angesetzten Lichtleitern in einer 30cm-Reflektorschale aus V2A und dient sozusagen als Uhrwerk. Beste Grüße Micha
Eberhard H. schrieb: > Auf jeden Fall würde ich der ganzen Schaltung einen größeren > Puffer-Kondensator spendieren. Nur 100nF sind bei deiner Applikation auf > jeden Fall viel zu wenig. Das könnte eine heiße Spur sein. Ich verwende normalerweise 100 nF-Kondensatoren wie im Bild gezeigt. Die Toleranzangaben ergeben da eine Streuung zw. 80 und 180 nF. Mit dem AVR-Transistortester (natürlich der von K.-H., nach Vorgabe kalibriert) habe ich gerade mal nachgemessen. Es werden bei allen Proben nur Werte zw. 68 und 75 nF angezeigt. Kann das eigentlich sein? Mein DMM kann leider solche kleinen Werte nicht korrekt messen. Auf jeden Fall werde ich es jetzt mal mit größeren C-Werten versuchen und dann berichten. Beste Grüße Micha
Michael P. schrieb: > Was spricht gegen so einen LA? Bei einem LA kannst du NICHT sehen, wie hoch der Pegel der Leitungen ist. Er hat lediglich eine Schwelle, ab der er "high" anzeigt. Auch wenn die Schwelle nur knapp überschritten ist. Und darunter zeigt er "low" an, auch wenn die Schwelle nur knapp unterschritten ist. Und da wir hier den Fall haben, daß wir beurteilen möchten, wie hoch die Spannung an den einzelnen Pins ist, ist hier ein LA völlig fehl am Platz. OK? :-)
Michael P. schrieb: > > > Youtube-Video "for upload" > [OT] Coole Musikwahl und tolles Video ... Danke.
Erster Hinweis: Leuchtdioden haben eine, wenn auch minimale Kapazität, die dann am größten ist, wenn die Spannung gerade unter die Flusspannung der Led fällt, die Led also gerade aus geht (doof für diesen Anwendungsfall):
1 | ---o- C |
2 | | | |
3 | V V |
4 | - - |
5 | | | |
6 | | - A |
7 | ----- B |
Nehmen wir folgende Sequenz an: 1) Erste Led soll leuchten -> A ist INP, B ist Low, C ist high 2) Eine andere Led, hier nicht abgebildet, soll leuchten -> A ist Low, B ist High, C ist INP Wenn das umschalten von 1) nach 2) so passiert, das C auf Input geschaltet wird und dann A auf Low, B auf High dann wird die in der Kapazität der ersten Diode gespeicherte Energie über die zweite Diode entladen, was einen kurzen Lichtblitz ergibt, obwohl diese gar nicht leuchten soll. Man muss also bevor, man auf die nächste Led wechselt alle Ausgänge in den selben Zustand bringen (am besten High wegen der internen Pullups) um die Parasitären Kapazitäten zu entladen. Erst danach sollte man Pins auf Eingänge umschalten. Das Entladen braucht übrigens Zeit, rechne mal mit 500 pF Kapazität der Leuchtdiode. Ich würde sagen so 0.5-1µs Entladezeit müsste man da rechnen, mit den Vorwiderständen die Du benutzt. Werden beim Globalen senken der An-Tastzeit also der Helligkeit auch die falschen Leds dunkler? Wenn ja, dann spricht das aber gegen diese Theorie :-) 2. Hinweis: Hast Du mal probiert ob zwei in Reihe geschaltete LEDs eventuell leicht glimmen? Ich finde auch, das 100nF zu wenig sind. Bei der Schalterei würde ich da eher zweistellige µF auf der Spannungsversorgungsseite sehen. Das Teil ansich ist ja recht witzig, genau das richtige für die vielen Leds in meinem Schrank... Zeig doch mal deinen Quellcode für die Matrixsteuerung. Eventuell fehlt da auch noch was?
:
Bearbeitet durch User
Hallo alle zusammen, nun ist wieder mal Zeit für das Thema. Erst einmal Danke allen für die zahlreichen Hinweise und Tips. Eberhard H. schrieb: > Es sollte ja nicht allzu schwierig sein, alle genannten Port-Pins zum > Dunkeltasten gleichzeitig aktiv (= OUTPUT) auf LOW zu ziehen anstatt > hierzu alle auf INPUT zu schalten. > > Oder was spricht dagegen? Bei Charlieplexing und knappen Ressourcen ist es kaum umsetzbar. Es zählt jeder Takt. Und es ist in einer zeitkritischen Schleife ein riesengroßer Unterschied, ob ich zum Dunkeltasten aller LED nur (TRISA->EINGANG,TRISC->EINGANG) realisieren muss, oder jedesmal (PORTA->LOW,TRISA->AUSGANG,PORTC->LOW,TRISC->AUSGANG) ausführe. Eberhard H. schrieb: > Nur 100nF sind bei deiner Applikation auf > jeden Fall viel zu wenig. Ich glaube das täuscht etwas. Richtig ist, das intern pausenlos alle 4 Register (TRISA,TRISC,PORTA,PORTC) umgeladen werden. Da bei dem Multiplexing hier aber jeweils maximal nur eine LED gleichzeitig ON sein kann, ergibt sich bei angenommenen 1,7V über dem 220 Ohm Widerstand an der leitenden LED nur knapp 8mA externe Strombelastung für den Controller. Dazu kommen noch die vielen stromarmen Dunkelphasen wegen der PWM-Steuerung. Verbrauchsmessungen an der Stromversorgung bestätigen das auch. Ich finde deshalb, das es hier von der Strombelastung der Schaltung her keine erhöhten Anforderungen gibt. Andreas M. schrieb: > Erster Hinweis: Leuchtdioden haben eine, wenn auch minimale Kapazität, > die dann am größten ist, wenn die Spannung gerade unter die Flusspannung > der Led fällt, die Led also gerade aus geht (doof für diesen > Anwendungsfall) Ein interessanter Ansatz. Ich habe vorhin mit dem AVR-T-Tester mal paar neue und ältere weisse 5mm LED gemessen. Mit folgendem Ergebnis: LED Uf C@0V C@5V (V) (pF) (pF) =========================== 2014_1 2.88 13 9.8 2014_2 2.84 12 8.3 2014_3 2.87 12 8.2 2016_1 2.76 50 46 2016_2 2.76 48 44 2016_3 2.74 50 46 Demnach müssten die neuen (helleren LED) auch bei Uf eine ca. 4 mal höhere Kapazität haben. Das könnte tatsächlich ein Grund für das Aufleuchten beim Umschalten sein. Kennt jemand von euch da eine Abhilfe? Andreas M. schrieb: > Zeig doch mal deinen Quellcode für die Matrixsteuerung. Wie das ganze Platinen-Layout ist auch die Software völlig handgehäkelt. Alles in ASM für den PIC und ohne irgendwelche eingebundenen Libs. EEPROM und ProgramFlash vom Controller sind mittlerweile randvoll und jedes Bit im RAM wird zur Ereignissteuerung der state machine genutzt. Bringt das da eigentlich Sinn, davon tausende Zeilen Sourcecode hier einzustellen? Beste Grüße Micha
Hallo alle zusammen, ich habe wie bereits angeregt mal die Kapazitäten für die Spannungsversorgung erhöht. Auf die Platine aus dem Video habe ich testweise "huckepack" jeweils einen baugleichen C mit 100nF parallel zum bereits vorhandenen angelötet, so wie im beigefügten Schaltplan. Das Ergebnis ist völlig unerwartet. Die Lichtblitze sind nun viel häufiger und deutlich stärker zu sehen!!! Wie kann das sein? Ist eventuell das Regelverhalten vom 78L05 Schuld? Ich werde interessehalber noch mal den umgekehrten Weg gehen und es mit 2x100nF in Serie, also bei halber Kapazität versuchen. Dazu muss ich jedoch erst die Platine freilegen und die Lichtleiter entfernen. Das dauert nur etwas... Beste Grüße Micha
Michael P. schrieb: > Ist > eventuell das Regelverhalten vom 78L05 Schuld? Das kann schon sein. Kannst Du den probehalber mal gegen einen "richtigen" 7805 mit TO220-Gehäuse tauschen? Ich habe mir mit so einem kleinen 78L05 mal eine große Fehlerquelle in ein Thermometer eingebaut. MfG Paul
Bei PWM hatte ich auch mal das Problem, dass eine LED nicht absolut dunkel war. Selbst bei PWM 0 nicht. Beim AVR kamen da immer noch Nadelspitzen. Ich mußte da das PWM deaktivieren, dann war Ruhe bzw. finster.
Habt ihr schonmal darüber nachgedacht den minimalen Strom, der die Leuchtdioden davon überzeugt zu leuchten, eben ganau an diesen vorbei zu leiten? Ich nehme in solchen Fällen einen geeigneten Widerstand parallel zur LED und das Problem ist gelöst.
> Ich nehme in solchen Fällen einen geeigneten Widerstand parallel zur > LED und das Problem ist gelöst. Das wird beim Charlieplexing wohl nicht ohne Seiteneffekte machbar sein. Es sei denn, du spendierst jeder LED eine weitere Diode + Widerstand. Diese Menge an Bauteilen führt allerdings das Charlieplexind ad absurdum.
michael_ schrieb: > Selbst bei PWM 0 nicht. Beim AVR kamen da immer noch Nadelspitzen. Da war die PWM also auch nicht 0. Du hast ja selbst gesagt, daß noch Spitzen kamen. Der Wert war vielleicht 0, aber die eigentliche PWM nicht. Hängt vom Modus ab.
Stefan U. schrieb: >> Ich nehme in solchen Fällen einen geeigneten Widerstand parallel zur >> LED und das Problem ist gelöst. > > Das wird beim Charlieplexing wohl nicht ohne Seiteneffekte machbar sein. > Es sei denn, du spendierst jeder LED eine weitere Diode + Widerstand. > Diese Menge an Bauteilen führt allerdings das Charlieplexind ad > absurdum. Evtl. bringt es was, wenn man jeden Port über zwei Widerstände definiert auf halbe Versorgungsspannung zieht. Damit bleiben hochomig geschaltete Ausgänge nicht auf VCC- oder GND-Level und beim nächsten Einschalten des Ports ist der Spannungshub geringer (wg. Umladen der parasitären Kapazitäten!). Sonst kann es auch sein, daß ausgeschaltete Augänge über die parasitären Kapazitäten über VCC bzw. GND-Potenzial getrieben werden und Strom durch die internen Schutzdioden fließt. Michael P. schrieb: > Ich werde interessehalber noch mal den umgekehrten Weg gehen und es mit > 2x100nF in Serie, also bei halber Kapazität versuchen. Dazu muss ich > jedoch erst die Platine freilegen und die Lichtleiter entfernen. Das > dauert nur etwas... Daß das Ergebnis überhaupt von den Kapazitäten in der Spannungsversorgung beeinflusst wird, zeigt, daß die Spannungsversorgung mangelhaft designt ist. Die (zu kleinen) Kapazitäten hier noch zu halbieren, selbst rein zu Testzwecken, ist planloses Herumdoktoren an Symptomen und hat mit der Suche nach der Ursache und Lösung des Problems nichts zu tun.
Was für ein Aufriss, nur um ein paar µC Pins durch Charlieplexing zu sparen MfG Klaus
Hallo alle zusammen, Paul B. schrieb: > Kannst Du den probehalber mal gegen einen > "richtigen" 7805 mit TO220-Gehäuse tauschen? Guter Tip. Danke. Werde ich schnellstmöglich mal ausprobieren. Stefan U. schrieb: >> Ich nehme in solchen Fällen einen geeigneten Widerstand parallel zur >> LED und das Problem ist gelöst. > > Das wird beim Charlieplexing wohl nicht ohne Seiteneffekte machbar sein. Kann ich nur zustimmen. Eine Skizze zur Begründung habe ich mal beigefügt. Das Tauschen der Kondensatoren bringt übrigens nichts. Ich habe es mit Werten von 0 - 1uF stufenweise getestet. Thomas E. schrieb: > zeigt, daß die Spannungsversorgung > mangelhaft designt ist. Deine Begründung bitte. Ich hatte am Controller bisher noch kein einziges Reset wegen Brown Out-Detect. (Sonst würde die Uhrzeit nicht mehr stimmen) Das Programm läuft wochenlang ohne Unterbrechung. Also kann es die Stromversorgung im Grunde nicht sein (Zur Info noch: die Schaltung hängt immer an neuen 12V/8,2Ah Bleigel-Akkus, also an einer relativ niederohmigen Quelle. Akkus nur wegen der Pufferung für die Uhr) Klaus schrieb: > Was für ein Aufriss, nur um ein paar µC Pins durch Charlieplexing zu > sparen 60 LED an 16 Pins in einer 10x6-Matrix auf einem 32Bit-MC laufen lassen? Worin liegt da noch der Reiz? Soviel zum Stand der Dinge. Bin also weiterhin auf Fehlersuche. Könnte es eigentlich auch am Platinen-Design liegen (z.B. fehlende Masseflächen), was meint ihr? Ein aktuelles Muster ist im Bild zu sehen. Beste Grüße Micha
asdf schrieb: > Da war die PWM also auch nicht 0. > Du hast ja selbst gesagt, daß noch Spitzen kamen. > Der Wert war vielleicht 0, aber die eigentliche PWM nicht. Hängt vom > Modus ab. Es war AVR Hardware PWM.
michael_ schrieb: > asdf schrieb: >> Da war die PWM also auch nicht 0. >> Du hast ja selbst gesagt, daß noch Spitzen kamen. >> Der Wert war vielleicht 0, aber die eigentliche PWM nicht. Hängt vom >> Modus ab. > > Es war AVR Hardware PWM. Es stimmt schon, daß es am Modus liegt. Die Spikes treten bei "fast pwm" auf. Zitat:
1 | The extreme values for the OCR0A Register represents special cases |
2 | when generating a PWM waveform output in the fast PWM mode. |
3 | If the OCR0A is set equal to BOTTOM, the output will be |
4 | a narrow spike for each MAX+1 timer clock cycle. Setting the OCR0A |
5 | equal to MAX will result in a constantly high or low output |
6 | (depending on the polarity of the output set by the COM0A1:0 bits.) |
Bei "phase correct" ist das nicht der Fall. Zitat:
1 | The extreme values for the OCR0A Register represent special cases |
2 | when generating a PWM waveform output in the phase correct PWM mode. |
3 | If the OCR0A is set equal to BOTTOM, the output will be continuously |
4 | low and if set equal to MAX the output will be continuously high |
5 | for non-inverted PWM mode. |
Michael P. schrieb: > Kann ich nur zustimmen. Eine Skizze zur Begründung habe ich mal > beigefügt. Du unterschlägst die Verbindung von Pin A zu Pin C. Versuch mal den Strom über die Verbindung A-C-B zu berechnen.
Michael P. schrieb: >> zeigt, daß die Spannungsversorgung >> mangelhaft designt ist. > > Deine Begründung bitte. Wenn das Verändern der Kondensatoren an der Versorgungsspannung eine sichtbare Veränderung bei den LEDs ergibt (das hattest Du ja selbst festgestellt), ist da irgendwas faul - ganz einfach, weil sich bei einer sauberen Versorgungsspannung da eben keine Veränderungen ergeben dürfen! Wie Deine 5V DC tatsächlich aussehen, kann ich aus der Ferne natürlich nicht beurteilen. Daß kein ungewollter Reset auftritt, bedeutet ja nur, daß die Spannung nicht unter die Brown-Out Schwelle sinkt, aber die liegt sicher auch reichlich unter 5V. Ein denkbarer Effekt wäre z.B., daß durch kurzes Überschwingen der Versorgungsspannung auf 6V die in Serie geschalteten LEDs (2x3V) schwach mitleuchten könnten. Im Übrigen würde ich einfach mal tippen, daß der Betrieb mit reduzierter Versorgungsspannung (4..4,5V statt 5V) das Problem schon lösen könnte. Ggf, die Widerstände anpassen, um auf gleiche Helligkeit zu kommen.
:
Bearbeitet durch User
Hallo alle zusammen, Thomas E. schrieb: > Im Übrigen würde ich einfach mal tippen, daß der Betrieb mit reduzierter > Versorgungsspannung (4..4,5V statt 5V) das Problem schon lösen könnte. Eine Frage: Um es mal mit mit reduzierter Spannung zu testen, würde die Regelung noch funktionieren, wenn ich zwischen den Ausgang vom 78L05 und dem Controller einfach eine Si-Diode einfüge, über der dann etwa 0,6V abfallen? Und: welche Cs am Regler empfielst du mir? yesitsme schrieb: > Du unterschlägst die Verbindung von Pin A zu Pin C. So einfach ist die Lage nicht. Die Skizze kann das Problem nur generell beschreiben. Ob im konkreten Fall auch eine Verbindung zwischen PinA und PinC besteht und somit die Spannung am PinC von einem weiteren LED-Parallelwiderstand beeinflusst würde, ist abhängig von der Anwendung insgesamt. Bei mir treiben 9 Pins die LED-Struktur. Das ergäbe maximal 72 mögliche Einzel-LED zum individuellen Ansteuern. Da ich aber nur 60 LED brauche, sind insgesamt 6 Verbindungen zwischen Pins offen, wären dann an dieser Stelle also keine LED-Paare mit einem Parallel-R vorhanden. Das bedeutet, je nach anzusteuernder LED würde ein auf INPUT gesetztes Pin manchmal über 2 Widerstände auf ca. Vdd/2 gezogen, manchmal nur einseitig per R gegen Vdd oder Vss. Und das würde bei diesem Multiplexing wiederum andere LED ungewollt mit Strom versorgen. (Nur Widerstände ohne LEDs als Brücke für die 6 offenen Pin-Verbindungen könnte eventuell gehen - ist aber auch nicht gerade eine tolle Lösung). Beste Grüße Micha
Servus Micha, Michael P. schrieb: > Eine Frage: Um es mal mit mit reduzierter Spannung zu testen, würde die > Regelung noch funktionieren, wenn ich zwischen den Ausgang vom 78L05 und > dem Controller einfach eine Si-Diode einfüge, über der dann etwa 0,6V > abfallen? ja. Michael P. schrieb: > welche Cs am Regler empfielst du mir? TI empfielt im Datenblatt des 78L05 einen 0,33 µF Kondensator am Eingang und 0,01µF am Ausgang. Soweit ich verstanden habe, wird beides im Text als "minimum"-Werte angegeben. Ich würde am Ausgang des 78L05 einen 100nF (Keramik) einbauen und am Eingang 0,47µF oder 1µF keramisch. Evtl. auch 100nF keramisch am Eingang und Elko (10..100µF) parallel. Unabhängig vom C am Spannungsregler gehört noch ein 100nF Keramik-Kondensator direkt an die Versorgungsspannungs-Pins am PIC.
Hallo alle zusammen, Thomas E. schrieb: > würde ich einfach mal tippen, daß der Betrieb mit reduzierter > Versorgungsspannung (4..4,5V statt 5V) das Problem schon lösen könnte. Volltreffer! Mit einer auf 4,3V reduzierten Spannung für den PIC ist alles unerwünschte Flackern (zumindest bei weissen LED) jetzt komplett erschwunden. Das war mir schon sehr wichtig und ich bin nun total zufrieden mit dem Ergebnis. Falls Interesse besteht, schicke ich Dir als kleines Dankeschön für deinen Tipp gerne eine "flimmerfreie" Version der Platine (s.Bild) zu, sobald ich die Platinen mit dem neuen Layout aus China habe. Nochmals allen vielen Dank für die interessanten Beiträge zu meinem Problem. Beste Grüße Micha
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.