Forum: Mikrocontroller und Digitale Elektronik Zwei LED unabhängig voneinander mit nur einem µC Ausgang ansteuern - geht das?


von Frank S. (hobbyist)


Lesenswert?

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

von Karl M. (Gast)


Lesenswert?

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 ?

von Karl M. (Gast)


Lesenswert?

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.

von Chris R. (hownottobeseen)


Lesenswert?

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

von Ralf G. (ralg)


Lesenswert?

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 :)

von Ralf G. (ralg)


Lesenswert?

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.

von Ralf G. (ralg)


Lesenswert?

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.

von Karl M. (Gast)


Lesenswert?

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

von Teo (Gast)


Lesenswert?

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.

von Ja (Gast)


Lesenswert?

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
...

von Wolfgang (Gast)


Lesenswert?

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.

von Kondi (Gast)


Lesenswert?

Oder ws2812, ist nichttp größter als zwei 0805 LEDs und du hast sogar 
drei Farben.

von Ralf G. (ralg)


Lesenswert?

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.)

von Wolfgang (Gast)


Lesenswert?

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.

von BirgerT (Gast)


Lesenswert?

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.

von suizidbastler (Gast)


Lesenswert?

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.

von Thomas E. (picalic)


Lesenswert?

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...

von Dominik J. (d-r-j)


Lesenswert?

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?

von c-hater (Gast)


Lesenswert?

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...

von Jonas G. (jstjst)


Lesenswert?

Hast du noch mehr LEDs an deinem Controller?
Zeig mal eienen kompletten Schaltplan.

von Verzweifelter Junior Elektroniker (Gast)


Lesenswert?

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

von Charlieplexing (Gast)


Lesenswert?


von Ja (Gast)


Lesenswert?

Verzweifelter Junior Elektroniker schrieb:
> Schieberegister

Charlieplexing schrieb:
> Charlieplexing


Mit nur einem IO wird das nicht gehen.

von Bestromer (Gast)


Lesenswert?

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....

von Karl M. (Gast)


Lesenswert?

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 !

von Wolfgang (Gast)


Lesenswert?

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?

von Joachim B. (jar)


Lesenswert?

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.

von BirgerT (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

Ob Frank seinen µC mit 5V betreibt, steht völlig in den Sternen :-(

von Frank S. (hobbyist)


Lesenswert?

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

von Teo D. (teoderix)


Lesenswert?

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.

von Konrad S. (maybee)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Hase (Gast)


Lesenswert?

Lösung wurde doch schon längst gepostet


        ^ Vcc
        |
        v LED
        |
Port ---+
        |
        v LED
        |
        _ GND

von c-hater (Gast)


Lesenswert?

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.

von Gerhard O. (gerhard_)


Lesenswert?


von Amateur (Gast)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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.

von qwertzuiopü+ (Gast)


Lesenswert?

Joachim B. schrieb:
> ultra hellen LEDs um 1mA

> OK es fehlt der Rv

Fällt dir was auf ;-)

von Frank S. (hobbyist)


Lesenswert?

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
Noch kein Account? Hier anmelden.