mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schalter einlesen.so einfach, doch so schwierig


Autor: Daniel Duesentrieb (daniel1976d)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Halloechen,

ich habe ein kleines Problem das ich einen entfernten Schalter einlesen 
muss. Die Entfernung betraegt ca. 15m. Leider gibt es die Schaltung 
schon, so dass ich nur noch sehr begrenzte Moeglichkeiten habe.

OK, die Schaltung sieht wie folgt aus:

3.3V rail vom einlesenden Eingang, danch eine Doppel BAT54 mit einem 
Optocoupler parallel zu einer der BAT54. Danach einen Wiederstand von 
1kOhm, dann kommmt schon der Schalter (an J2) und dann zurueck zum GND 
des einlesenden Geraetes. Genaueres im Anhang...

Wie wahrscheinlich zu erwarten ist macht die Schaltung was sie will.. 
Oft ist der Schalter geschlosen, aber der uP erkennt Schalter 
geoeffnet... und umgekehrt...

Hat jemand vieleicht eine Idee was man machen koennte/helfen koennnte?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie wahrscheinlich zu erwarten ist macht die Schaltung was sie will..
Die Schaltung ist zwar unnötig aufwendig, aber grundsätzlich sollte sie 
schon funktionieren...
Wohin schaltet der Schalter? Gegen GND?
Wozu ein OK, wenn das Potential sowieso das selbe ist?
Und der Dateiname des Bildes ist damit auch nur Lug und Trug...

Aber ich würde sagen: mach einfach mal eine Brücke über die D4 und/oder 
den R12 wesentlich niederohmiger.
Denn die Diode hat 0,7V Spannungsabfall, der OK 1,5V, damit bleiben für 
den Widerstand 0,9V, was in einem LED-Strom von 0,9mA resultiert. Das 
ist für einen OK im Schalterbetrieb deutlich zu wenig...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> dann kommmt schon der Schalter (an J2) und dann zurueck zum GND
> des einlesenden Geraetes.
Ich würde eher sagen, du verschleppst dir den GND deines Gerätes in der 
halben Welt und koppelst jede Menge Störungen ein...

