Forum: Mikrocontroller und Digitale Elektronik Schalterstellung W8-Innenleuchte elektrisch auslesen, wer hat Tipps für mich?


von Daniel L. (dannynrw)


Angehängte Dateien:

Lesenswert?

Hi Leute,
möchte gerne die Schalterstellung der aufgezeichneten W8-Innenleuchte 
elektrisch mit einem ATmega88 auslesen, was mir momentan ein paar 
Probleme bereitet. Habe dazu mal eine Zeichnung eingefügt. An H1 (in 
meinem Falle sind es LEDs, die mit einer Konstantstromquelle betrieben 
werden) liegen ständig +12V an, geschaltet wird also die Masse. S1 
selbst ist der Schalter der Innenleuchte, der die Schalterstellungen 
"Ein" (Pin 4), "Aus" und "Ein nur bei geöffneter Tür" (Pin 3) anbietet. 
PC0 ist ein Relaiskontakt, der über meinen ATmega88 in verschiedenen 
Situationen die Leuchte einschaltet. Ebenfalls gibt es an der Leuchte 
noch einen Pin 2, der in Schalterstellung "Tür" und in Schalterstellung 
"Ein" auf Masse gezogen wird.
Nun möchte ich dem ATmega88 mitteilen können, daß der Schalter entweder 
in Stellung "Tür" oder aber in Stellung "Ein" steht. Hat da vielleicht 
jemanden nen Tipp für eine einfache und saubere Lösung, die sicher eine 
der beiden Schalterstellungen detektiert?
Danke schon mal.
Daniel

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

da die LED's auch mit etwas weniger Spannung auskommen werden (KSQ) 
könntest du in Leitung 3 eine Diode einschleifen. Am Anschluss 2 hast du 
dann ...
+0V     [DAUER-EIN]
+0.7V   [TÜR-EIN_und Offen]
+12V    [TÜR-EIN_und Zu] oder [DAUER-AUS]

Sascha

von Daniel L. (dannynrw)


Angehängte Dateien:

Lesenswert?

Im Prinzip ne Superlösung, wenn ich das mit der Analogwerterfassung 
könnte. Würde mich da sicherlich auch noch gerne einarbeiten, aber ich 
denke da gerade an den Fall, wenn z.B. das Licht über die 
PWM-Ansteuerung der KSQ ausgedimmt wird. Da wird der Spannungsabfall an 
der Diode doch auch irgendwann kleiner. Wäre da ein sicheres Auslesen 
noch gewährleistet?
Habe auch nochmal n bissl nachgedacht und ein paar Änderungen in rot 
eingefügt (K1 würde nur anziehen, wenn der Schalter in Stellung "Tür" 
steht und PC0 angezogen ist). Allerdings ist mir auch bei dieser 
Änderung aufgefallen, daß sich die Schalterstellung "Aus" nur 
einwandfrei auslesen ließe, wenn PC0 eingeschaltet ist. Eigentlich 
gehört das ja schon nicht mehr ganz zur Aufgabenstellung, aber wenn sich 
die Schalterstellung "Aus" auch noch in jeder Konstellation auslesen 
ließe, dann wäre alles perfekt.
Nochmal was zum Hintergrund der Aufgabe:
Mir ist aufgefallen, daß unabhängig von der Schalterstellung ein 
Dimmvorgang der Leuchte durchgeführt wird. Das würde in Schalterstellung 
"Ein" dazu führen, daß die Leuchte ausdimmen könnte, obwohl sie 
eigentlich ständig eingeschaltet sein soll. Im Prinzip nicht schlimm, 
aber auch schön, wenn's besser ginge.
Mit dem Auslesen der Schalterstellung hätte ich also die Möglichkeit, 
eventuell auftretende Dimmvorgänge direkt abzubrechen.
Ein weiterer Punkt wäre: Wenn ich Schalterstellung "Aus" sicher auslesen 
könnte, hätte ich die Möglichkeit, eine Bedingung zu schaffen, um auch 
andere vom ATmega88 gesteuerte Funktionen auszuschalten.

von Sascha W. (sascha-w)


Lesenswert?

Daniel Lo schrieb:
> Im Prinzip ne Superlösung, wenn ich das mit der Analogwerterfassung
> könnte. Würde mich da sicherlich auch noch gerne einarbeiten, aber ich
> denke da gerade an den Fall, wenn z.B. das Licht über die
> PWM-Ansteuerung der KSQ ausgedimmt wird.
?? wenn das Licht ausgedimmt wird, dann muss die Leuchte als noch eine 
andere Masseversorgung haben, sonst hätte sie ja nach dem Abschalten gar 
keinen Strom mehr.

