Hi Leute !!!
Ich habe mir vor längerer Zeit aus einem 2 Meter 60 x RGB-LED-Strip
(WS2812B) eine Hintergrundbeleuchtung für meinen TV gebaut.
> LED-Aufteilung: 20 links und rechts, 2 x 10 oben> Gesamtlänge inkl. Verbindungsleitungen: 2,60 m> Leuchtfarbe: 255:255:230> Netzteil: 5 V, 4 A
Angesteuert wird die Kette von einem ATTiny85, der in Abhängigkeit von
der Umgebungshelligkeit die Beleuchtung an- u. ausschaltet.
So, das Ganze hat ca. ein Jahr lang wunderbar funktioniert. Seit einiger
Zeit jedoch gibt's damit nur noch Probleme, die sich folgendermaßen
äußern:
Ich schalte den TV ein. Wenn dann irgendwann die Umgebungshelligkeit
unter die Schaltschwelle fällt, etwa wenn ich die Jalousie runterlasse,
um einen Film zu schauen, sendet der µC den Einschaltbefehl, und alle 60
LEDs leuchten. So weit, so gut. ABER nachdem es dann im Zimmer wieder
heller ist (Jalousie wieder oben), und der µC den Ausschaltbefehl
gesendet hat, bleiben neuerdings IMMER einige (immer wieder
unterschiedliche) LEDs an.
Um der Sache etwas auf den Grund zu gehen, habe ich dann einfach mal
eine 3-Sekunden-An-Aus-Schleife vom µC ausführen lassen: alle LEDs an ->
3 s -> alle LEDs aus -> 3 s ... . Ca. 60 Sekunden lang nach dem
Einschalten funktioniert das Ganze problemlos. Danach leuchten auch hier
einige LEDs nach dem Ausschaltbefehl einfach weiter, und zwar zunächst
auch immer verschiedene. Nach weiteren zwei drei Minuten dann pendelt
sich das Ganze meist auf die letzten 13 LEDs ein, die an bleiben.
Manchmal ist es aber beispielsweise auch nur jede zweite LED innerhalb
der letzten 13. Und ganz selten kommt es auch vor, daß mal eine LED in
einer falschen Farbe leuchtet. Erst wenn ich die Stromversorgung
unterbreche, also den Strip ausschalte, dann ein paar Minuten warte
(!!!), und anschließend wieder einschalte, geht das Spiel von vorne los.
Und genau so verhält es sich leider auch im täglichen Gebrauch der
ursprünglichen Programmierung.
Der einzige, wenn auch nicht sehr elegante Workaround, der mir jetzt
dazu einfällt, wäre, die Schaltung dahingehend zu erweitern, daß der µC
nicht nur die eigentlichen Schaltbefehle sendet, sondern auch per
Transistor die Spannung des Strips schaltet. Auf diese Weise könnte ich
nach jedem Ausschaltbefehl den gesamten Strip einfach ausschalten. Aber
wie gesagt, gefällt mir das als "Lösung" nicht wirklich. Ich wüßte schon
gern, wieso das Ganze jetzt nach über einem Jahr plötzlich nicht mehr
funktioniert. Könnte es sich evtl. rächen, daß ich damals auf den Einbau
des empfohlenen Widerstands (30 Ohm - 300 Ohm) in die Steuer- bzw.
Datenleitung verzichtet habe, genauso wie auf Schottkys von DI nach VCC
und GND nach DI? Ich habe lediglich einen Abblockkondensator (47 µF) für
eventuelle Einschaltspitzen verbaut.
Grüße,
The SphereX
Klingt nach Temperaturproblem, weil es erst nach einiger Zeit auftritt.
Teste mal, ob Kältespray auf den Tiny das Problem vorübergehend
beseitigt.
Würde ja auch gut zum Sommer passen ...
Ansonsten bin ich auch der Meinung von Arduino F.:
> Temperaturdrift des Taktes.(die kann man kompensieren)
Viele Grüße, Stefan
@ Arduino Fanboy
Der Kerko ist natürlich sowieso Pflicht, also auch hier
selbstverständlich mit verbaut ;-). Der Tiny läuft mit 8 MHz.
@ Stefan K.
Werde ich mal prüfen. Wobei letzten Sommer hat's ja auch noch
einwandfrei funktioniert ....
Grüße,
The SphereX
Ist dein Netzteil stabil? Ich halte das weder für einen Drift des Taktes
noch für ein Temperaturproblem.
Ich glaube es liegt (wie so häufig) an der Versorgungsspannung.
Na zumindest ist das Netzteil schon mal so stabil, daß auch nach
stundenlanger Vollbeleuchtung (alle 60 LEDs an) absolut nichts flimmert
oder dergleichen.
Grüße,
The SphereX
The SphereX schrieb:> Na zumindest ist das Netzteil schon mal so stabil, daß auch nach> stundenlanger Vollbeleuchtung (alle 60 LEDs an) absolut nichts flimmert> oder dergleichen.
Spannender ist was Dein Netzteil bei Lastwechseln macht. D.h. ob beim
Einschalten der Vollbeleuchtung die Spannung kurzzeitig einbricht und
der Controller zwei Assemblerbefehle überspringt, oder beim Ausschalten
der Flyback-Transient irgendwelche Bits kippen lässt, so dass die
Beleuchtung gleich wieder angeht.
Klemm Dein Oszi an die Stellen, wo die Module bzw der Controller ihre
Spannung abnehmen. Und die Masse direkt daneben, nicht 10 cm entfernt
anschließen!
Da ich kein Oszi zum Durchmessen besitze und irgendwie auch das Netzteil
in Verdacht hatte, habe ich mir kurzerhand einfach ein zweites gekauft.
Und obwohl 4 A für die 60 LEDs ja eigentlich ausreichen, habe ich
diesmal sicherheitshalber ein 8 A Netzteil genommen. Aber damit
funktioniert's leider auch nicht, d. h. das Problem bleibt bestehen :-(
.
Da es mit Sicherheit nicht schadet, habe ich schließlich noch die hier
http://www.led-studien.de/schutzschaltung-fuer-ws2812-pixel/
empfohlene Schutzschaltung nachträglich mit eingebaut. Das hat
(natürlich ?) auch nichts gebracht, genauso wenig wie das testweise
Erhöhen des µC-Takts von 8 MHz auf 16 MHz.
Ich fasse also noch mal kurz zusammen: Nachdem das Ganze ca. ein Jahr
lang fehlerfrei funktioniert hat, besteht jetzt das Problem nach wie vor
darin, daß ich alle 60 WS2812B LEDs der Kette per µC-Befehl zwar
angeschaltet bekomme, jedoch nach einem Auschaltbefehl aller LEDs IMMER
einige einfach weiterleuchten. Ich mußte allerdings feststellen, daß das
Problem ausschließlich bei sehr hellen Farben, also etwa der von mir
genutzen Farbe RGB 255:255:230, auftritt. Lasse ich die LEDs
beispielsweise mit
RGB 175:175:175
RGB 87:87:87 oder
RGB 252:60:3
leuchten, dann kann ich An- u. Auschaltbefehle senden, so viele ich
will, es funktioniert immer problemlos.
In dem Sinne : Wenn jemand noch eine Idee hat, wie ich ohne großen
Aufwand dieses Problem doch noch lösen könnte .... ? Ansonsten wird mir
wohl nichts weiter übrigbleiben, als einen Transistor einzubauen, um
dann darüber den µC zusätzlich die Spannung des LED-Strips schalten zu
lassen. Sollen die LEDs dann ausgeschaltet werden, setzt der µC einfach
VCC auf 0V. Nicht sehr elegant, aber was anderes fällt mir leider nicht
mehr ein.
Grüße,
The SphereX
Warum nimmst du überhaupt RGBs, um dann immer voll weiß anzusteuern?
Nimm weiße LED-Streifen. Die schaltest du mit dem Controller ein und
aus.
Kannst sie auch per PWM dimmen.
Ob das jetzt am Netzteil, am Controller, an deiner Ansteuerung oder
daran liegt, daß irgendwas zu warm wird, kann man hier doch nur raten.
" ... Warum nimmst du überhaupt RGBs, /um dann immer voll weiß
anzusteuern/? ... "
Tja, berechtigte Frage. Ich hatte eigentlich nicht vor, weiß zu nutzen,
sondern wollte mir irgendeinen Warmton zusammenmischen. Das ist mir
letztlich auch gelungen. Das Problem war nur, daß die 60 LEDs mit dieser
Farbe den TV-Hintergrund nicht hell genug erleuchtet haben. Da hätte ich
also mehr als 60 gebraucht. Allerdings war zu diesem Zeitpunkt schon
alles verbaut, d. h. die (Teil-) Strips waren bereits am TV angebracht
(angeklebt).
Grüße,
The SphereX
The SphereX schrieb:> Der einzige, wenn auch nicht sehr elegante Workaround, der mir jetzt> dazu einfällt,
Ein zweiter Workaround, der mir einfällt: sende den Ausschaltbefehl
mehrfach.
The SphereX schrieb:> Da es mit Sicherheit nicht schadet, habe ich schließlich noch die hier>> http://www.led-studien.de/schutzschaltung-fuer-ws2812-pixel/>> empfohlene Schutzschaltung nachträglich mit eingebaut.
Schaden tut sich nicht, aber vielleicht hätte sie genutzt, wenn sie von
Anfang an drin gewesen wäre. Wenn praktisch immer die (oder einige der)
letzten 13 LEDs betroffen sind, hat vielleicht die 14. von hinten einen
Schaden und kann den DO nicht mehr ordentlich treiben.
HildeK schrieb:> hat vielleicht die 14. von hinten einen> Schaden und kann den DO nicht mehr ordentlich treiben.
... oder die 13. hat einen Schaden am Eingang.
The SphereX schrieb:> Ich mußte allerdings feststellen, daß das> Problem ausschließlich bei sehr hellen Farben, also etwa der von mir> genutzen Farbe RGB 255:255:230, auftritt. Lasse ich die LEDs> beispielsweise mit> ...> leuchten, dann kann ich An- u. Auschaltbefehle senden, so viele ich> will, es funktioniert immer problemlos.
Das wiederum spricht für ein Problem mit Versorgungsspannungstransienten
oder ein thermisches Problem bei den LED-Controllern.
Wolfgang schrieb:> p.s.> Hat jede LED einen eigenen Abblockkondensator oder nur der ATtiny?WS2812B auf einen Stripe - jede Led hat einen?
Warum überhaupt WS2812B?
Hast Du mal Dein Signal an die Leds mit dem Oszi angeschaut? Auffallend
ist, dass eher der An-Zustand hängenbleibt. Ev ist Dein Timing am
Led-Datensignal grenzwertig.
The SphereX schrieb:> empfohlene Schutzschaltung nachträglich mit eingebaut. Das hat> (natürlich ?) auch nichts gebracht, genauso wenig wie das testweise> Erhöhen des µC-Takts von 8 MHz auf 16 MHz.
Daraus schliesse ich, dass Du keinen Quarz am Tiny hängen hast? Kannst
Du das mal probieren?
Kältespray auf den Tiny und/oder die Leds, wenn der Fehler auftritt kann
auch interessant sein.
Gruß, Stefan
Patrick J. schrieb:> Hi>> Stefan K. schrieb:>> Kältespray>> Oder 'Druckluft in der Dose' - ist das Gleiche, kostet aber weniger> (zumindest auf eBay)
Kältespray und Druckluft erfüllen nicht denselben Zweck.
Es wird auch kein thermisches Problen sein.
Jörg R. schrieb:> Kältespray und Druckluft erfüllen nicht denselben Zweck.
Für den geplanten Einsatz schon, zumindest wenn er letztere Dose
kopfüber verwendet.
Es klingt aber eher nach einem Problem mit dem Netzteil. Ist das
halbwegs hochwertig? Chinakracher im Dauerbetrieb mit Lastwechseln
werden nicht alt.
Bla schrieb:> Es klingt aber eher nach einem Problem mit dem Netzteil. Ist das> halbwegs hochwertig? Chinakracher im Dauerbetrieb mit Lastwechseln> werden nicht alt.
Netzteil hat er schon getauscht.
Hi Leute !!!
Zunächst noch mal vielen Dank für Eure Hinweise und Ratschläge. Ich gehe
allerdings mittlerweile auch davon aus, daß obwohl alle 60 LEDs
leuchten, irgendeine zumindest bezüglich der Datenweiterleitung nicht
mehr korrekt funktioniert. Und diese eine LED ohne Oszi zu finden ist
sicherlich kaum möglich. Deshalb habe ich mich jetzt dazu entschieden,
einen IRLZ34N Mosfet zu integrieren, der dann, vom µC gesteuert, den
Strip bei Bedarf einfach abschaltet.
Aber es soll irgendwie nicht sein :-( !!!
Ich habe noch nicht so viel mit Mosfets zu tun gehabt. Eigentlich habe
ich einen IRLZ34N erst einmal verbaut. Im Prinzip in einer ähnlichen
Anwendung. Dabei handelte es sich ebenfalls um eine LED-Kette aus 72
warmweißen LEDs, ausgeführt als so eine Art Blumenstrauß (72 x 3 V,
Netzteil: 24 V). Der µC dimmt in dieser Anwendung per PWM über den
IRLZ34N den Strauß nach Vorgabe. Das Ding läuft seit Jahren einwandfrei.
Ich habe demnach die Beschaltung des IRLZ34N zunächst einfach übernommen
und diesen entsprechend mit zwei 10 kOhm Widerständen in die Schaltung
für die TV-Hintergrundbeleuchtung eingebaut: 1 x 10 kOhm zwischen
PortB.1 des ATTiny85 und dem Gate des IRLZ34N und 1 x 10 kOhm als
Pulldown der Gate-Leitung nach Masse.
Sooo ... Alles eingeschaltet, und was passiert? Alle LEDs leuchten zwar,
es ergibt sich aber leider ein "sehr schöner" Farbverlauf von vollweiß
bei den ersten bis zu warmweiß bei den letzten LEDs, anstatt eines
komplett vollweiß erstrahlenden Strips :-(. Dazu wird der IRLZ34N auch
ganz schön heiß, so daß ich sicherheitshalber erst mal noch einen
Kühlkörper angeschraubt habe. Tja, jetzt konnte ich die
Hintergrundbeleuchtung zwar über den IRLZ34N nach Bedarf an- u.
auschalten, allerdings kam es in dieser Konfiguration zu
Farbverfälschungen ....
Ich habe dann noch mal zur Beschaltung des IRLZ34N recherchiert, und
fand dabei den Hinweis, daß bei meiner 2 x 10 kOhm Beschaltung quasi ein
Spannungsteiler entsteht, der aus den 5 V am Ausgang des µC 2,5 V am
Gate des IRLZ34N macht. Deshalb schaltet dieser wohl nicht richtig durch
(VGS(th) = 2 V), beliefert dabei den LED-Strip nicht ordnungsgemäß, was
den Farbverlauf erklärt, und wird außerdem, obwohl für bis zu 30 A
ausgelegt, bereits bei 3,6 A sehr heiß, weil RDS(on) bei VGS = 2,5 V zu
hoch ist. So habe ich das jedenfalls verstanden. Es wurde empfohlen, als
Gate-Widerstand etwa 120 Ohm zu verwenden. Damit sollten um die 4,94 V
am IRLZ34N-Gate ankommen, der dann entsprechend auch richtig
durchschaltet. Also: 1 x 10 kOhm raus, 1 x 120 Ohm rein. Tja, leider
schaltet der IRLZ34N jetzt überhaupt nicht mehr. Nachdem der µC PortB.1
zum IRLZ34N-Gate auf high setzt, messe ich mit dem Multimeter vielleicht
für geschätzte 300 ms so was um die 4,9 V am Strip. Danach, obwohl
PortB.1 immer noch high ist, wieder 0 V. Entsprechend leuchtet jetzt
natürlich überhaupt nichts mehr.
In dem Sinne: Was mache ich jetzt noch falsch?
Grüße,
The SphereX
Deine Recherchen treffen zu.
Gib mal die Messergebnisse im Fehlerfall durch (direkt am MOSFET
messen):
Spannung zwischen G(+) und S(-)
Spannung zwischen D(+) und S(-)
OK, ich habe jetzt mal direkt am IRLZ34N (mit der Beschaltung:
Gatewiderstand = 120 Ohm, Pulldown = 10 kOhm) nachgemessen, und zwar
während der µc aller 15 s im Wechsel PortB.1 high und low geschaltet
hat.
PortB.1 = low
|
|
15 s : G-S = 0 V , D-S = 4,65 V
|
|
PortB.1 = high
|
|
15 s : G-S = 0 V , D-S = 4,65 V
|
|
.....
Am Strip liegen dabei entsprechend immer 0 V an.
Grüße,
The SphereX
Das klingt nach einem defekt.
Wenn der PortPin PortB.1 auf High geht sollte am Gate was zu messen
sein.
Und zwar in etwa 5V.
Hast du einen 2ten IRLZ34 da? Tausche ihn aus.
Du kannst auch erstmal den IRLZ34 von PortB.1 trennen und messen ob der
Port überhaupt noch schaltet.
Wenn nicht, könnte der Controller defekt sein.
Es ist auch keine gute Idee bei den 2812B die Masse zu schalten. Das
durfte ich leider auch schon erfahren. Nach dem Anschalten auch kurz
warten und erstmal alle Leds via Daten ausschalten bevor du neue Daten
sendest. Frag mich nicht warum, aber das hat bei mir solche Farbfehler
beseitigt.
Ich hab dir mal den Schaltplan meiner Steuerung angehängt. Die läuft
seit 1 Jahr erfolgreich.
@ Max Mustermann
Danke für den Hinweis und die Schaltung.
@ Dennis K.
Also jetzt wird's ganz verrückt. Ich habe den µC einfach mal aus dem
Sockel genommen und die Gate-Leitung manuell high gesetzt (Drahtbrücke
zum Sockel-VCC). Der IRLZ34N schaltet damit wunderbar durch:
> G-S: 5,1 V> D-S: 0 V> am LED-Strip: 5,1 V
Nehme ich die Brücke raus (Gate = low), macht er dicht:
> G-S: 0 V> D-S: 5,1 V> Am LED-Strip: 0 V
Genaus so soll das sein. Warum funktioniert's aber nicht mit µC? Tja,
vielleicht weil dieser ja tatsächlich defekt ist? Um das zu
verifizieren, habe ich den ATTiny85 ohne jegliche Beschaltung auf's
Steckbrett gesetzt, 5 V angelegt, und an PortB.1 gemessen. Und was soll
ich sagen: Der µC macht, was er soll. Da liegen aller 15 s jeweils 0 V
und 5 V an, genauso wie es mein Testprogramm vorsieht.
Kurzum: Der ATTiny85 ist keinesfalls defekt. Aus irgendeinem Grund
jedoch schaltet der IRLZ34N nicht, wenn er die 5 V vom PortB.1 des µC
bekommt.
Kann mir das jemand erklären ???
Grüße,
The SphereX
The SphereX schrieb:> Also jetzt wird's ganz verrückt. Ich habe den µC einfach mal aus dem> Sockel genommen und die Gate-Leitung manuell high gesetzt (Drahtbrücke> zum Sockel-VCC).
Miss mal den Strom durch die Drahtbrücke. Wenn der deutlich größer als
20 mA ist, könnte das der Grund sein. Dann brauchst du einen Transistor,
um den IRL zu schalten.
The SphereX schrieb:> Kurzum: Der ATTiny85 ist keinesfalls defekt.
Kann trotzdem sein, wenn er Leistung bringen muss. Brat das Programm
doch mal auf einen neuen Tiny! Da der eh gesockelt ist, ist das doch
eine leichte Übung. Auch wenn es am Ende nicht der Tiny war, so hast du
das damit wenigstens zweifelsfrei ausgeschlossen.
The SphereX schrieb im Beitrag #50771
> Genaus so soll das sein. Warum funktioniert's aber nicht mit µC? Tja,> vielleicht weil dieser ja tatsächlich defekt ist? Um das zu> verifizieren, habe ich den ATTiny85 ohne jegliche Beschaltung auf's> Steckbrett gesetzt, 5 V angelegt, und an PortB.1 gemessen. Und was soll> ich sagen: Der µC macht, was er soll. Da liegen aller 15 s jeweils 0 V> und 5 V an, genauso wie es mein Testprogramm vorsieht.
genau das wirst du auch messen wenn du den Pin an Eingang konfiguriert
hast und nur den Pullup ein- und ausschaltest.
Mit geringer Last am Ausgang tut sich dann nichts mehr.
Sascha
@ F. Fo
" ... Brat das Programm doch mal auf einen neuen Tiny! ... "
Da hätte ich in der Tat auch mal selber drauf kommen können ;-). Leider
habe ich momentan kein Zugang zur Schaltung am TV.
ABER:
@ Sascha Weber
" ... genau das wirst du auch messen wenn du den Pin an Eingang
konfiguriert hast und nur den Pullup ein- und ausschaltest. Mit geringer
Last am Ausgang tut sich dann nichts mehr. ... "
Der ATTiny85 befindet sich ja noch auf dem Steckbrett. Ich habe jetzt
einfach mal eine 20 mA LED an PortB.1 gehangen und das Testprogramm noch
mal laufen lassen. Wenn der µC, oder zumindest PortB.1, tatsächlich
defekt wäre, also bereits bei geringer Last wie dem Aufladen der
Gate-Kapazität des IRLZ34N einbrechen würde, dürfte die LED ja auch
schon nicht mehr leuchten. Das tut sie aber sehr wohl! Also zumindest
die üblichen 20 mA der LED stellen kein Problem dar. Insofern gehe ich
nach wie vor davon aus, das der ATTiny85 nicht defekt ist. Wenn ich
wieder an die Schaltung rankomme, werde ich selbstverständlich das Ganze
trotzdem noch mal mit einem anderen µC probieren. Aber ich denke, das
Ergebnis wird das gleiche sein.
Das Problem muß also woanders liegen. Nur wo?
Grüße,
The SphereX
The SphereX schrieb:> Das tut sie aber sehr wohl!
Eine moderne LED leuchtet durchaus, mit dem Pullup als Strombegrenzung.
The SphereX schrieb:> Also zumindest> die üblichen 20 mA der LED stellen kein Problem dar.
Hast du die 20mA gemessen, oder nur geraten?
Ich würde einem solchen Stripe ja nicht die Masse entziehen.
Eher einen High Side Switch vorziehen.
Ich habe übrigens dutzende von deinen FET Schaltungen im Einsatz.
Völlig Problemlos.
Wofür soll die Schaltung überhaupt gut sein?
Um das eingangs genannte Problem zu vermeiden?
Dann ist das die falsche Kanone für den Spatzen.
" ... Eine moderne LED leuchtet durchaus, mit dem Pullup als
Strombegrenzung. ... Hast du die 20mA gemessen, oder nur geraten? ... "
Erwischt! Eher gera... ähhh vorausgesetzt, also als gegeben angenommen
;-).
Aber mal davon abgesehen, entnehme ich demnach Deiner Aussage, daß der
µC bzw. der PortB.1 trotz leuchtender LED defekt sein kann? Hmmm, das
müßtest Du mir aber dann schon noch mal erklären. Und eine weitere
Verständnisfrage hätte ich da auch noch: Ein Mosfet ist doch
spannungsgesteuert, richtig? Also selbst wenn über den µC-Port nur sehr
wenig Strom fließt, müßte die Gate-Kapazität doch trotzdem aufgeladen
werden, nur eben langsamer. Das wiederum würde zwar ein schnelles
Schalten verhindern, was aber bei meinen paar Schaltvorgängen am Tag
wohl eher irrelevant wäre.
" ... Ich würde einem solchen Stripe ja nicht die Masse entziehen. ... "
Das dies nicht so günstig ist, habe ich mittlerweile auch schon öfter
gelesen. Aber ist "High Side" mit NPN so ohne weiteres möglich, oder
müßte ich dazu wieder die ganze Schaltung umkrempeln. Und was würde,
gesetzt dem Fall, ich bekäme es so zum Laufen wie im Schaltplan,
schlimmstenfalls passieren, wenn ich dem LED-Strip zwei dreimal am Tag
"die Masse entziehe"?
" ... Ich habe übrigens dutzende von deinen FET Schaltungen im Einsatz.
Völlig Problemlos. ... "
Ich zumindest in einer weiteren Anwendung ja auch (wie hier bereits
erwähnt:
Beitrag "Re: WS2812B TV-Hintergrundbeleuchtung nach einem Jahr defekt?"). Dort
wird zwar gedimmt, der µC steuert den IRLZ34N also per PWM, und die
Spannungs-/ Stromverhältnisse sind etwas anders, aber das dürfte ja auf
die grundlegende Funktionalität eigentlich keinen Einfluß haben. Deshalb
wundert's mich ja auch, daß es in der Schaltung hier eben nicht
funktioniert.
" ... Wofür soll die Schaltung überhaupt gut sein? Um das eingangs
genannte Problem zu vermeiden? ... "
Es wäre ein mir wie bereits mehrfach erwähnt zwar unliebsamer, aber
dennoch funktionierender Workaround. D. h. immer dann, wenn nach dem
Ausschaltbefehl des µC einige LEDs trotzdem weiterleuchten, wäre der
IRLZ34N quasi für die Holzhammermethode zuständig und würde dem Strip
"einfach den Saft abdrehen". Nenne es meinetwegen stümperhaft, aber was
anderes fällt mir leider zur Problemumgehung (nicht Lösung!) nicht ein.
Grüße,
The SphereX
The SphereX schrieb:> Aber mal davon abgesehen, entnehme ich demnach Deiner Aussage, daß der> µC bzw. der PortB.1 trotz leuchtender LED defekt sein kann? Hmmm, das> müßtest Du mir aber dann schon noch mal erklären. Und eine weitere> Verständnisfrage hätte ich da auch noch: Ein Mosfet ist doch> spannungsgesteuert, richtig? Also selbst wenn über den µC-Port nur sehr> wenig Strom fließt, müßte die Gate-Kapazität doch trotzdem aufgeladen> werden, nur eben langsamer. Das wiederum würde zwar ein schnelles> Schalten verhindern, was aber bei meinen paar Schaltvorgängen am Tag> wohl eher irrelevant wäre.
der Pullup ist glaube ich so ca. 50k bei den AVRs, durch den 10k vom
Gate nach GND hast du einen Spannungsteiler und da bleiben dann <1V
damit schaltet der FET nie.
Sascha
Sascha W. schrieb:> der Pullup ist glaube ich so ca. 50k bei den AVRs,
eher so: 20k bis 50k
Erhebliche Temperaturabhängigkeit und Exemplarschwankungen.
The SphereX schrieb:> Aber mal davon abgesehen, entnehme ich demnach Deiner Aussage, daß der> µC bzw. der PortB.1 trotz leuchtender LED defekt sein kann?
Habe ich weder gesagt, und schon gar nicht gemeint.
Wenn du schon wild interpretierst, dann auch richtig:
Ich habe damit behauptet, dass du anstatt den Pin hoch und runter zu
ziehen, nur den Pullup ein und aus schaltest.
OK, jetzt habe ich zumindest verstanden, worauf Ihr hinauswollt. Euer
Verdacht geht also dahin, daß der PortB.1 defektbedingt oder durch mich
falsch konfiguriert nicht als Ausgang, sondern als Eingang geschaltet
ist, und ich quasi nur den internen PullUp ein- u. ausschalte. Also eine
softwareseitig falsche Konfiguration liegt definitiv nicht vor. Das kann
ich also schon mal ausschließen. Und falls PortB.1 defektbedingt nur
noch als Eingang fungierte (wie auch immer das technisch zu erklären
wäre), würde die testweise angeschlossene LED bei einem angenommen
Minimalwert von 20k für den internen PullUp wohl nicht mal glimmen.
Tatsächlich hat diese allerdings so hell geleuchtet, wie eine rote LED
dieser Form und Größe unter optimalen Voraussetzungen wohl nur leuchten
kann, nämlich ziemlich hell!
Grüße,
The SphereX
...hmpf, ich schmier auch mal meinen Senf dazu, evtl hab ichs ja
überlesen, aber an der Stelle wo die Schaltung modifiziert wurde (120
Ohm R an µc Port pin -> MosFet gate) hast du das Folgende mal gecheckt?
S. R. schrieb:> Miss mal den Strom durch die Drahtbrücke. Wenn der deutlich größer als> 20 mA ist, könnte das der Grund sein. Dann brauchst du einen Transistor,> um den IRL zu schalten.
die avr megas können wohl bis 50mA mit den port pins treiben, bei den
tinys bin ich mir da nicht so sicher. (5V / 120 = ~ 41,6mA das könnte
evtl schon hart an der Grenze sein, mal den Strom begrenzen das sagen
wir mal wirklich
nur 20mA durchgehen und dann gucken ob der FET dann noch schaltet bzw
weit genug auf macht.
The SphereX schrieb:> Also eine softwareseitig falsche Konfiguration> liegt definitiv nicht vor.
Nimm es mir bitte nicht übel, aber genau das glaube ich dir nicht.
Solange nicht, bis ich den Gegenbeweis sehe.
Und, dass der Pin defekt ist, kann ich auch erstmal nicht glauben....
Bin sowieso ganz schlecht im Glauben.
Das ist nun wirklich keins meiner Spezialgebiete.
Mit prüfen und messen ist man im µC Bereich meist viel besser bedient.
Doch:
Ich glaube daran, dass die Dummheit des Menschen grenzenlos ist.
(zumindest meine, manchmal)
Ch.G. schrieb:> nur 20mA durchgehen und dann gucken ob der FET dann noch schaltet bzw> weit genug auf macht
Der Strom fließt nur kurze Zeit, bis die Gatekapazität geladen ist.
Das schafft jeder, auch noch so kleine, AVR problemlos.
Klar könnte man von 120R auf 220R hoch gehen...
Aber das wird hier keinen Erfolg bringen.
The SphereX schrieb:> Also jetzt wird's ganz verrückt. Ich habe den µC einfach mal aus dem> Sockel genommen und die Gate-Leitung manuell high gesetzt (Drahtbrücke> zum Sockel-VCC). Der IRLZ34N schaltet damit wunderbar durch:
Wie viel Strom brauchst du eigentlich?
Ich nehme für viele Sachen den IRLML2502. Ist billig und kann bisschen
was an Strom vertragen; außerdem Sot23
@ Arduino Fanboy
" ... Nimm es mir bitte nicht übel, ... "
Niemals ;-) ...
" ... Solange nicht, bis ich den Gegenbeweis sehe. ... "
In dem Sinne:
---------------------------------
$regfile = "attiny85.dat"
$crystal = 16000000
$hwstack = 50
$swstack = 50
$framesize = 50
Config Portb.1 = Output
Transistor_gate Alias Portb.1
Do
Transistor_gate = 0
Wait 15
Transistor_gate = 1
Wait 15
Loop
End
---------------------------------
" ... Der Strom fließt nur kurze Zeit, bis die Gatekapazität geladen
ist. Das schafft jeder, auch noch so kleine, AVR problemlos. ... "
Das sollte man wohl denken. Aber in meinem Fall ist das Ganze vielleicht
doch eher grenzwertig. Denn immerhin: Als ich noch den 10k
Gate-Widerstand drin hatte, hat der IRLZ34N ja sehr wohl geschaltet. In
Bezug auf das Ergebnis, sprich die Leuchtfarbe der LEDs, aufgrund der
durch den mit dem PullDown entstandenen Spannungsteiler nur noch 2,5 V
kleinen VGS zwar eher schlecht als recht, aber der µC konnte ihn zum
Schalten bewegen.
@ F. Fo
" ... Den Fet hast du doch erst nachträglich rein gebaut, ist das so?
... "
Korrekt.
" ... Wie viel Strom brauchst du eigentlich? ... "
60 x WS2812B @ RGB 255:255:230 = 60 x 60 mA = 3,6 A
" ... Was passiert denn, wenn du die Streifen komplett (erstmal zum
testen) an die Versorgung hängst? ... "
Tja, dann habe ich exakt den Zustand vor dem nachträglichen Einbau des
IRLZ34N, und damit natürlich auch genau wieder die Probleme, die ich
mithilfe des Mosfet eigentlich umgehen wollte (Siehe Eingangsbeitrag)
;-).
Ich habe hier >
http://becomingmaker.com/arduino-pwm-mosfet-gate-resistor/ < einen für
mich doch sehr aufschlußreichen Artikel gefunden, der das Thema
Gate-Strom behandelt. Demnach dürften bei meiner derzeitigen Beschaltung
dem PortB.1 des ATTiny85 für die Zeit des Aufladens der Gate-Kapazität
rund 34,5 mA abverlangt werden, was in der Tat eigentlich noch im Rahmen
des Absolute Maximum Ratings von 40 mA liegt. But who knows? Mir wird
wohl nichts anderes übrig bleiben, als es einfach mal mit einem etwas
größeren Gate-Widerstand zu versuchen.
Grüße,
The SphereX
The SphereX schrieb:> " ... Was passiert denn, wenn du die Streifen komplett (erstmal zum> testen) an die Versorgung hängst? ... ">> Tja, dann habe ich exakt den Zustand vor dem nachträglichen Einbau des> IRLZ34N, und damit natürlich auch genau wieder die Probleme, die ich> mithilfe des Mosfet eigentlich umgehen wollte (Siehe Eingangsbeitrag)> ;-).
Wenn deine LED-Strips OHNE µC das gleiche Verhalten, wie mit dem µC, an
den Tag legen, dann würde ich den Fehler doch bei den LEDs suchen...
The SphereX schrieb:> In dem Sinne:
Aua!
Das sieht wie Basic aus....
Da bin ich aus dem Rennen.
Trotzdem Danke, dass du dich dazu hast breitschlagen lassen, ein
Stückchen Code zu publizieren.
Wenn auch nicht den Teil, welcher den (ursprünglichen) Fehler
verursacht. Aber du wirst schon wissen, was du da tust...
Der Code ist ok.
Zum Mosfet kann ich auch nichts sagen. Die Schaltung sieht ok aus und
sollte funktionieren. Besser wäre es natürlich den Stripe mit einem
Highsider zu schalten, aber das weißt du ja.
Zu deinem "Leuchtproblem": Wenn du irgendwo ein Oszi oder Logicanalyzer
auftreiben kannst, dann zeichne das mal auf. So ein billiger Saleae
nachbau für 8€ geht auch. Wenn du mit deinem Timing hart an der Grenze
liegst, dann kann es schon sein dass manche Leds das irgendwann nicht
mehr richtig verstehen.
Ralf G. schrieb:> Wozu/ Warum soll der Streifen eigentlich seperat geschaltet> werden?
Lies den Thread: Beim Abschalten einiger LEDs bleiben manche LEDs an.
Aus irgendeinem Grund.
Arduino F. schrieb:> Schaltplan und Code!> Aus der Prosa werde ich nicht schlau.S. R. schrieb:> Lies den Thread:
Ach, der Würgeround mit MOSFET und die Schutzdioden in der DATA-Leitung
sind nachträglich dazugekommen? ^^
Na hier sind ja schon wieder einige Antworten eingegangen. Sehr schön
:-).
@ Arduino Fanboy
" ... Trotzdem Danke, dass du dich dazu hast breitschlagen lassen, ein
Stückchen Code zu publizieren. Wenn auch nicht den Teil, welcher den
(ursprünglichen) Fehler verursacht. ... "
Wenn ich mich mit entsprechenden Fragen hier im Forum zu Wort melde,
überlege ich mir vorher eigentlich immer, welche Informationen nötig
sind, um mein Problem möglichste verständlich zu schildern. Der
Programmcode hat in diesem Fall definitiv nicht dazu gehört. Denn wie
bereits erwähnt, hat die TV-Hintergrundbeleuchtung ja ca. ein Jahr lang
wunderbar funktioniert. Und ich denke mal nicht, daß sich in dieser Zeit
der Code selbst umgeschrieben, also irgendwie verselbstständigt hat ;-).
" ... Aua! Das sieht wie Basic aus. ... "
Das sieht nicht nur danach aus, das ist es auch. Naja, und das BASCOM
hier nicht gerade Begeisterungsstürme auslöst, sondern genauso wie
dessen Nutzer bisweilen eher belächelt wird, ist mir auch klar. Mir
jedenfalls hat es bei meinen sporadischen Projekten bis jetzt immer gute
Dienste erwiesen. Aber das nur mal am Rande.
@ Max Mustermann
" ... Wenn du irgendwo ein Oszi oder Logicanalyzer auftreiben kannst,
dann zeichne das mal auf. So ein billiger Saleae nachbau für 8€ geht
auch. ... "
Na da hast Du mich jetzt aber richtig neugierig gemacht. Ich dachte
eigentlich, daß ich zur Lösung des Grundproblems allein für die nötige
Analyse-Hardware einige Scheine hinblättern müßte. Aber nachdem ich mich
jetzt mal ein wenig mit dem Thema "Logic Analyzer" beschäftigt habe,
mußte ich feststellen, daß man so einen Saleae-Clone ja tatsächlich fast
schon hinterher geschmissen bekommt. Und "sigrok PulsView" bringt ja
sogar einen "RGB LED string decoder (WS281x)" mit. Damit dürfte es dann
wohl doch auch für mich möglich sein, herauszufinden, was bei der
Datenübertragung bei welcher LED schiefläuft. Die Sache würde ich
demnach evtl. tatsächlich noch mal angehen, wenn der Chinese den
Analyzer dann in eins zwei Monaten geliefert hat ;-).
" ... Das Abschalten macht auch wegen der Stromaufnahme Sinn. Die
Stripes ziehen im ausgeschaltetem Zustand auch noch ein bisschen Strom.
... "
Und genau deshalb würde ich den Mosfet auch gern drinlassen, auch für
den Fall, daß ich das Ursprungsproblem doch noch gelöst bekomme.
" ... Besser wäre es natürlich den Stripe mit einem Highsider zu
schalten, aber das weißt du ja. ... "
Mittlerweile weiß ich das schon. Nur weiß ich nicht wirklich, warum. Es
wäre also sehr nett, wenn Du mir vielleicht kurz erklären könntest,
warum das Masseschalten nicht so günstig ist. Was würde schlimmstenfalls
bei zwei drei Schaltvorgängen am Tag mit dem LED-Strip passieren?
@ Dennis K.
" ... Bist du sicher, dass der 10k Pulldown ein 10k ist. ... "
Absolut.
Grüße,
The SphereX
The SphereX schrieb:> Nur weiß ich nicht wirklich, warum. Es wäre also sehr nett, wenn Du mir> vielleicht kurz erklären könntest, warum das Masseschalten nicht so> günstig ist.
Ich kenne zwar die WS nicht aus eigener Erfahrung, aber du ziehst der
Datenleitung die Füsse weg.
The SphereX schrieb:> " ... Aua! Das sieht wie Basic aus. ... ">> Das sieht nicht nur danach aus, das ist es auch. Naja, und das BASCOM> hier nicht gerade Begeisterungsstürme auslöst, sondern genauso wie> dessen Nutzer bisweilen eher belächelt wird, ist mir auch klar.
Das ist mir alles egal, wer was belächelt, oder auch nicht.
Fakt ist, dass ich damit noch nie gearbeitet habe.
Unbekanntes Gebiet.
The SphereX schrieb:> Wenn ich mich mit entsprechenden Fragen hier im Forum zu Wort melde,> überlege ich mir vorher eigentlich immer, welche Informationen nötig> sind, um mein Problem möglichste verständlich zu schildern. Der> Programmcode hat in diesem Fall definitiv nicht dazu gehört.
Wenn deine Diagnostischen Fähigkeiten soweit ausgebildet wären, dass du
sagen könntest, woran es liegt, oder auch nicht, dann bräuchtest du hier
nicht zu fragen.
So hältst du die wesentliche Information vor uns geheim.
Nicht absichtlich, denn du hältst sie auch vor dir geheim.
z.B. das Timing prüfen!!!!
The SphereX schrieb:> Und "sigrok PulsView" bringt ja> sogar einen "RGB LED string decoder (WS281x)" mit.
Mein Reden!
Von Anfang an.
Prüfe das Timing.
Aber an das Fass wolltest du ja nicht ran!
Abwehr, bis gerade eben.
Aber jetzt, bist du auf dem richtigen Weg.
(glaube ich)
F. F. schrieb:> Ich kenne zwar die WS nicht aus eigener Erfahrung, aber du ziehst der> Datenleitung die Füsse weg.
Dafür hat er jetzt die Dioden eingebaut, damit der Eingang nicht
beschädigt wird. Aber was sonst noch geschädigt werden könnte... Ich
würde da lieber auf Nummer sicher gehen.
Max Mustermann schrieb:> Das Abschalten macht auch wegen der Stromaufnahme Sinn.
Müsste man mal nachmessen. Vielleicht liegt's nur in der Größenordnung
eines schlampigen µC-Powermanagments, wo man es selbst nicht so genau
nimmt? Den Ruhestromverbrauch des Netzteils schon mal gemessen?
The SphereX schrieb:> Es> wäre also sehr nett, wenn Du mir vielleicht kurz erklären könntest,> warum das Masseschalten nicht so günstig ist.
Nur gaaanz grob, Z.B.:
- Versorgungsspannung 5V
- Spezifikation eines Einganges am µC o.ä. -> zulässige Spannung
(meistens) von 0 bis Vcc
Gemessen werden diese Werte ... in Bezug zur Masse. Wenn du die jetzt
wegnimmst, hat der µC eine Versorgungsspannung 0V und am Eingang, falls
gerade 'high' 5V -> siehe Spezifikation
Mit den beiden '1N5817' am Eingang schließt du die Überspannung
sozusagen kurz.
Wenn ich das ganze Thema hier mit einfacher Logik betrachte, dann kann
es nur Der Streifen mit den WS2812 sein.
Was haben wir?
Neues Netzteil und stärker => Fehler bleibt.
µC im Steckbrett getestet => Treibt eine Led => µC demzufolge ok.
Programm => lief ein Jahr ohne Problem, läuft auf dem Steckbrett.
Versorgung auf der Platine für den µC => laut TO ist die auch ok.
Fazit: WS2812 Strippe defekt.
F. F. schrieb:> Wenn ich das ganze Thema hier mit einfacher Logik betrachte, dann> kann> es nur Der Streifen mit den WS2812 sein.>> Was haben wir?>> Neues Netzteil und stärker => Fehler bleibt.> µC im Steckbrett getestet => Treibt eine Led => µC demzufolge ok.> Programm => lief ein Jahr ohne Problem, läuft auf dem Steckbrett.> Versorgung auf der Platine für den µC => laut TO ist die auch ok.>> Fazit: WS2812 Strippe defekt.
Gegenrechnung:
1. RC- Oszilator
2. WS2812 = kritisches Timing
3. Erwärmung
Fazit:
Takt Drift
Abhilfe:
Oszillator Kalibrieren
Temperaturkompensation anhand internem Temp Sensor
So, Leute: Ich habe mich dazu entschlossen, Euren Ratschlägen zu folgen
und den Mosfet-Switch als "High-Side" umzubauen. Dazu werde ich den
IRLZ34N gegen einen NDP6020P austauschen. Diese Schaltfunktion lasse ich
also auf jeden Fall drin. Zudem werde ich mir zur Klärung des
eigentlichen Ausschaltproblems mit den LEDs einen dieser 5 € Logic
Analyzer bestellen.
Tja, dann wäre da aber nach wie vor aktuell noch der IRLZ34N, welcher
sich bei Verwendung eines 120 Ohm Gatewiderstands nicht vom ATTiny85
schalten läßt. Und da dieses Problem sehr wahrscheinlich auch beim
NDP6020P weiter bestehen bleiben dürfte, mußte hier auch eine Lösung
her.
@ Arduino Fanboy
" ... Der Strom fließt nur kurze Zeit, bis die Gatekapazität geladen
ist. Das schafft jeder, auch noch so kleine, AVR problemlos. Klar könnte
man von 120R auf 220R hoch gehen... Aber das wird hier keinen Erfolg
bringen. ... "
UND OB !!! Wie S. R. (svenska) und Ch.G. schon richtig vermutet
hatten, sind die 34,5 mA beim Aufladen der Gate-Kapazität dem µC ganz
offensichtlich bereits zu viel. Denn mit 240 Ohm (+ 25 Ohm interner
Ausgangswiderstand des Ports), also einer Strombegrenzung auf knapp 20
mA, funktioniert's tatsächlich wunderbar. Der IRLZ34N schaltet
problemlos durch, und die LEDs leuchten alle ohne Farbverfälschungen.
Besonders warm bzw. heiß, wie noch mit dem 10K Widerstand, wird der
Mosfet auch nicht. Den Kühlkörper werde ich demnach wohl auch wieder
abbauen können.
Grüße,
The SphereX
The SphereX schrieb:> Wie S. R. (svenska) und Ch.G. schon richtig vermutet> hatten, sind die 34,5 mA beim Aufladen der Gate-Kapazität dem µC ganz> offensichtlich bereits zu viel.
Der Pin ist ja auch nur für 20 mA spezifiziert.
Wenn ich mich recht entsinne, sind die genannten 40 mA das "absolute
maximum rating" - also "gerade noch nicht zerstörend".