Hallo miteinander, in meinem aktuellen Projekt habe ich leider mal wieder einen mittelgroßen Bock geschossen. Inhalt des Projekts ist es unter anderem, 4 1W LEDs per PWM zu dimmen. Als Konstantstromquelle kommt jeweils ein ZXLD360 zum Einsatz. Leider habe ich im Datenblatt des ZXLDs übersehen, das der ADJ Pin (Der "PWM Eingang") nicht mit einer Spannung von 5V angesteuert werden darf, sondern nur mit 1,25V - diese Spannung wird sogar vom pin selbst bereit gestellt um muss also theoretisch nur durch das PWM Signal nach Masse gezogen werden. So weit so gut, ich sitze hier mitlerweile vor einer fertig bestückten Platine auf der die ADJ Pins direkt auf die entsprechenden Hardware PWM Ausgänge eine Mega128 geführt sind. Jetzt habe ich durch einige suche hier im Forum herausgefunden, das es mit Hilfe der DDR Register möglich ist einen Open Drain Ausgang zu "simulieren". Meine Frage ist nun, ob ich das auch irgendwie in verbindung mit Hardware PWM hinbekomme, denn überlicherweise schaltet mir die ja bei einem Compare den Pin Zustand. Habe ich die Möglichkeit das irgendwie auf das DDR Register umzubiegen? Ansonsten werde ich wohl in den sauren Apfel beißen müssen und jeweils einen Transistor oder ähnliches dazwischen einzulöten, das würde ich allerdings sehr gerne vermeiden ;) Gruß Micha
Prinzipiell ist es schon möglich einen Open Drain Ausgang zu simulieren, in dem man den Ausgang fest auf 0 setzt und anschliesend nur zwischen Ein- und Ausgang wechselt. Das geht dann allerdings nicht mehr über eine Hardware-PWM sondern nur noch über eine Software PWM. Das sollte aber bei den für Dimmen üblichen PWM Frequenzen kein Problem darstellen.
Die Leiterbahn auftrennen, etwas Lötstopplack runterkratzen und eine 4148 drauflöten?
Vielen Dank für die schnellen Antworten! Software PWM kommt aus einigen Gründen nicht in Frage, hauptsächlich weil ich eine möglichs hohe Auflösung brauche um die Helligkeit der LEDs zu "linearisieren", das ist mit 10 Bit auflösung schon recht grob. Und alles über 10 Bit Software PWM beschäftigt den Controller doch etwas zu sehr, der hat ansonsten noch genug zu tun ;) Trotzdem danke für den Vorschlag. Die Lösung mit der Diode klingt allerdings sehr gut, da wäre ich nicht drauf gekommen! :) Ich werde vorsichtshalber mal zu Schottky Dioden greifen, dann komme ich Spannungstechnisch noch ein bischen näher an GND ran... Gruß Micha
Die Idee mit der Diode wird hier warscheinlich nicht zufriedenstellend funktionieren, da der IC zum Abschalten einen Pegel unter 0,2V erwartet. Aber einen Versuch ist es wert. Aber um nochmal auf die Software Geschichte zurückzukommen. Du kannst für die PWM durchaus einen Hardware-Timer nutzen, allerdings musst du den entsprechenden Eintrag im DDR-Register manuel in den Service-Routinen für den Overflow- bzw. Compare-Interrupt setzten bzw. rücksetzten. Damit sollte auf jeden Fall eine höhere Auflößung als bei einer reinen Software PWM möglich sein.
Dank des sehr geringen Stroms der durch die Diode fließt (Im Bereich einiger µA, begrenzt durch den IC) beträgt der Spannungsabfall an der Diode (BAT 85) nur gemessene 90-100 mV. Das reicht jedenfalls aus um den ZXLD1360 dazu zu überreden den Strom komplett abzuschalten ;) @Fritz: Du hast natürlich Recht, ich wäre ja nicht gezwungen reine Soft-PWM zu nutzen. Trotz allem bin ich froh das ich nun bei einer kompletten Hardware Lösung bleiben kann, das erspart mir zumindest ein bischen Programmierarbeit und schont die Controller-Ressourcen! Ich sag auf jeden Fall noch mal Danke für eure Hilfe! :) Gruß
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.