> Da wird der Spannungsabfall an
> der Diode doch auch irgendwann kleiner. Wäre da ein sicheres Auslesen
> noch gewährleistet?
solange ein (ausreichend großer) Strom fließt, beträgt der 
Spannungsabfall ca. 0.7V

> Habe auch nochmal n bissl nachgedacht und ein paar Änderungen in rot
> eingefügt (K1 würde nur anziehen, wenn der Schalter in Stellung "Tür"
> steht und PC0 angezogen ist).
nein wenn PC0 offen ist
Außerdem würden deine Relais zu einem dauerhaften Stromfluss führen, 
bzw. die Lampe schon zum leuchten bringen - im Auto sicher nicht gewollt

> Allerdings ist mir auch bei dieser
> Änderung aufgefallen, daß sich die Schalterstellung "Aus" nur
> einwandfrei auslesen ließe, wenn PC0 eingeschaltet ist. Eigentlich
> gehört das ja schon nicht mehr ganz zur Aufgabenstellung, aber wenn sich
> die Schalterstellung "Aus" auch noch in jeder Konstellation auslesen
> ließe, dann wäre alles perfekt.
> Nochmal was zum Hintergrund der Aufgabe:
> Mir ist aufgefallen, daß unabhängig von der Schalterstellung ein
> Dimmvorgang der Leuchte durchgeführt wird. Das würde in Schalterstellung
> "Ein" dazu führen, daß die Leuchte ausdimmen könnte, obwohl sie
> eigentlich ständig eingeschaltet sein soll.
verstehe ich nicht, wenn Spannung anliegt, dann kann sie doch nicht 
ausdimmen?!
Oder willst du die DIM-Funktion erst mit deinem µC nachrüsten

> Im Prinzip nicht schlimm,
> aber auch schön, wenn's besser ginge.
> Mit dem Auslesen der Schalterstellung hätte ich also die Möglichkeit,
> eventuell auftretende Dimmvorgänge direkt abzubrechen.
> Ein weiterer Punkt wäre: Wenn ich Schalterstellung "Aus" sicher auslesen
> könnte, hätte ich die Möglichkeit, eine Bedingung zu schaffen, um auch
> andere vom ATmega88 gesteuerte Funktionen auszuschalten.

Deine Beschreibung mach die ganze Sache nicht weniger nebulös!
Schreib doch mal genau was der Istzustand ist und was du machen willst. 
Und sind am Anschluss 3 noch die Türkontakte angeschlossen?

Sascha

von Daniel L. (dannynrw)


Lesenswert?

Hi Sascha, danke Dir erstmal für Deine ausführliche Antwort.

Hier mal der Istzustand:
PC0 (Ausgang des ATmega88 mit nachgeschaltetem PhotoMOS) in der 
Zeichnung ersetzt den Türkontakt, der natürlich nun an einem Eingang des 
ATmega88 hängt. So ist das ganze dann auch mit der Dimmfunktion 
problemlos möglich.

Die Dimmfunktion ist so realisiert: Es wird mit dem ATmega88 eine PWM 
erzeugt, die auf die Konstantstromquelle der LEDs geht. Natürlich ist 
PC0 so lange geschlossen, bis eine Dimmfunktion abgeschlossen ist.

Zu meinen Änderungen: Vergiss diese, hab wieder mal nen Denkfehler drin 
gehabt... Hatte eigentlich vor, unterhalb von K1 und K2 die +12V 
anzulegen. Aber auch dann würde K1 anziehen, wenn PC0 geschlossen ist, 
ganz egal in welcher Schalterstellung. Die zweite Zeichnung ist also für 
die Katz.

Hier mal ein Beispiel zu meinem Problem: Ich würde z.B. die Tür öffnen, 
Schalterstellung wäre "Tür". Der µC schließt PC0 und Pin 3 liegt auf 
Masse. Nach einer programmierten Zeit dimmt das Licht über den 
PWM-Ausgang des µC aus und gleichzeitig öffnet PC0 wieder. Bis hierhin 
ist alles gut. Steht der Schalter jedoch auf "Ein", würde das Licht über 
die PWM-Funktion trotzdem ausgedimmt (was ja bei Schalterstellung "Ein" 
nicht vorkommen sollte) und ginge dann direkt wieder an.

