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?
Normalerweise analogWrite(pin, value) invertiert analogWrite(pin, 255-value)
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)
Hallo, entweder Du invertierst das digitale PWM-Signal oder gibst die analoge Spannung auf einen geeigneten Subtrahierer mit OPV. https://www.mikrocontroller.net/articles/Operationsverst%C3%A4rker-Grundschaltungen mfG
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.
Beitrag #5240007 wurde vom Autor gelöscht.
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
Arduino F. schrieb: > Und ich habe deinen Plan mal zu einem "Richtigen Inverter" umgemalt Danke an euch alle. Ich probier es gleich mal aus.
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.
Beitrag #5240060 wurde vom Autor gelöscht.
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: > Ein zweiter Transistor ist flüssiger als Wasser. > Überflüssig. Lass ihn, der trollt doch nur.
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?
Offtopic: Ich habe gerade gelernt, dass man bei STM32F1 einfach nur ein Bit in einem Register setzen muss, um das Signal zu invertieren.
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?
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Leider habe ich kein Datenblatt dazu, nur die wenigen Informationen aus dem eBay Shop https://m.ebay.de/itm/350mA-1W-LED-Treiber-PWM-Light-Dimmer-DC-DC-5-35V-Step-Down-Module/152713284402?hash=item238e6bcb32:g:OW8AAOSwna1ZxPLX
Dann nimm dir mal ne Lupe und erzähl uns, was auf dem 8-Pinner draufsteht. Vielleicht lässt sich damit was anfangen.
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.
:
Bearbeitet durch User
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.
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.