Ich suche nach einer Möglichkeit, mit nur einem PWM-Pin (mehr habe ich nicht mehr frei) zwei LED Farben (rot und grün) unabhängig voneinander anzusteuern. Die LED müssen 0805 sein. Ist das mit überschaubarem Aufwand möglich und falls ja, wie genau stellt man das an? Frank
Hallo, wie viele Zustände man kann 1 Bit darstellen ? Genau 2. Für 2 LED benötigst Du aber 4 Zustände: grün E{0,1} und rot E{0,1} Alles klar ?
Hallo, eine weitere Idee, ist mit dem PWM Signal eine über einen TP-Filter gefilterte Spannung und einige Komparatoren, eine spannungsabhängige Ansteuerung zu realisieren. Der Zustand K E { (0,0), (0,1), (1,0), (1,1) } ist als Zustandstupel der LED dargestellt.
Hallo, man kann mit einem Portpin zwei LEDs ansteuern - wenn auch mit Kompromissen. der Trick ist, die beiden LEDs seriell zwischen Versorgung und Masse einzubringen, so in etwa:
1 | ^ Vcc |
2 | | |
3 | v LED |
4 | | |
5 | Port ---+ |
6 | | |
7 | v LED |
8 | | |
9 | _ GND |
Vorzugsweise mit passenden Vorwiderständen an den LEDs. die Bedingung, dass nicht beide gleichzeitig leuchten ist, dass Vcc nicht größer als die Summe der Vorwärtsspannungen der LEDs ist (man kann sich auch mit Z-Dioden behelfen). Ist der Portpin nun Z (also zum Beispiel Eingang), reicht die Spannung nicht, beide zum leuchten zu bewegen. Ist der Pin Low, leuchtet die obere LED, ist der Pin High die untere. Beide gleichzeitig geht natürlich nicht, nur mit einem duty-cycle von 50 % leuchten beide, dann halt dunkler. Um immer die gleiche Helligkeit zu haben, kann man zwischen High und Z bzw. Low und Z umschalten. Mit PWM dürfte es bei den meisten Mikrocontrollern allerdings duster aussehen. Unterm Strich würde ich aber empfehlen, entweder einen Portextender oder gleich einen Controller mit etwas mehr Ausgängen zu nehmen. Vielleicht bringt dich auch eine Lektüre von cpldcpu auf Ideen: https://cpldcpu.wordpress.com/2015/05/24/plexingplus/ HTH Chris
Kommt darauf an, wie unabhängig das sein soll. So grob: LEDs jeweils mit Vorwiderstand in Reihe. Am 'Mittelabgriff' µC-Pin. Dann könnte man von 100% rot über 50% gelb nach 100% grün (fast) stufenlos einstellen. Nur aus geht's nicht mehr :)
Chris R. schrieb: > so in etwa: genau. :) Chris R. schrieb: > Ist der Portpin nun Z (also zum Beispiel Eingang), reicht die Spannung > nicht, beide zum leuchten zu bewegen. War/ Bin ich mir nicht ganz so sicher. Die Flussspannungen müssen deutlich unterschritten werden, sonst glimmt immer irgendwas.
Karl M. schrieb: > eine weitere Idee, ist mit dem PWM Signal eine über einen TP-Filter > gefilterte Spannung und einige Komparatoren, eine spannungsabhängige > Ansteuerung zu realisieren. Frank S. schrieb: > Ist das mit überschaubarem Aufwand möglich Chris R. schrieb: > gleich einen Controller mit etwas mehr Ausgängen So würde ich das zusammenfassen.
Hallo Frank, ach noch eine Idee, ich würde einen attiny85 als Slavre µC nehmen und ihn über den Master µC steuern. Einfach ist die Verwendung einer Software Uart mit 8,none,1. Wenn einem 7 Bit PWM Auflösung reichen kann man über Bit 7 die LED adressieren und die Bit 6-0 sind die PWM Helligkeit. Bei mehr als 7 Bit PWM Auflösung besteht das Protokoll aus 2 Byte. 1 Byte: LED Adresse, evtl. high PWM Bits 14-8 2 Byte: low PWM Bits 7-0
Zwei Filter, Hoch/Tiefpass, dahinter Treiber+LED. Multiplexen mittels deutlich unterschiedlichen PWM-Frequenzen (natürlich zu den Filter passend). So sollte es möglich sein beide LEDs zu dimmen.
Frank S. schrieb: > Zwei LED unabhängig voneinander mit nur einem µC Ausgang ansteuern - > geht das? Auch huderte wenn's sein muss: - http://www.ti.com/lit/ds/symlink/tlc59731.pdf - http://datasheets.maximintegrated.com/en/ds/DS2408.pdf - https://www.adafruit.com/datasheets/WS2811.pdf ...
Ralf G. schrieb: > Dann könnte man von 100% rot über 50% gelb nach 100% grün (fast) > stufenlos einstellen. Nur aus geht's nicht mehr :) Das kommt auf die Versorgungsspannung drauf an. Wenn die Summe der V_f von den bei LEDs kleiner als die Versorgungsspannung ist, leucht da gar nichts. Auch kann man noch zusätzlich Dioden in Serie schalten, um das zu erreichen. Karl M. schrieb: > wie viele Zustände man kann 1 Bit darstellen ? > Genau 2. Stimmt. Und wieviel Zustände kann der Ausgang eines µC annehmen? Genau 3. Da sollte sich also etwas machen lassen. Wenn man die LEDs im Zeitmultiplex ansteuert, sogar völlig unabhängig. Voraussetzung s.o.: VDD < (V_f1 + V_f2 + V_fD) Frank S. schrieb: > (mehr habe ich nicht mehr frei) Alternativ könntest du deine gesamte Pin-Verteilung noch mal überdenken. Solange du die für dich behälst, ist der Lösungsraum eingeschränkt.
Wolfgang schrieb: > Das kommt auf die Versorgungsspannung drauf an. Sag' ich doch: Ralf G. schrieb: > Die Flussspannungen müssen > deutlich unterschritten werden, sonst glimmt immer irgendwas. (Ich könnte mir vorstellen, dass der µC-Pin als Eingang eben nicht so 'richtig aus' ist.)
Ralf G. schrieb: > (Ich könnte mir vorstellen, dass der µC-Pin als Eingang eben nicht so > 'richtig aus' ist.) Wozu gibt es Datenblätter? Beim ATmega328P steht zum Eingangsstrom z.B. ein Wert von max 1µA. Bei dem µC des TO kann das natürlich ganz anders aussehen, was aber eher unwahrscheinlich ist.
Eine Frage an die LTspice Profis - kann man einen TriState Ausgang auch simulieren? Ich denke da an einen "Spannungsteiler" aus zwei Kondensatoren zwischen UB und GND. Zwischen die beiden Kondensatoren werden die beiden LEDs antiparalel geschaltet und mit dem uc-Pin verbunden. Soll keine LED leuchten, dann ist der Ausgang ständig 1 o. 0 o. Tristate. Soll die eine LED leuchten wechselt der Ausgang zwischen Tristate und 0; für die andere LED Wechsel Tristate und 1 und wenn beide leuchten sollen, dann Wechsel zwischen 0 u. 1. Die Frage ist dann wie groß müssen die Kondensatoren sein, und mit welcher Frequenz ist zu takten (LTspice?). Das der Ausgang nicht über die normale PWM bedient werden kann ist wohl auch klar; bei der Timer Konfiguration kann der Ausgang nur auf PWM oder normale PIN Operation eingestellt werden. Und als PWM Out ist kein Tristate möglich.
BirgerT schrieb: > Eine Frage an die LTspice Profis - kann man einen TriState Ausgang auch > simulieren? > > Ich denke da an einen "Spannungsteiler" aus zwei Kondensatoren zwischen > UB und GND. Zwischen die beiden Kondensatoren werden die beiden LEDs > antiparalel geschaltet und mit dem uc-Pin verbunden. wenn die LEDs auf der einen Seite nur an Kondensatoren hängen, kann nur ein Wechselstrom fließen, d.h. entweder leuchten beide oder keine (von einem kurzen Aufleuchten mal abgesehen) Das sagt mir die Schaltungssimulation in meinem Kopf.
BirgerT schrieb: > Eine Frage an die LTspice Profis - kann man einen TriState Ausgang auch > simulieren? Klar, Du könntest es im Simulator einfach als das bauen, was es in der Realität auch ist, nämlich je ein Transistor, der nach Masse schaltet, und ein Transistor, der nach VCC schaltet. Wenn beide Transistoren sperren, ist das genau der Zustand des Ports als Eingang bzw. hochohmig...
Led antiparallel zwischen uc-Pin und der halben Versorgungsspannung. Ausgang High leuchtet eine LED, Ausgang Low leuchtet andere LED Ausgang auf Tristate beide LED aus Ausgang wechselt dauernd zwichen High und Low Beide LED Leuchten mit halber kraft kann das funktionieren?
Dominik J. schrieb: > kann das funktionieren? Natürlich, ist aber auch bloß eine Variante der weiter oben im Thread gegebenen Schaltungsvorschläge. Der springende Punkt ist immer die Uf der LEDs in Bezug auf die Versorgungsspannung. Während man bei den bisherigen Vorschlägen eher das Problem hatte, daß beide LEDs unerwünscht leuchten, hat man bei deinem Vorschlag ggf. das Problem, dass eine (oder beide) LEDs garnicht leuchten. Das ist eigentlich genauso Scheiße...
Wenn es nicht unbedingt PWM sein muss, könntest Du mit einem Schieberegister arbeiten. Wird aber ein wenig kompliziert, weil Du den Schieberegister noch takten müsstest
Zur Ansteuerung der LEDs kann man auch sowas machen man nennt es Charlieplexing. Beitrag "Charlieplexing mit PIC - wie den Strom erhöhen?" Beitrag "Charlieplexing Infos" http://www.elektronik-labor.de/AVR/Charlieplexing.html
Verzweifelter Junior Elektroniker schrieb: > Schieberegister Charlieplexing schrieb: > Charlieplexing Mit nur einem IO wird das nicht gehen.
Ja schrieb: > Mit nur einem IO wird das nicht gehen. ...aha, wie machen das dann die integrierten "Controller" wie die schon erwähnten (ws2812..ect), die letzten Endes auch nur zeitgesteuerte Schieberegister zur Datenerfassung nutzen? Und warum gefällt dem TO diese super einfache und direkt für diesen Zweck zugeschnittene Technik nicht....mittlerweile sind diese LEDs bei Ebay zu Dumpingpreisen zu haben....
Bisher hat sich Frank, nicht geäußert, so dass man sich nur an die in Post 1 gestellten Anforderungen halten kann. Ich bin gespannt, was es werden soll !
Bestromer schrieb: > ...aha, wie machen das dann die integrierten "Controller" wie die schon > erwähnten (ws2812..ect), die letzten Endes auch nur zeitgesteuerte > Schieberegister zur Datenerfassung nutzen? Vielleicht, weil Frank auf seiner 0805 Bauform besteht, in der es die WS2812 und Co definitiv nicht gibt. Dass er aus unerfindlichen Gründen seine sonstige Pinbelegung geheim hält und so alternativen Lösungsmöglichkeiten den Weg verbaut, ist ein anderes Problem. Eine Frage ist auch, was das mit seinem PWM-Pin auf sich hat?
Ralf G. schrieb: > So grob: > LEDs jeweils mit Vorwiderstand in Reihe. Am 'Mittelabgriff' µC-Pin. > Dann könnte man von 100% rot über 50% gelb nach 100% grün (fast) > stufenlos einstellen. Nur aus geht's nicht mehr :) aus geht doch wenn der Pin auf Eingang mit hoher Impedanz gestellt wird, der Wechsel von PWM zu "aus" dürfte auch zeitlich nicht ins Gewicht fallen.
Also so habe ich's gerade ausprobiert: 4 LEDs in Durchlassrichtung an 5,2 Volt und 220 Ohm Widerstand Rot Grün Rot Grün VCC --|>|----|>|--*--|>|----|>|-- GND | in -----[220]----* in = frei -> alle LEDs aus in = VCC oder GND -> es leuchten jew. 2 LEDs Die Durchlassspannung aller LEDS ist zu groß, als dass sie an den 5 Volt leuchten (Glimmen geht erst bei 6,5 Volt los). Die Paare Rot/Grün habe ich so gewählt, weil Rot und Grün unterschiedliche Durchlaßspannungen haben, und damit sich diese je Zweig ausgleichen.
Ob Frank seinen µC mit 5V betreibt, steht völlig in den Sternen :-(
Vielen Dank für die vielen Ideen und Links. Nach meinem Urlaub bin ich im Moment so stark eingebunden, dass ich zur Zeit nicht dazu komme, das alles zu testen. Um einige Fragen zu beantworten: Es geht jetzt schon sehr eng zu, daher sollte es 0805 sein. Für ein Schieberegister wird nicht genügend Platz vorhanden sein. Der ATtiny (wahrscheinlich 45 oder 85) wird mit USB 5V laufen. Die fünf I/O haben folgende Funktion (mit den Zahlen sind die Funktionen, nicht die Pins gemeint): 1. überwachen einer externen Spannung über einen Spannungsteiler 2. hier wird ein Taster angeschlossen, über den die Zustände von 3 und 4 gesteuert werden 3. schaltet einen MOSFET 4. schaltet einen weiteren MOSFET 5. hier soll eine LED durch Blinken und/oder Faden den Zustand von 3 und 4 signalisieren. Sollte die Spannung von 1. unter einen Schwellwert fallen, soll eine zweite (rote) LED (wenn möglich) schnell blinken, um dies sofort anzuzeigen. Die zweite, rote LED ist kein Muss und wird nur installiert, wenn es, wie im ersten Beitrag erwähnt, mit überschaubarem Aufwand möglich ist, da nur noch sehr wenig Platz vorhanden ist. Frank
Zu 5. Wenn's nicht unbedingt blinken muss braucht's keinen Ausgang vom µC. Die Ansteuerung kannst Du doch direkt von den Fets gewinnen. Platzsparend wäre da eine Dual LED => Rot, Grün, Gelb.
Wenn es nicht stört, dass eine der LEDs bei gedrücktem Taster leuchtet, dann kannst du mit dem Taster-Pin zusätzlich eine LED ansteuern.
Frank S. schrieb: > 1. überwachen einer externen Spannung über einen Spannungsteiler > 2. hier wird ein Taster angeschlossen, über den die Zustände von 3 und 4 > gesteuert werden > 3. schaltet einen MOSFET > 4. schaltet einen weiteren MOSFET > 5. hier soll eine LED durch Blinken und/oder Faden den Zustand von 3 und > 4 signalisieren. Sollte die Spannung von 1. unter einen Schwellwert > fallen, soll eine zweite (rote) LED (wenn möglich) schnell blinken, um > dies sofort anzuzeigen. Das ist der klassische Fall von "nicht mal ansatzweise durchdacht". Erstens sehe ich hier nur 5 Funktionen, die von dir genannten µC haben aber 6 IO-Pins. D.h.: man braucht nur den Reset-Pin als IO benutzen, und der Drops ist völlig komplikationslos gelutscht. Der einzige Nachteil: die Software sollte wirklich fertig sein, wenn man sie per SPI draufflasht und dann die Fuse für den Reset-Pin als IO setzt... ... Aber auch, wenn man nicht in der Lage ist, wirklich fertige Software zu schreiben, gibt es natürlich Lösungen, die Sache mit nur 5 Pins abzuhandeln. Mit den beiden Pins von Funktion 2 (Taster) und Funktion 5 (Signal-Leds) kann man nämlich z.B. recht problemlos sowohl zwei LEDs ansteuern als auch einen Taster abfragen. Und das geht so: 220(*) Je nach LEDs und Steuerschema PinA o--===-*-|<- | | ->|-* | PinB o-----------* | --===-- | 10k o /Ta o | --- Damit sind drei sinnvolle Zustände möglich: 1) Beide Pins auf Eingang, interner Pullup von PinB aktiviert ->LEDs beide aus, Taster kann über PinB abgefragt werden. 2) PinA High und PinB Low->eine LED leuchtet. 3) PinA Low und PinB High->die andere LED leuchtet. Nun braucht man bloß noch sinnvoll (nämlich zyklisch wiederholt) Zustände herzustellen. Im einfachsten Fall umfaßt so ein ein Zyklus dann drei Zustände. Z.b.: 111 Beide LEDs aus, zu beliebigen Zeitpunkt Tasterabfrage möglich. Sinnvollerweise wird man aber festlegen, daß immer nur eine Phase im Zyklus für die Tasterabfrage zuständig ist, z.B. immer die erste. Dann ergeben sich nämlich folgende andere sinnvolle Zyklen, bei denen aber auch immer in der jeweils ersten Phase des Zyklus die Abfrage des Tasters erfolgt: 121 Eine LED leuchtet mit 1/3 Helligkeit 131 Die andere LED leuchtet mit 1/3 Helligkeit 123 Beide LEDs leuchten mit 1/3 Helligkeit 122 Die eine LED leuchtet mit 2/3 Helligkeit 133 Die andere LED leuchtet mit 2/3 Helligkeit So, das kann man dann noch erweitern, um z.B. die LEDs heller leuchten zu lassen oder ihre Helligkeit in feineren Abstufungen steuerbar zu machen. Das einzige, was man dazu ändern muß, ist die Software, ein Zyklus muß einfach mehr Phasen umfassen, es bleibt aber immer bei den drei grundsätzlich möglichen Zuständen, sie werden nur zeitlich immer anders kombiniert.
Hase schrieb: > Lösung wurde doch schon längst gepostet > > > ^ Vcc > | > v LED > | > Port ---+ > | > v LED > | > _ GND Mal abgesehen davon, daß das SO ein ziemlicher sicherer Weg ist, den Port kaputt zu machen: Du hast nicht annähernd die weit darüber hinausgehenden Möglichkeiten "meines" Ansatzes begriffen. Die Anführungszeichen sollen übrigens darauf hinweisen, daß es sich natürlich nicht wirklich meine Idee ist, sondern einfach nur eine etwas unkonventionelle und auf das konkrete Problem zugeschnittene Anwendung des allgemeinen und grundlegenden Prinzips des Zeit-Multiplexing.
Hier ist ein Beitrag zum Thema: http://electronicdesign.com/lighting/circuit-controls-two-leds-one-microcontroller-port-pin mfg, Gerhard
Mit "richtiger" Elektronik, am Ausgang, kein Problem! 4 oder mehr verschiedene Ausgangsspannungen "dekodieren"... Alternativ: Vielleicht hast Du ja doch noch einen Ausgang frei und weist es nur nicht? Einen existenten, als "normalen" Schalter verwendeten, Ausgang mit Deinem "Restposten" verknüpfen und gut ist. Zwei Ausgänge gleich vier Stati.
c-hater schrieb: > Mal abgesehen davon, daß das SO ein ziemlicher sicherer Weg ist, den > Port kaputt zu machen: mit ultra hellen LEDs um 1mA mit Sicherheit nicht, OK es fehlt der Rv, das war es aber auch.
Ich möchte noch einmal den Vorschlag aufgreifen, eine WS2812B zu nehmen. Bisher kannte ich die nur als "Meterware", aber nicht als einzelne LED. Damit könnte ich sogar noch weitere Farben realisieren. So wie ich die Beschaltung verstanden habe, muss zwischen Vcc und GND ein 100nF Kondensator geschaltet werden. Ich würde die LED mit an die 5V Spannung anlegen wollen, an der auch der ATtiny hängt. Muss bei dieser LED ein Widerstand zwischen den µC und den LED-Eingang? Die Schaltbilder, die ich dazu gefunden habe sind mal wieder widersprüchlich und im Datenblatt habe ich dazu keine Info gefunden. Frank
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.