Sollzustand:
-Die Dimmfunktionen sollen nur ausgeführt werden, wenn der
 Schalter tatsächlich in Stellung "Tür" steht.
-In Schalterstellung "Ein" darf keine Dimmfunktion die Leuchte ausdimmen
 können.
-In Schalterstellung "Aus" würde ich dann gerne eine weitere Beleuchtung
 ausschalten, die ebenfalls vom gleichen µC gesteuert wird. Diese wäre
 im Normalfall immer an, wenn auch die Cockpitbeleuchtung eingeschaltet
 ist.

Sonnige Grüße aus dem Rheinland :-).
Daniel

von Ralph (Gast)


Lesenswert?

Schalte Pin 3 von PC0 auf einen ADC Eingang und parallel zu PC0 einen 
Widerstand mit zb 68 KOhm.
Durch den Widerstand hast du einen geringen Strom der aber eine messbare 
Spannung ergibt.
Ist PC0 offen kannst du den Spannungsabfall über den Widerstand messen.
Ist PC0 geschlossen wirst du da eine "0" messen.

Bei 68 kOhm ist der resultierende Strom so gering das die LED nicht 
leuchten werden und die Belastung der Fahrzeugbatterie zu 
vernachlässigen ist.

von Daniel L. (dannynrw)


Lesenswert?

Danke Dir Ralph,
so ähnlich hatte ich schon probiert, die Schalterstellung "Aus" 
auszulesen. Allerdings hatte ich das ganze etwas anders geschaltet und 
natürlich ohne ADC:
-->Schalterfahne "Aus"-->Vorwiderstand-->Photomos-->Masse.
Da der verwendete Photomos selbst erst ab einem Strom von 1mA 
durchschaltet, war eine der LEDs natürlich schon leicht am glimmen. Ich 
denke, daß hier ein Optokoppler mit einer If von <0,5mA funktionieren 
wird.

Für die Schalterstellung "Tür" bin ich jetzt mal einen anderen Weg 
gegangen: Ich habe unterhalb von PC0 zwei Dioden in Reihe geschaltet und 
parallel dazu einen Vorwiderstand mit meinem Photomos. Das ganze hat 
erstmal ganz gut funktioniert, aber auch hier wirkt sich dann die 
auftretende Dimmfunktion wieder etwas negativ aus, weil dadurch 
natürlich auch die Spannung an den Dioden sinkt. Hier würde eine weitere 
Diode in Reihe doch sicher Abhilfe schaffen oder?

Werde weiter probieren und freue mich über jeden guten Tipp.
Daniel

von Daniel L. (dannynrw)


Lesenswert?

So, habe nochmal ein wenig zum Thema ADC gelesen.
Wenn ich also den Ansatz von Sascha nehme und unterhalb von PC0 2 Dioden 
in Reihe schalte sowie an die Schalterfahne "Aus" eine Spannung von 5V 
anlege (zusätzlich dazu eine Diode, damit rückwärtig keine Ströme 
fließen würden, wenn der Schalter auf "Aus" steht), dann hätte ich doch 
in jeder Konstellation eine andere Spannung an Pin2, richtig?
Hier wäre dann für Pin 2 bei:
"Ein" -> 0V
"Aus" -> 7V (-0,7V wegen der Diode)
"Tür" und PC0 durchgeschaltet -> 1,4V (0,7V je Diode)
"Tür" und PC0 offen -> 12V

Bitte korrigiert mich, wenn hier wieder ein Denkfehler vorliegt.
So müsste ich doch an einen freien ADC-Pin einen Spannungsteiler 
aufbauen, so daß max. 5V (eher etwas weniger) anliegen. Der µC selbst 
wird ja mit 5V versorgt. Schaltungstechnisch denke (hoffe) ich, daß 
diese Lösung den geringsten Aufwand mit sich bringt, da auf meiner 
Platine kaum noch Platz ist. Wenn bis hierhin alles richtig ist, so 
hätte ich noch eine Frage.
Wie groß wäre die Gefahr, daß es bei etwas extremeren 
Spannungsschwankungen (wie sie im Auto manchmal vorkommen) zu 
Fehlmessungen kommen kann?
Danke bis hierhin schon mal für einige sehr gute Ansätze.
Daniel

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

