Hallo, ich versuche nun schon seit Tagen, meine Problemquelle zu lokalisieren. So langsam gehen mir die Ideen aus. Ich habe von theaterzentrum.at/technix/ den Dimmer nachgebaut (allerdings als Triac den TIC246D). Und als uC einen ATMega8, d.h. das Programm umgeschrieben. Nun das Problem: mein Dimmer flimmert mit etwa 50Hz. Nicht doll, aber erkennbar. Folgendes habe ich schon probiert: - habe nur bei positiven Halbwellen gezündet. Ergebnis: wie erwartet, es flimmert deutlicher, Lampe wird nur halb hell, ansonsten ok. - habe nur bei negativen Halbwellen gezündet. Ergebnis wie eben. - Dachte, vielleicht liegt es an irgendwelchen Ungenauigkeiten der Zündzeitpunkte. Habe mit den Timings gespielt (Zündung bei neg. Halbwelle etwas später/früher als bei positiver). Ergebnis: ändert nix. Besonders deutlich ist das flimmern bei mittleren Helligkeiten. Ganz hell ist ok. Da ich als Hobbybastler kein Oszi habe, will ich einfach mal fragen, ob jemand schon einmal ein ähnliches Problem hatte und woran es gelegen hat. Mir gehen langsam die Ideen aus, was ich noch überprüfen könnte. Im Anhang sind die interessanten Stellen des Programms. Gruß, Sebastian
@Kurt: danke. Werde mich heute abend mal dahinter klemmen. @all: weitere Ideen? Kann es sein, dass die Induktivität zu gering dimensioniert ist? Führt sowas zu flimmern? Habe nämlich mal (bei sehr geringer Last) die Spule überbrückt und voila, es flimmert deutlich mehr. Ein zweiter Ansatz geht bisher dahin, dass die Nulldurchgangskennung irgendwie Mist liefert. Ich bleibe am Ball. Gruß, Sebastian
Da Voll-Ein funktioniert und jetzt die Geschichte mit der Spule würd ich deiner Nulldurchgangstheorie gute 80% Fehlerwahrscheinlichkeit geben. Ich wollte dich eh schon bewundern dass du die Nulldurchgangerkennung so locker ohne Kontrolle mittels Oszi programmiert hast. Bei mir schleicht sich bei solchen Dingen immer mindestens ein Fehler ein ;-) grüße leo
Gut, dann warte mit der Bewunderung, bis ich den Fehler gefunden habe. Dann sage ich Bescheid, damit Du damit anfangen kannst ;-) Gruß, Sebastian
Ich schließe mich der Meinung von Leo9 an. Wie du es beschreibst, scheint es so zu sein, daß beim Nulldurchgang der Triac nicht gelöscht wird und er nach dem Nulldurchgang die folgende ganze Halbwelle durchschaltet. Denk daran, daß ein Triac nur löscht, wenn der Strom durch ihn Null ist. Wenn er über einen Nulldurchgang noch geschaltet ist, hat er erst beim nächsten Nulldurchgang die Chance zu löschen. Die Nulldurchgangserkennung ist der sensibelste Bereich eines Dimmers. Was sehr gut funktioniert ist folgende Schaltung: von L einen Widerstand 100k auf eine Gleichrichterbrücke, dahinter einen Optokoppler (z. B. CNY 17/4). Achte auf die verlustleistung des Widerstandes. Ich habe immer 2x47K in Reihe geschaltet. Der Optokoppler bekommt einen 10K vom Kollektor nach Vcc, der Emitter geht an Masse. Das Signal am Kollektor einmal über einen Schmitt-Trigger und ab an den Input Capture Pin. Der Rest ist Software. Viel Spaß. Michael
Ich schließe mich dem an. Da ist zu 99% irgendwas faul mit der Nulldurchgangserkennung. Ich benutze einen 6N138, und ich weiss noch, dass es sauschwer war, meine ganze Schaltung zu kalibrieren. Ohne Scope hast du da nicht allzu viele Chancen, denke ich. Klar kann man sich das ganze theoretisch auch anhand von Signalformen klar machen, aber ich fand es viel einfacher, direkt auf dem Scope zu sehen, wann welcher Impuls kommt und wann ich was wieder rausschicke.
Ich bastelle im Moment an einem ähnlichen Problem... Das mit dem Nulldurchgang ist ohne Oszi dadurch zu lösen das du einfach den fallenden und den steigenden Durchgang auswertest und so einpegelst das sie beiden Zeiten symetrisch sind. D.H. du startest den Timer bei fallend- Null speicherst bei steigend- Null und stoppst bei fallend- Null. Dann vergleichst du die beiden Zeiten und wenn dein Pegel zu hoch oder zu tief liegt wirst du verschieden lange zeiten bekommen. Das ganze einregeln bis es symetrisch ist und dann sollte es funktionieren. Eventuell must du dann noch die Phasenverschiebung ein bisschen korriegieren was aber durch Versuche nicht zu schwer sein dürfte. Auf jeden Fall bist du dann sicher beide Halbwellen auch in den extremstellen zu zünden.
Hallo zusammen, also, ich habe mich vielleicht ungenau ausgedrückt. Die Lampe flimmert nach unten, nicht nach oben. D. H. der Triac schaltet sicher ab. Ich glaube aber, dass er nicht immer sauber zündet. Wäre der Nulldurchgang extrem ungenau, hätte ich Probleme entweder am oberen Ende oder am unteren Ende der Helligkeitsscala. Ich kann aber sowohl bis ganz Null als auch bis ganz voll problemlos dimmen. Von daher scheint der Nulldurchgang zumindest grob stimmen. Ich probier jetzt noch was aus, wenns klappt, sage ich Bescheid. Gruß, Sebastian
Hallo nochmal, habe es jetzt mit stärkerer Drossel propiert, ohne Erfolg. Zum Thema Nulldurchgang: Ich triggere auf den fallenden Impuls, starte dann einen Timer, der 10ms später einen Interrupt auslöst, der mir den "zweiten Nulldurchgang" anzeigt. Damit habe ich keine Probleme, wenn der Schmitt-Trigger unterschiedlich lang für den fallenden/steigenden Nulldurchgang braucht. Dieses ganze Gebilde habe ich dann mittels Timermodifikation so lang hin- und hergeschoben, bis ich weder am dunklen noch am oberen Ende Probleme hatte: Triac schaltet nicht ab (dunkles Ende erzeugt Lichtblitze), oder zu früh an (Triac schaltet noch in der "alten" Halbwelle und dann sofort im Nulldurchgang ab->"Dunkle Blitze" am oberen Ende der Helligkeitsscala). Somit dürfte es grob passen. Mein Problem liegt aber in der Mitte der Helligkeitsscala. Da flimmert die Lampe sehr regelmäßig und schnell (aber nur ein bisschen). So, als ob Helligkeit der pos. Halbwelle und Helligkeit der neg. Halbwelle nicht gleich sind. Ich zünde aber sicher in beiden Halbwellen. Ich kann nämlich problemlos volle Helligkeit erreichen (auch ohne Helligkeitssprung). Da ich aber den zweiten Nulldurchgang genau 10ms nach dem ersten "emuliere", und dann das selbe passiert (egal, ob Nulldurchgang oder Timer), ist dies als Fehlerquelle unwarscheinlich. (Habe allerdings auch schon mit dieser Zeitspanne experimentiert, ohne Erfolg. Jetzt sind es wieder genau 10ms). Komische Sache, das. Gruß, Sebastian
Hallo zusammen, ich habe mein Problem gelöst. Dieser Post dient dazu, eine Lösung anzubieten, falls jemand das selbe Problem hat. Das Problem war (sozusagen) die Nulldurchgangskennung. Wie oben beschrieben, habe ich auf den fallenden Nulldurchgang getriggert, dann einen Timer gestartet, der mir exakt 10ms später den Zeitpunkt des steigenden Nulldurchgangs anzeigen sollte. Das Problem war das exakt 10 ms später. Da ich einen 8-Bit-Timer (bei 8MHz) verwendet habe, war es nicht möglich, 10,00000 ms abzupassen, sondern nur 10,012 ms. Ich ging von der irrigen Annahme aus, das die 0,012 ms, die ich bei der Hälfte der Halbwellen verspätet zünde, sich nicht bemerkbar machen (zumal Glühwendeln ja den Ruf haben träge zu sein). Und somit hatte ich die Ungenauigkeit schon aus dem Auge verloren, als ich das Programm fertig hatte. Irrtum! Das Flimmern eines 10 us zu spät zündenden Triacs sieht man deutlich! Ich verwende jetzt einen 16-Bit-Timer, mit dem ich genau 10,00000ms erreiche. Und das Flimmern ist weg. Also: Bei Dimmern kommt es auf jede us an! Danke, an alle, die versucht haben, mein Problem mitzulösen. Das Problem war ICH. Gruß, Sebastian
Hi Sebastian, die 12us alleine werden sicher nicht das Problem ausgemacht haben. Bei einem Timer, der mit 8Mhz/1024 (Prescaler = 1024) läuft, hast Du eine zeitliche Ungenauigkeit von 128us, je nachdem, auf welchem Wert der Prescaler beim Beschreiben des Timers gerade steht. Vielleicht hätte man Dein Problem auch durch Rücksetzen des Prescalers lösen können. Viele Grüße, Stefan
Hallo Stefan, Bei 8 Mhz und einem Prescaler von 1024 (256 geht nicht, damit kommt man max. auf 8,2 ms), TCNT=0xb2 hat man eine Overflow-Zeit von 10,016 ms, abzüglich der gewollten 10 ms bleiben 0,016 ms = 16 us Abweichung vom Soll (nicht 12, oben hab ich mich vertan). Und in der Tat, als ich das entdeckt und bereinigt hatte, war das Flimmern weg. Ich bin also ziemlich sicher, dass das das Problem gelöst hat, da ich sonst nix gemacht habe. Gruß, Sebastian
Noch mal schnell zum Thema Nulldurchgang: Ich habe den Nulldurchgang mittels Optokoppler und Schmitt-Trigger direkt an den 220V dedektiert. Damit hat man eine sehr exakte Nulldurchgangserkennung, die sehr einfach zu kallibrieren ist, auch ohne Scope (hab immer noch keins, obwohl ich zwischenzeitlich überlegt hatte, mir eins zuzulegen). @leo9: Du darfst mich also bewundern. Musst aber nicht, wenn Du nicht willst ;) Eine Nulldurchgangskennung nach dem Trafo (á la Semitone-Dimmer) hat den Nachteil, dass die Spannung an der Sekundärwicklung immer eine Phasenverschiebung gegenüber der Spannung an der Primärwicklung hat. Da kann man ohne Scope nix machen (es sei denn, man hat viel Geduld und spielt so lange mit den Timings, bis es passt). Das Dumme ist, dass diese Phasenverschiebung Lastabhängig ist, d.h. je mehr Strom man aus dem Trafo zieht, um so stärker wird sie. Also muss man entweder sicher sein, dass die entnommene Leistung fast konstant ist, oder man hat fast keine Chance, das sauber hinzukriegen. So long, Sebastian
Der Umstieg von 8-Bit-Timer auf 16-Bit-Timer war die Lösung. Damit hast Du nicht nur die 12us zuviel behoben, sondern auch ein viel größeres Problem: je nachdem, auf welchem Wert der Prescaler beim Nulldurchgang-IR steht: Wenn der Prescaler kurz vor dem Nulldurchgang übergelaufen war, dann dauert es bis zu 1024 / 8000000Hz = 128us bis zum nächsten Timer-Tick, d.h. bis der Timer von Null nach 1 zählt. Wenn der Prescaler kurz vor dem Überlaufen ist, dann kommt der Timer-Tick direkt nach dem Nullsetzen des Timers. Diese 128us zeitliche Ungenauigkeit hast Du durch den Umstieg auf den 16-Bit-Timer jetzt nicht mehr. Viele Grüße, Stefan
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.