Guten Abend liebe Forengemeinde.
Dies ist mein erster Beitrag in eurem Forum, wobei mich seit längerem
zahlreiche Recherchen zu eurem Forum geführt haben und diese dann auch
zur Zufriedenheit beantwortet wurden.
Leider ergab eine gründlich Recherche zu folgendem Thema kein sinnvolles
Ergebnis.
Ich stehe vor folgendem Problem:
Ich möchte mittels eines PWM-Signals meines Arduino Nano eine
Konstantstromquelle ansteuern (integrierter PWM-Eingang).
Die KSQ reduziert bei steigender Spannung am PWM-Eingang die Helligkeit
der LED. Leider ist die "fertige" (nicht von mir erstellte)
Programmierung so geschrieben, das bei LED=Aus der PWM-Ausgang auch 0V
hat.
Das bedeutet, die LED ist an wenn sie ausgeschaltet sein sollte...
Softwaretechnich möchte und kann ich dies auch nicht ändern (zu wenig
Erfahrung mit C++).
Ich bervorzuge eine Hardwareseitige Lösung, da die LED beim Einschalten
des Arduino bis zur dessen Bereitschaft, wegen fehlenden PWM-Signal
direkt leuchten würde. Auch wenn der Arduino resettet werden sollte geht
die LED damit an.
Deshalb die Frage an euch. Wie bastele ich mir kostengünstig eine
Schaltung, die das PWM-Signal genau invertiert? Also bei PWM=0V -> 5V
und PWM=5V -> 0V. Auch die Zwischenbereiche möchte ich möglichst
abdecken, also PWM=3V -> 2V
Ich danke euch im Voraus für die Mühe! :)
Robert schrieb:> Softwaretechnich möchte und kann ich dies auch nicht ändern (zu wenig> Erfahrung mit C++).
Du könntest das PWM-Signal invertieren.
Aber meinst du nicht, eine Programmzeile mit
1
y' = 1 - y
oder wie auch immer dein PWM-Signal normiert ist, wäre einfacher
einzufügen?
Das PWM-Signal hat exakt zwei Spannungen, 0V und 5V.
Spannungswerte dazwischen gibt es keine, die werden erst durch
Integration des Signals gebildet (d.h. je länger es auf 5V ist, desto
höher die resultierende Spannung).
Und damit ist die Aufgabe sehr einfach zu lösen:
Direkt zwischen den PWM-Ausgang des µCs und den daran angeschlossenen
Kram kommt ein einzelner Inverter, wie er sechsfach in einem 74xx04
enthalten ist (xx=HC, LS, AC, wasauchimmer).
Mit zwei Widerständen und einem Transistor lässt sich das Ziel auch
erreichen.
https://i.stack.imgur.com/5A9pw.gif
(hier wahlweise für einen NPN- und einen PNP-Transistor dargestellt)
Wolfgang schrieb:> Du könntest das PWM-Signal invertieren.> Aber meinst du nicht, eine Programmzeile mity' = 1 - y oder wie auch> immer dein PWM-Signal normiert ist, wäre einfacher einzufügen?
Sicherlich wäre dies einfacher. Das Programm was ich da erhalten habe
ich jedoch sehr komplex. Außerdem steht ja noch das Problem mit der
Bootzeit des Ardunio im Raum. Gibt es keine einfache Schaltung?
Robert schrieb:> Gibt es keine einfache Schaltung?
Das kommt drauf an, was während des Bootens am Steuereingang der KSQ
passieren muss, damit alles glatt läuft.
Robert schrieb:> Gibt es keine einfache Schaltung?
Ja, das, was Rufus dir vorgeschlagen hat: Transistor und 2 Widerstände
oder ein Inverter-IC und ein Stützkondensator.
Christian S. schrieb:> entweder Du invertierst das digitale PWM-Signal oder gibst die analoge> Spannung auf einen geeigneten Subtrahierer mit OPV.
Aus einem Arduino kommt keine analoge Spannung. Was die analog nennen,
ist eine PWM.
Arduino F. schrieb:
> NPN + zwei R
Ist nicht wirklich ein Inverter, da high und low mit unterschiedlichen
Impedanzen getrieben werden.
Es gibt allerdings schön kleine Single-Gate Inverter, die sowohl high
als auch low treiben.
Beispiel: NC7S04M5X
Gibt's z.B. bei Conrad für 50 Cent.
Den Inverter setzt du einfach zwischen den Ausgangspin und den
Lowpass-Filter (RC).
Zwischen VCC und GND des ICs kommt dann noch ein 100nF
Stütz-Kondensator.
Wenn dir DIL lieber ist: z.B. CD74HC4049E
Joe F. schrieb:> Den Inverter setzt du einfach zwischen den Ausgangspin und den> Lowpass-Filter (RC).
Ich bezweifle mal, daß da sowas drin ist. Die KSQ wird mit PWM gesteuert
und dem hochohmigem Eingang dürfte das
Joe F. schrieb:> Ist nicht wirklich ein Inverter, da high und low mit unterschiedlichen> Impedanzen getrieben werden.
egal sein.
Thomas E. schrieb:> Aus einem Arduino kommt keine analoge Spannung. Was die analog nennen,> ist eine PWM.
Das kommt drauf an, was das für ein Arduino das ist. Der Due hat zwei
echte Analogausgänge.
Wolfgang schrieb:> Das kommt drauf an, was das für ein Arduino das ist. Der Due hat zwei> echte Analogausgänge.
Ok.
Aber der TO schrieb oben erstens vom Nano und zweitens vom PWM-Eingang
der KSQ.
Robert schrieb:> Gibt es keine einfache Schaltung?
Ich habe hier mal einen Inverter aufgetrieben der in Wirklichkeit gar
nicht invertiert. Erst wenn man die LED parallel zum Transistor schaltet
wird invertiert. Oder man dreht die Schaltung auf dem Kopf und baut
statt eines NPN-Transistors einfach einen PNP-Transistor (BC327) ein.
Vielleicht reicht es aber auch aus, wenn die LED am Ausgang von dem
PWM-Signal nach Vcc geschaltet wird, statt nach Masse. Dann wird ja
automatisch invertiert? Ganz ohne Schaltung.
Der falsche MaWin schrieb:> Vielleicht reicht es aber auch aus, wenn die LED am Ausgang von dem> PWM-Signal nach Vcc geschaltet wird, statt nach Masse. Dann wird ja> automatisch invertiert? Ganz ohne Schaltung.
Vielleicht hättest du mal den Eröffnungsbeitrag lesen sollen.
Der falsche MaWin schrieb:> Ich habe hier mal einen Inverter aufgetrieben der in Wirklichkeit gar> nicht invertiert.
Und ich habe deinen Plan mal zu einem "Richtigen Inverter" umgemalt
Thomas E. schrieb:> Vielleicht hättest du mal den Eröffnungsbeitrag lesen sollen.Robert schrieb:> Auch die Zwischenbereiche möchte ich möglichst> abdecken, also PWM=3V -> 2V
Da ein PWM-Signal ohne nachgeschalteten Tiefpass keine Zwischenbereiche
hat, ist meine Lösung also die Beste.
Arduino F. schrieb:> Und ich habe deinen Plan mal zu einem "Richtigen Inverter" umgemalt
Jaa genau, das ist noch besser. Und jetzt könnte noch mein falscher
Inverter dahinter geschaltet werden, damit die LED mit dem invertierten
Signal richtig angesteuert werden kann.
Der falsche MaWin schrieb:> damit die LED mit dem invertierten> Signal richtig angesteuert werden kann.
Vielleicht hättest du mal den Eröffnungsbeitrag lesen sollen.
Arduino F. schrieb:> Vielleicht hättest du mal den Eröffnungsbeitrag lesen sollen.
Wieso, was ist denn jetzt schon wieder? Hab ich doch gemacht, sonst
wüsste ich das doch alles gar nicht.
Arduino F. schrieb:> Und ich habe deinen Plan mal zu einem "Richtigen Inverter" umgemalt
So...
Ich habe die Zeichnung mal in den Simulator geworfen.
Funktioniert hier Prima :)
Um die annähernd genaue Umwandlung von 5V->0V und 0V->5V habe ich einen
60 Ohm Kollektorwiderstand eingesetzt. Der Basiswiderstand 4k7 ist
geblieben.
Bei einer Basisspannung von 5V (LED an) fließt theoretisch ein
Kollektor-Emiter-Strom von 81mA.
Ist das noch vertretbar mit einem Handelsüblichen Transistor?
Robert schrieb:> Um die annähernd genaue Umwandlung von 5V->0V und 0V->5V habe ich einen> 60 Ohm Kollektorwiderstand eingesetzt. Der Basiswiderstand 4k7 ist> geblieben.
Das ist das, was ich meine.
Mit einem Push-Pull Inverter hast du dieses Problem nicht. Da high und
low die gleiche Impedanz haben, handelt man sich keine Asymmetrie ein.
> Bei einer Basisspannung von 5V (LED an) fließt theoretisch ein> Kollektor-Emiter-Strom von 81mA.> Ist das noch vertretbar mit einem Handelsüblichen Transistor?
Kommt auf die Sichtweise an. Der Transistor wird es überleben, aber du
erzeugst dir unnötige Pulse auf der Versorgungsspannung.
Und der Kollektorwiderstand muss im Zweifel 1/2 W verheizen können.
Die 80mA benötigst du ja auch nur, wenn deine KSK einen relativ
niederohmigen PWM Eingang hat.
Mit welcher Impedanz hast du den Low-Pass der KSK denn angenommen /
simuliert?
Der falsche MaWin schrieb:> Da ein PWM-Signal ohne nachgeschalteten Tiefpass keine Zwischenbereiche> hat, ist meine Lösung also die Beste.
Das kommt drauf an, wovon man redet.
Der Mittelwert vom PWM liegt zwischen 0 und 100% des Signalpegels ;-)
Robert schrieb:> Um die annähernd genaue Umwandlung von 5V->0V und 0V->5V habe ich einen> 60 Ohm Kollektorwiderstand eingesetzt.
Warum so ein kleiner Widerstand. Auch wenn du 1A fließen lässt, wirst du
nicht genau 5V erreichen und die 0V schon gar nicht, weil U_CE eher bei
0.3V liegt - genaueres im Datenblatt.
Welchen Pegel braucht denn deine KSQ am Steuereingang?
Normalerweise liegt die Schaltschwelle bei 50%, manchmal für High bei
70%.
Stefan U. schrieb:> Offtopic: Ich habe gerade gelernt, dass man bei STM32F1 einfach nur ein> Bit in einem Register setzen muss, um das Signal zu invertieren.
Das macht man bei der PWM beim AVR auch. Jetzt hast du schon wieder was
gelernt.
Joe F. schrieb:> Die 80mA benötigst du ja auch nur, wenn deine KSK einen relativ> niederohmigen PWM Eingang hat.> Mit welcher Impedanz hast du den Low-Pass der KSK denn angenommen /> simuliert?
Die KSQ hat tatsächlich einen sehr niederohmigen PWM-Eingang. Ich habe
einfach aus Versuchszwecken einen 5k Wiederstand an den GND des PWM
Eingangs gelegt.
Wolfgang schrieb:> Welchen Pegel braucht denn deine KSQ am Steuereingang? Normalerweise> liegt die Schaltschwelle bei 50%, manchmal für High bei 70%.
Das ist eine Interessante Frage. Ich nahm bisher an das der PWM Eingang
eine Dimmfunktion beinhaltet. Also bei niedriger Eingangsspannung am PWM
Eingang ein höherer Ausgangsstrom am LED Ausgang
Robert schrieb:> Ich nahm bisher an das der PWM Eingang> eine Dimmfunktion beinhaltet.
Wenn das wirklich ein PWM-Eingang ist, liegt die Steuerinformation im
Tastverhältnis und nicht im (genauen) Spannungspegel.
Vielleicht solltest du erstmal klären, was die Kiste braucht.
Robert schrieb:> Die KSQ hat tatsächlich einen sehr niederohmigen PWM-Eingang. Ich habe> einfach aus Versuchszwecken einen 5k Wiederstand an den GND des PWM> Eingangs gelegt.
Lass mal das Datenblatt von der KSQ rüberwachsen. Ich befürchte mal, daß
mindestens einer in diesem Thread ganz gehörig auf dem Holzweg ist.
Robert schrieb:> Die KSQ hat tatsächlich einen sehr niederohmigen PWM-Eingang. Ich habe> einfach aus Versuchszwecken einen 5k Wiederstand an den GND des PWM> Eingangs gelegt.
Also das klingt recht ungewöhnlich.
Entweder ist es ein reiner Digitaleingang, dann reicht auch ein PWM
Pegel von 1V/4V, oder hinter dem Eingang liegt erstmal ein
Tiefpassfilter, der aus dem Eingangssignal ein Analogsignal macht.
Um das herauszufinden, hilft entweder das Datenblatt, oder ausprobieren.
Wenn man die LED Helligkeit durch Anlegen einer analogen Spannung
zwischen 0V und 5V "stufenlos" dimmen kann, dann ist es die
"Tiefpass-Variante".
Dann könnte man allerdings auch noch einen zusätzlichen Widerstand in
Reihe legen, macht die Regelung zwar etwas träger, braucht dann aber
nicht mehr so gewalttätige Ströme.
Joe F. schrieb:> Wenn man die LED Helligkeit durch Anlegen einer analogen Spannung> zwischen 0V und 5V "stufenlos" dimmen kann, dann ist es die> "Tiefpass-Variante".
Es scheint sich doch um einen reinen Digitaleingang zu handeln. Ich habe
eine 1,5 Volt batterie an den PWM gehalten und die KSQ hat die LED
komplett ausgeschaltet.
Sry für die Missverständnisse
Thomas E. schrieb:> Dann nimm dir mal ne Lupe und erzähl uns, was auf dem 8-Pinner> draufsteht. Vielleicht lässt sich damit was anfangen.
Das kann ich mit viel Licht auch mit bloßem Auge sehen.
XLSEMI
XL4001E1
22NR
http://www.xlsemi.com/datasheet/XL4001%20datasheet.pdf
Die PWM geht einfach auf den Enable-Eingang (digital).
Alles über 1.4V wird als "high" erkannt.
Nimm einfach den 1K Kollektorwiderstand. Das muss funktionieren und es
wird auch keinerlei "Verzerrungen" der PWM geben.
Die 0.8V für ein "low" machen evtl. mehr Probleme mit dem NPN
Transistor.
Du könntest stattdessen auch einen 2N7002 Fet nehmen, der schaltet
deutlich besser auf 0V.
Robert schrieb:> Das kann ich mit viel Licht auch mit bloßem Auge sehen.
Respekt.
Check mal, ob der PWM-Eingang auf Pin 6 von dem Fiffi geht. Das würde
sich mit dem oben beschriebenen Verhalten decken.
Joe F. schrieb:> Die 0.8V für ein "low" machen evtl. mehr Probleme mit dem NPN> Transistor.
Die U_CE eines vernünftig durchgesteuerten NPN-Transistors liegt doch
locker unter dem als V_EN Low-Wert angegebenen 0,8V. Wieso hast du da
Bedenken?
Bei einem BC547 liegt die z.B. typisch bei 0,09V, maximal bei 0,25V
(@10mA).
Und selbst 10mA wären für diese Anwendung noch mehr als reichlich.
Rufus Τ. F. schrieb:> Mit zwei Widerständen und einem Transistor lässt sich das Ziel auch> erreichen.
Eher nicht, so ein RTL-Inverter ist bestenfalls für statische Signale
geeignet. Die Laufzeiten sind gegenüber TTL oder CMOS vielfach höher und
stark unsymmetrisch.
Eine PWM hat einen recht hohen Basistakt, d.h. das Tastverhältnis wird
massiv verfälscht.
Peter D. schrieb:> Eine PWM hat einen recht hohen Basistakt, d.h. das Tastverhältnis wird> massiv verfälscht.
Na ja, beim Arduino 8-Bit PWM mit seinen 490Hz liegt der Basistakt bei
125kHz. Für einen 1-Bit Fehler müsste die Unsymmetrie schon etwa 8µs
betragen. Und ob das bei einem Lampendimmer auffällt, ist noch die
zweite Frage.