an den Schaltkontakt (AUS) würde ich keine Spannung anlegen, da ja 
dadurch für die Lampen (LED's) in der Schalterstellung wieder 7V 
Betriebsspannung zur verfügung stehen.
Wo ist eigentlich dein µC eingebaut? Wenn er in der Lampe selbst ist, 
könntest du die Funktion des Schalters auch gleich komplett umbauen ohne 
den ganzen Messkram. Mittelkontakt an Massen und die 3 
Schalterstellungen mit µC-Eingängen einlesen.

Und du brauchst auch nicht den µC an allen Enden mit irgendwelchen 
Optokopplern/Photomos zu 'entkoppeln' als Schutz vorm Bordnetz hätte das 
allenfalls dann Sinn wenn der µC aus einer anderen Spannungsquelle 
versorgt würde. Aus Ausgangstreiber reicht eine Transistorstufe, und zur 
Erfassung von Eingangszuständen ein entspechender Vorwiderstand, evl. 2 
Dioden und noch ein Kondensator.

Sascha

von Daniel L. (dannynrw)


Lesenswert?

Du hast Recht, 7V sind zuviel.
Die Idee, den Schalter quasi zu entkoppeln hatte ich auch schon. Möglich 
wäre das wohl durchaus, doch wäre das für mich die letzte Lösung.
Möchte mich vorher wenigstens nochmal richtig mit der ganzen Sache 
befassen und diesen Weg gehen, wenn alles andere scheitert.
Der µC selbst kommt in ein Gehäuse, weil die Schaltung für den Einbau in 
die Leuchte zu groß wäre. Das ist aber auch nicht weiter schlimm, ich 
könnte ja einfach Leitungen entsprechend verlegen ;-).
Die Photomos-Relais boten sich für mich eigentlich regelrecht an, da 
diese im DIP4-Gehäuse sind und somit recht kompakt bauen. Hatte bis dato 
auch keine Probleme mit den Dingern. Und zur Ansteuerung selbst 
benötigen diese 1,3V/1mA, das ist auch ok für meine Zwecke.
Wobei wenn ich da an "den letzten Weg" denke, so wäre ja immer ein 
Bauteil angesteuert. Hier würde ich dann lieber auf Bauteile 
zurückgreifen, die weitaus weniger Strom verbrauchen als 1mA.

Beste Grüße aus dem Rheinland :-).
Daniel

von Ralph (Gast)


Lesenswert?

Warum ein Relais ?

Ein MosFet als LowSide Schalter tut es da auch.

Ist billiger und auf Dauer um einiges zuverlässiger als ein Relais.

von Daniel L. (dannynrw)


Lesenswert?

Sorry für das hässliche Wort "Relais" ;). Mit PhotoMos ist natürlich ein 
PhotoMos(fet) gemeint. Quasi ein Optokoppler, der n bissl mehr Leistung 
schalten kann.

von Daniel L. (dannynrw)



Lesenswert?

So, hier noch der Entwurf für die letzte Lösung. Wenn ich nochmal drüber 
nachdenke, ist die auch gar nicht so schlecht. Wäre halt nur die 
Ansteuerung der Eingänge mit möglichst Wenig Stromfluss.
Und die Leuchte würde eben nicht mehr autark ohne den µC funktionieren.
Die Blitze stellen Leitungsunterbrechungen dar, die durchzuführen wären.
Im Falle der Schalterstellungsmeldung würde das ganze dann so aussehen:
- "Tür" -> (K1==1 & K2==0)
- "Ein" -> (K1==0 & K2==1)
- "Aus" -> (K1==0 & K2==0)

von Daniel L. (dannynrw)


Lesenswert?

Hi Leute,
hatte die letzten Tage nochmal gesucht und nen Photomos für meinen
µC-Eingang gefunden, welcher einen Vorwärtsstrom IF von 0,35mA besitzt. 
Ich denke, mit diesem Wert kann ich leben, denn diese 0,35mA würden ja 
die Batterie ständig belasten.
Wenn diesbezüglich noch jemand nen anderen (einfacheren) Tipp hat, so 
würde ich mich freuen.
Beste Grüße aus dem Rheinland.
Daniel

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

also wenn du den µC an der Leuchte hast, machen die Photomos keinen 
Sinn, dann aktivierst du einfach den internen Pullup und schaltest mit 
dem Leuchtenschalter nach Masse wie schon eingezeichnet. Wenn paar Meter 
Kabel dazwischenhängen sollte man den Pullup kleiner machen, aber da 
kommt man vom Strom auch nicht unter 0.35mA (kommt mir recht wenig vor) 
10k@5V=0.5mA.
Den Strom kannst du im Auto vernachlässigen, wie versorgst du deinen µC? 
Braucht evl. wesentlich mehr Strom!