Autor: Daniel Duesentrieb (daniel1976d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmals... Ja ja... ich weiss es gibt da gar keine Isolation ... 
Die BAT54 ist eine Doppel Schottky Barrier Diode und hat nur 0.35V 
Spannungsabfall... was die Sache aber auch nicht wesentlich besser 
macht. Ich werde einfach mal den Widerstand verringern.

Das mit den eingekoppelten Stoerungen ist wahrscheinlich korrekt, 
speziell unter dem Gesichtspunkt das die Schaltung im Automobilbereich 
funktionieren soll. Jedoch dachte ich immer das verdrillte Draehte und 
Leitungsfuehrung (zum Sensor/Schalter und zureuck) immer das Optimum 
waere. Klar man kann noch schirmen...

Aber wie gesagt, ich darf nicht viel veraendern... Management!

Die Schalter sind nicht ideal... kein Gold, viel zu geringer Wetting 
Current, 50000 Lifecycle obwohl mit 2000000 mal zu rechnen ist.. usw 
usw.

Trotzdem vielen Dank fuer eure Hilfe..

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>speziell unter dem Gesichtspunkt das die Schaltung im Automobilbereich
>funktionieren soll.

Soll ich jetzt lachen?

>Aber wie gesagt, ich darf nicht viel veraendern... Management!

Dann tritt den Deppen in den Arsch!

Autor: Daniel Duesentrieb (daniel1976d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dumm gelaufen wenn man erst vor einer Woche in der Firma angefangen hat 
:) Naechste Woche kann ich einen "Problembus" besuchen. Hat jemand 
vieleicht Tips was man dort vor Ort so alles analysieren koennte...

Klar sind das Deppen... Automotive (24V) und dann wird nur gegen GND 
geschaltet... oder halt Float. Ich habe das nicht so kennengelernt...
Dann diese "Isolierung"... wozu? Kein Bodycomputer, Tuersteteuergeraet, 
Rear Seat Entertainment, Seat Controller hat Optoisolierung.. soweit ich 
das kenn.

Klar wuerde ich gern ein paar Automotive spezifische Komponenten 
(Kontaktmonitor, intelligent HS/LS Switches usw ) einfuehren aber dieses 
tolle Design ist gerade fertiggestellt worden und der Stolz des 
Managements (vor allem muessten einige Herren sich dann eingestehen das 
etwas falsch gelaufen ist...)...

Ja das Management hofft immer noch auf ein Wunder... denn es gibt Busse 
bei denen das wunderbar funktioniert und dann ploetzlich gibt es sehr 
viele Fehlermeldungen und dann wieder wochenlang Ruhe. Und das Ganze 
ohne erkennbaren Zusammenhang... Die machen halt lieber tolle 
Statistiken...

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Schmeiß den Optokoppler raus, der macht nur Ärger (temperaturabhängiges 
CTR)
Deine Chefs müßten doch auch einsehen daß mit einem kostengünstigeren 
Design mehr zu verdienen ist und ihr Arbeitsplatz länger erhalten 
bleibt.

Du brauchst:
1. Direkt am Stecker einen EMV-Kondensator ans Metallgehäuse
   Dimensionierung entsprechend den EMV-Tests. (Startwert 1-10nF)
2. einen (oder mehrere) Pull-up Widerstand der den
   Kontakt(reinigungs) Strom aufbringt
3. Einen Serienwiderstand vom Steckerpin zum Prozessorpin als
   Strombegrenzung im Fehlerfall (Kurzschluß nach Batterie) bzw.
   EMV-Impulse. Fehler-Strom <= 0.5 .. 1mA je nach Prozessor
4. einen Filterkondensator direkt am Prozessorpin gegen Signal Gnd
   (bildet zusammen mit dem Serienwiderstand einen Tiefpaß
   Zeitkonstante möglichst > 1ms.
5. Optional noch einen Widerstand parallel zum Filterkondensator
   um die Schaltschwelle des Prozessoreingangs noch etwas nach oben
   zu schieben.

Der Schalter sollte möglichst nicht über Karosseriemasse angeschlossen 
sein sondern der Masseanschluß vom Steuergerät als 2-Draht-Leitung 
angeschlossen werden. (Masseversatz).

Und glaube nicht daß der Optokoppler irgendwelche Störungen 
herausfiltert.
Bei ESD-Störungen leuchtet bei entsprechender Einkopplung die Diode und 
schaltet den Transistor durch falls keine Entstörmaßnahmen beidseitig 
des Optokopplers vorhanden sind. (Doppelter Aufwand).

Autor: Daniel Duesentrieb (daniel1976d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fuer die sehr ausfuehrlichen Tips... hoert sich fast so an als 
wenn du aus der Automotive Brache kommen wuerdest... :)

Habe da noch eine Frage mehr in Richtung SW... Unser Processor macht 
gerade mal 3 Samples und bildet dann darueber den Mittelwert... sind 3 
Samples nicht ein wenig wenig.. Gibt es da einen Daumenwert... Ich 
haette gedacht das mindestens 10 Samples herrangezogen werden sollten...

Danke nochmals

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

was heißt hier 3 Samples mit Mittelwert bei einem Digitalpin?
Ich hoffe du liest die 3 Samples nicht unmittelbar hintereinander ein.

Also ich kenne Entprellung von Digitalpins nur so:

1. Die Abtastung erfolgt in festen Zeitrastern von so 10 - 20 ms
   (Kürzer macht wenig Sinn wegen Kontaktprellen und Störimpulsen)

2. Die Übernahme des neuen Zustandes erfolgt erst wenn x mal
   hintereinander (ohne Unterbrechung) der neue Zustand abgetastet
   wurde. (also nix mit "Mittelwert")

3. x ist mindestens 3, richtet sich nach der Anwendung. 
(parametrierbar?)
   Zum Teil werden für steigende und fallende Flanke unterschiedliche
   Werte verwendet.
   Wenn du eine Tastatur entprellst bei der Die Tasten zurückspringen
   wirst du kaum Entprellzeiten mit 10*20ms haben wollen, da sonst
   keine der Tasten erkannt werden würde.
   Wenn Du natürlich alle 1ms ein Sample generierst und das
   Kontaktprellen schon bis zu 5 ms dauert, können 10 Abtastungen
   auch zu wenig sein. Ich gehe mal von einer sinnvollen
   Mindestentprelldauer von 40 - 100 ms aus.
   Hängt natürlich davon ab was am Eingang physikalisch als
   sinnvolle Schaltfrequenz dranhängt. Ein Endschalter an einer
   schweren Mechanik hat sicher eine andere als eine Schaltwippe.

4. Sicherheitsrelevante Signale sind entweder redundant ausgeführt
   oder werden mit anderen Signalen plausibilisiert.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Duesentrieb schrieb:
> Habe da noch eine Frage mehr in Richtung SW... Unser Processor macht
> gerade mal 3 Samples und bildet dann darueber den Mittelwert.

Das ist keine wirksame Entprellmethode.
Das ist einfach nur Quatsch.

Zum Entprellen mußt Du warten, bis n* Samples den gleichen Wert haben 
und dieser entgegengesetzt dem bisher gespeichertem Entprellzustand ist.
Und natürlich müssen die Samples in einem vernünftigen Entprellintervall 
erfolgen, z.B. 5..50ms (bei n = 4).


Es gibt da ne hübsche Routine, die bei minimalstem Aufwand eine der 
Busbreite der CPU entsprechende Anzahl Eingänge parallel entprellt, also 
8, 16 oder 32.

Auch wenn ein Optokoppler vollkommen nutzlos ist, wenn man beide Seiten 
verbindet, wird das nicht der Fehler sein.
Sondern eindeutig die Software.


Peter

Autor: Jim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel Duesentrieb:

Bist du sicher das es für die Serienreife in  der Automobilindistrie 
ist?
Wenn ja, wie machst du SH2GND,SH2BAT,OL - Diagnose mit dieser Schaltung, 
also mit DTCs wird da wohl nichts.

Oder kannst du das Signal noch plausibilisieren?


Zur Abtastung: Kenne es auch nicht anders, als wie es von Anja und Peter 
Dannegger vorgeschlagen wurde.



Gruss

Autor: Daniel Duesentrieb (daniel1976d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry falsch ausgedrueckt... Habe jetzt auch noch mal die SW Leute 
gefragt... also es wird alle 500ms ein digtales Sample (1 oder 0) 
genommen, dann geschaut ob mindestens 3 Samples hintereinander den 
gleichen Zustand haben und dann entsprechend entschieden...

Hoffe das habe ich so richtig wiedergegeben. Mir erscheint jedoch das 
Intervall von 500ms seltsam...

Ach ja noch etwas, die Elektronik die wir haben ist nicht direkt fuer 
die Automobilindustrie ... wir ruesten Busse/Taxis mit Intelligent 
Transport Systems (ITS) aus und bewegen uns daher schon nah an 
Automotive Forderungen... Das Problem was ich sehe ist das die Firma 
sich eher als Systemintegrator sieht .. also Dinge nur dazukauft. 75% 
aller Angestellten machen Desktop/Server SW. Eingene Entwicklung soll so 
klein wie moeglich gehalten werden...

> Was ist denn SH2GND, SH2BAT,OL - Diagnose mit dieser Schaltung,
> also mit DTCs wird da wohl nichts....

Versteh nur Bahnhof? Sorry... to GND, to BAT aber was bitte schoen... 
DTC???

Vielen Dank fuer all die Hilfe und Geduld.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> Dumm gelaufen wenn man erst vor einer Woche in der Firma angefangen hat
> :) Naechste Woche kann ich einen "Problembus" besuchen. Hat jemand
> vieleicht Tips was man dort vor Ort so alles analysieren koennte...

Was ich mir anschauen würde:
- Welches potential "Sieht" deine Schaltung am Eingang.
  (also genau die beiden Pins verwenden wo der Schalter angeschlossen 
ist)

- Welches Potential ist am Schalter vorhanden.

- Gibt es hierbei Differenzen (Masseversatz)

- Wie ist der Schalter tatsächlich angeschlossen
 (Mehrfachanbindungen an Masse oder sauber sternförmig an deiner 
Schaltung)

- Gibt es Störimpulse am Eingang deiner Schaltung
  (Oszi für Übersprechen im Kabelbaum)

- Wird das Verhalten besser wenn ein 10nF/200V Kondensator am
  Eingang gegen (Gehäuse-) Masse angeschlossen wird.

Ich nehme mal an daß ihr noch keine EMV-Prüfungen durchgeführt habt.
Alles was direkt ungefiltert am Stecker hängt sollte mindestens für 
10-fache Bordnetzspannung (also mindestens 200V Kurzzeitbelastung) 
ausgelegt sein.
Da kann es für die 30V-Diode auch mit 1K Vorwiderstand schon knapp 
werden.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Duesentrieb schrieb:
> Sorry falsch ausgedrueckt... Habe jetzt auch noch mal die SW Leute
> gefragt... also es wird alle 500ms ein digtales Sample (1 oder 0)
> genommen, dann geschaut ob mindestens 3 Samples hintereinander den
> gleichen Zustand haben und dann entsprechend entschieden...

Also erst nach 1,5s reagiert die Software auf den Kontakt.
Das ist ja ne halbe Ewigkeit.

Für ne Taste sind solche Ewigkeiten ungeeignet, die hat der Benutzer 
längst losgelassen. Eine Taste sollte spätestens nach 300ms reagieren.

Gibts nen Grund, so extrem langsam zu sein?


Peter

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Daniel Duesentrieb schrieb:
>> Sorry falsch ausgedrueckt... Habe jetzt auch noch mal die SW Leute
>> gefragt... also es wird alle 500ms ein digtales Sample (1 oder 0)
>> genommen, dann geschaut ob mindestens 3 Samples hintereinander den
>> gleichen Zustand haben und dann entsprechend entschieden...
>
> Also erst nach 1,5s reagiert die Software auf den Kontakt.
> Das ist ja ne halbe Ewigkeit.
>
> Für ne Taste sind solche Ewigkeiten ungeeignet, die hat der Benutzer
> längst losgelassen. Eine Taste sollte spätestens nach 300ms reagieren.
>
> Gibts nen Grund, so extrem langsam zu sein?

Ich hab den Thread jetzt gerade nur überflogen, aber hat er nicht gesagt 
dass er einen Schalter in der Türe hat? Ich denke dann passt das schon, 
weil keiner macht die Autotüre innerhalb 1,5s auf und wieder zu ;-).

Gruß, Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen O. schrieb:
> Ich hab den Thread jetzt gerade nur überflogen, aber hat er nicht gesagt
> dass er einen Schalter in der Türe hat?

Das habe ich wohl überlesen.

Dann könnte aber hinzukommen, daß im Auto oftmals extrem billige 
Kontaktmaterialien verwendet werden, die eine hohe Betätigungsspannung 
benötigen (zum Durchschlagen der Oxydschicht oder Verschmutzungen).

Die 3,3V - LED - Diode ergeben etwa nur 1V, das könnte deutlich zuwenig 
sein.
Kontakte im Auto sollten mindestens mit 12V gelesen werden.
D.h. an den Eingang muß noch ein Pullup (2,2k) gegen 12V.


Peter

Autor: Daniel Duesentrieb (daniel1976d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke... Nein keine Ahnung warum 500ms... ich finde das auch lang... die 
Tueren sind pneumatisch, das geht schon relativ flink ... Die SW Leute 
sind mit einem Single Board Computer und Windows CE unterwegs... Koennte 
mir vorstellen das HW einlesen nicht so einfach ist... :)

Ja die Kruecke mit dem geringen Kontaktstrom ... alles schon 
kommuniziert, aber Management ist da taub... Die HW wurde von jemanden 
konstruiert der soetwas nicht kann und heute relativ weit oben sitzt...

Autor: heinz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mit dieser Art von Softwareseitigem Entprellen haben wir gute Erfahrung 
gemacht.

gruß Jan

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ist viel zu aufwendig.
falls steigende und fallende Flanke in der Entprellung gleich sind würde 
ich folgendes nehmen:

#define Limit 3

KeyNew = ((Port.Key and BitMask) != 0);

if (KeyNew == KeyDeb)
{
  KeyCtr = 0;
}
else
{
  KeyCtr ++;
  if (KeyCtr >= Limit)
  {
     KeyNew = !KeyNew;
     KeyCtr = 0;
  }
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.