Forum: Mikrocontroller und Digitale Elektronik Zwei LEDs und ein Taster über eine zweiadrige Leitung?


von Maxi (Gast)


Lesenswert?

Hallo,

ich möchte gerne einen Taster und zwei LEDs (rot, blau) über eine 
einfache zweiadrige, abgeschirmte Leitung ("Mikrofonkabel") an einen 
Atmel AVR anschließen. Das ganze soll eine Art "Status-Anzeige und 
Selbsttest-Knopf" für ein weiter entferntes Meßgerät sein.

Die beiden LEDs sollten einzeln ansteuerbar sein, aber sie müssen nicht 
unbedingt gleichzeitig leuchten können. Wenn der Taster gedrückt ist, 
müssen die LEDs ebenfalls nicht unbedingt leuchten. Deshalb wollte ich 
so vorgehen:

Die LEDs antiseriell schalten und den Taster parallel zu dieser 
Schaltung. Diese Konstruktion über die zweiadrige Leitung an das Gerät 
anschließen. Die "LED-Kette" ist über einen Vorwiderstand an zwei 
Portpins angeschlossen. Wenn ich einen High und den anderen Low setze, 
sollte eine der beiden LEDs leuchten. Setze ich beide gleich, leuchtet 
keine LED.

Soweit richtig?

Wie kann ich zusätzlich den Taster auswerten? Gibt es eine Möglichkeit, 
die ohne zusätzlichen Portpin auskommt? Wie unterscheide ich zwischen 
einem Kurzschluß (Taster gedrückt) und dem normalen Spannungsabfall über 
die LED?

Komme ich mit 3,3V am µC aus? Eher nicht, oder?

von Joan P. (joan)


Lesenswert?

Wenn du von 2 Leitungen sprichst.. meinst du ein 2-adriges Kabel mit 
Schirm oder sind damit nur 'Datenleitungen' gemeint und zusaetzlich noch 
Vcc und GND vorhanden?

Ich frag nur, weil 1-Wire ja auch bedeutet, dass da neben der 1 Ader 
noch GND ist.. also eigentlich 2 Adern benoetigt werden ;-)

von Maxi (Gast)


Lesenswert?

Ich meine zwei Leitungen. Abschirmung + Innenleiter.

von Ben (Gast)


Lesenswert?

die 3,3V sollten reichen um die LEDs zu betreiben.

den kurzschluß zu messen ist schon etwas schwerer, du mußt ja auch dafür 
sorgen, daß ein druck auf den taster bei leuchtenden LEDs nicht den 
controller explodieren läßt.

ich würd probieren über den ADC zu gehen, sprich den pull-up widerstand 
am ADC portpin einschalten oder einen externen vorsehen, die zweite 
leitung per portpin auf masse legen und mit dem ADC messen wie groß die 
restspannung ist. die LEDs müßten dank ihrer flußspannung ein deutlich 
höheres meßergebnis erzeugen als der gedrückte taster mit seinem 
schutzwiderstand. vielleicht hast du auch glück und die pegel sind 
ausreichend verschieden bzw. die spannung wird trotz schutzwiderstand am 
taster weit genug heruntergezogen, daß auch ein digitalpin logisch null 
erkennt. dann kannst du dir den umweg über den ADC sparen.

die LEDs "antiseriell" ist übrigens unsinn, die würden sich gegenseitig 
den strom sperren. bei 3,3v würd ich den leuchtdioden das sperren 
überlassen. also antiparallel mit ihrem jeweiligen vorwiderstand in 
reihe damit und gut.

beide LEDs leuchten lassen geht übrigens auch, mit 50% tastverhältnis 
und 50-100Hz umpolen. wird zwar nur die halbe helligkeit und ist bei 
sehr langen kabel nicht so gut für den AVR (parasitäre kapazität des 
kabels) aber es leuchten augenscheinlich beide LEDs.

von Frank Z. (frankovic)


Lesenswert?

Vielleicht gibts passende 1-Wire-Portexpander?

von Werner (Gast)


Angehängte Dateien:

Lesenswert?

Wie wäre es mit folgender Schaltung (Anhang)?


Über die 2 Komparatoren findest Du heraus, ob der Taster gedrückt ist. 
Mit Open Collector Ausgang kannst Du diese sogar direkt an ein Pin 
hängen, wenn Du den internen Pullup einschaltest.
Die Spannungsteiler stellst Du so ein, dass die Comp. bei normalem 
"LED-Betrieb" nicht schalten.

Zu beachten ist natürlich, dass eine der beiden LED's leuchten muss, um 
festzustellen, dass der Taster gedrückt wird.

Du musst dann nur im Programm entscheiden, welchen Comp. Du abfragst. 
Ist ja von der gerade leuchtenden LED abhängig. Und natürlich darauf 
achten, dass es zu komischen zuständen kommen kann, wenn Du von der 
einen auf die andere Led umschaltetst. Vielleicht kleine Totzeit 
einbauen.

Werner

von Werner (Gast)


Lesenswert?

>Gibt es eine Möglichkeit,
>die ohne zusätzlichen Portpin auskommt?

Oh, sorry. Das hatte ich überlesen.

Werner

von Frank B. (frankman)


Lesenswert?

Ich würde es so machen:

1. Beide LEDs "antiparallel" anschließen. Also Kathode Led1 und Anode 
Led2 zusammen usw.
2. Parallel dazu ein Taster
3. Eine Leitung mit Pullup (50k o.ä.) zu 3V3 versehen.


Port1= 1 und Port2 =0  --> erste Led leuchtet
Port1= 0 und Port2 =1  --> zweite Led leuchtet

Port1 = 0 und Port2 = Eingang  --> Taster ausweten, also wenn Port 2= 0, 
dann Taster gedrückt. Wenn Port2=1, dann Taster nicht gedrückt.

Der Pullup alleine ist so groß, das die entsprechende Led nicht 
leuchtet.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Frank Zöllner schrieb:
> Vielleicht gibts passende 1-Wire-Portexpander?

Ja, gibt es DS2408 (8bit), DS2413 (2bit).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das geht nicht, weil wenn der Taster in dem Moment gedrückt wird, wenn 
eine LED leuchtet, qualmts. Man kann allerdings dem Taster einen 
Widerstand von etwa 2kOhm in Serie schalten und diese Kombination über 
die antiparallelen LEDs schalten. Wenn man 2 ADC-Pins verwendet, kann 
man diese nach obigem Schema wechselseitig ansteuern. Zwischen den 
Leuchtphasen der LEDs werden kurze Meßphasen eingefügt, durch 
Einschalten des Pullups beim jeweiligen Meßpin wird die Spannung in 
Richtung Vcc gezogen, der andere Pin ist Ausgang Low. Die einzelnen 
LED-Flußspannungen dürften sich deutlich von der Spannung des gedrückten 
Tasters mit dem 2kOhm-Widerstand unterscheiden. Wenn der Taster während 
des LED-Ansteuer-Zeitraumes gedrückt wird, sollte dies die Lichtstärke 
der LEDs nur unwesentlich beeinflussen. Bei schneller Wechselfrequenz 
ist das ohnehin nicht zu merken, da der Taster nach einigen 
Schaltwechseln sicher erkannt ist.

von Ben (Gast)


Lesenswert?

mein reden...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

@Ben: hatte Deinen Beitrag zu spät gesehen - Internet hakt...

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.