mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Open Drain + Hardware PWM


Autor: Michael F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das irgendwie auf das DDR Register umzubiegen?

Das geht nicht.

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Leiterbahn auftrennen, etwas Lötstopplack runterkratzen und eine 
4148 drauflöten?

Autor: Michael F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.