Sascha

von Daniel L. (dannynrw)


Lesenswert?

Hi Sascha,
eigentlich auch ne gute Idee, den Schalter einfach auf den PIN des µC zu 
legen. Allerdings sieht die Situation so aus, daß der µC ca. 2m von der 
Leuchte selbst verbaut wird.
Hatte als Photomos den Panasonic AQY232S rausgesucht. Dieser kommt mit 
1,3V/0,35mA aus.
Der Rest wird auf jeden Fall mehr Strom verbrauchen, denke ich. Muß da 
halt nochmal schauen, in wie weit ich hinterher mit der Taktfrequenz des 
µC runterkomme und ob ich mir vielleicht die Sleep-Modes nochmal 
anschauen muß. Der ATmega88 selbst wird über einen LP2950 (5V) versorgt, 
der bei kleiner Belastung auch einen relativ niedrigen Eigenverbrauch 
hat.
Hatte auch kurz überlegt, mit der Versorgungsspannung auf 3V 
runterzugehen, aber dann verarbeitet die KSQ die PWM-Signale nicht mehr 
richtig.
Beste Grüße aus dem Rheinland :-).
Daniel

von Sascha W. (sascha-w)


Lesenswert?

du kannst auch die +12V Versorgung der Photomos oder die GND-Verbindung 
zum Schalter noch vom µC schaltbar machen, so das du zum einlesen des 
Schalterzustands mal 5ms einschaltest. Das machst du alle 250ms o. 500ms 
und kannst so den mittleren Stromverbauch noch mal ganz schön 
runterbekommen.

0.35mA (runden wir mal auf 1mA auf da der zusätzliche Schalter ja auch 
Strom braucht) -> 5ms/245ms -> 20µA

Sascha

von Daniel L. (dannynrw)


Lesenswert?

Also ich denke, die 0,35mA sind schon ok.
Aber mal was anderes: Bleiben eigentlich die letzten I/O-Schaltzustände
im µC gespeichert, wenn dieser sich schlafen legt? Und benötigt man beim 
Sleep-Mode über Timer unbedingt nen externen Quarz?
Danke nochmal für die vielen guten Tipps und Lösungsansätze!
Daniel

von Sascha W. (sascha-w)


Lesenswert?

Daniel Lo schrieb:
> Also ich denke, die 0,35mA sind schon ok.
Kleinvieh mach auch Mist

> Aber mal was anderes: Bleiben eigentlich die letzten I/O-Schaltzustände
> im µC gespeichert, wenn dieser sich schlafen legt?
die Zustände der Ausgänge ändern sich nicht und werden auch nicht 
abgeschaltet während der µC schläft

> Und benötigt man beim
> Sleep-Mode über Timer unbedingt nen externen Quarz?
nein - der Timer kann auch über den internen RC-Oszillator getaktet 
werden, allerdings sind die Möglichkeiten der Taktänderung zwischen 
Normal und Sleepmode dann begrenzt da dann der Normale Takt auch während 
des Sleep weiterlaufen muss. Optimal zum Stromsparen ist im 
Normalbetrieb den internen RC zu nehmen, und im Sleep nur den externen 
mit 32.768kHz Quarz als async-Clock am Timer2.

Sascha

von Daniel L. (dannynrw)


Lesenswert?

Danke Sascha :-).
A pro pos Kleinvieh... Hab mir nun mal (mit Hilfe einer schon zum Tode 
verurteilten Platine) die Ruheströme des ATmega88 im 
Auslieferungszustand angesehen. D.h. alle Einstellungen, wie der µC ab 
Werk geliefert wird (sollte 1Mhz sein, oder?) und ohne Software.
Bei 5V immerhin 5,8mA und was mich nun sehr verdutzte (ok, ich hab 
ähnliche Werte bereits bei RN-Wissen gesehen), tatsächlich nur 800µA bei 
3V.
Daraufhin habe ich doch einfach nochmal probiert, den PWM-Eingang meiner 
Konstantstromquelle für die LED mit 3V anzusteuern und siehe da, es 
geht. Auch nach unten hin ist sogar Reserve, so daß ich bei einer 
Ansteuerung mit 3V keine Probleme bekommen dürfte.
Das bringt mich auf jeden Fall weit nach vorne.
Allen ein schönes Wochenende :-).
Daniel

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.