Forum: Mikrocontroller und Digitale Elektronik Tasten ueber Schieberegister - EMV?


von ebtschi (Gast)


Lesenswert?

Hallo Leute,

folgendes Problem:
Ich habe mehrere Tasten ueber Schieberegister an einem Mikrocontroller 
angebunden. Leider bekomme ich manchmal "Geistertasten-Signale", obwohl 
nichts gedrueckt wurde.

Situation im Ueberblick:
*) 11 Tasten werden über 2 8 Bit Schieberegister 74HCT165 ausgelesen
*) Es sind noch weitere Schieberegister dahinter, die funktionieren, 
SREG-Leitungen passen also
*) Bei Tasten-Betaetigung wird direkt auf 5V gezogen
*) Bei nicht betaetigten Tasten gibt es einen Pulldown von 15k auf GND
*) 4-Layer Platine: Layer 1 - Tasten; Layer 2 - GND; Layer 3 - 5V; Layer 
4 - SREG
*) Pulverbeschichtetes Metallgehaeuse, mit Platine verschraubt, mit 
Schrauben durch die Platine auf GND gelegt
*) Versorgung via USB

Die SREG liefern manchmal falsche Werte (in beide Richtungen; 0 statt 1, 
1 statt 0). Der Effekt wird sehr deutlich verstaerkt, wenn man das 
Metallgehaeuse oder die Kunststofftasten beruehrt.

Ich habe folgendes getestet:
*) Software-Entprellung (Messung gilt nur wenn 20x nacheinander gleicher 
Wert)
*) Pulldown halbiert auf 7.5k
*) 0402 Keramik-Kondensatoren an alle SREG-Eingaenge, je 1.7 uF
*) Betrieb an Notebook mit Akku, ohne Netz Kabel
*) Extra 2. Masseleitung an diesem Platinen-Teil
*) SREG langsamer angesteuert (Faktor 10)

Nichts davon hilft.

Hat hier jemand irgendwelche Ideen?

von Anja (Gast)


Lesenswert?

ebtschi schrieb:
> *) Pulverbeschichtetes Metallgehaeuse, mit Platine verschraubt, mit
> Schrauben durch die Platine auf GND gelegt

Damit leitest Du Dir Störströme (z.B. ESD) direkt auf die Leiterplatte.

Ist auf der 4-Lagen Platine nur die Tastatur oder auch die Auswertung 
(Mikrocontroller)?
Wie lang ist die Leitung zur Auswertung und wie sind die Kabel geführt. 
Ist die Taktleitung und die Datenleitung durch mindestens eine 
Masseleitung voneinander Separiert?
Ich vermute ein Übersprechen eines Signals auf die Taktleitung. Das 
Problem müßte durch einen kleinen Kondensator (100pF .. 470pF) beim 
Takteingang des Schieberegisters besser werden. (nicht übertreiben die 
minimale Flankensteilheit für HC-Mos darf nicht unterschritten werden).

Gruß Anja

von Anja (Gast)


Lesenswert?

Anja schrieb:
> Ich vermute ein Übersprechen eines Signals auf die Taktleitung.

Ist wahrscheinlich doch eher die Strobe-Leitung die gestört wird. wenn 
die anderen Schieberegister ok sind.

Gruß Anja

von ebtschi (Gast)


Lesenswert?

Hallo Anja,

danke fuer die schnelle Antwort.

Stoerstroeme: naja, das Gehaeuse ist geerdet, loest das das Problem 
nicht?

In diesem Bereich der Platine sind nur die Tasten und das 
Schieberegister. Die Daten des SREG werden ueber eine Flex-Leitung zu 
einem anderen Bereich mit Mikrocontroller gefuehrt.

Leitungen:
Tasten-Register: 1-3 cm
Register-Mikrocontroller: ca. 10 cm
alles auf Platine/Flex
Daten und Clock sind durch GND-Leitung separiert

Das mit dem Kondensator werde ich mal ausprobieren.

Das Interessante ist ja, dass noch weitere SREG hinter diesen sind, die 
funktionieren. D.h. die Daten die durch diese SREG durchgeschliffen 
werden sind alle richtig, nur die die eingelesen werden sind falsch.

Schoene Gruesse,
Ewald

von ebtschi (Gast)


Lesenswert?

@ Strobe: hm, macht Sinn

E

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

ebtschi schrieb:
> Stoerstroeme: naja, das Gehaeuse ist geerdet, loest das das Problem
> nicht?

Jetzt wird es gefährlich... Gehäuse ist geerdet und mit Schaltung-Masse 
verbunden ????

von ebtschi (Gast)


Lesenswert?

Aeh, Bloedsinn (wird wirklich schon spaet heute...). Das Gehaeuse ist 
mit Schaltungs-Masse verbunden (damit auch USB-Masse), und nicht 
geerdet. Versorgung ist ueber USB.

Was evtl. noch relevant sein koennte: VSG der SREG ist 5V, angesteuert 
wird alles mit 3.3V. Das ist laut Datenblatt noch innerhalb der 
erlaubten Werte.

Das Strobe-Signal habe ich mir gerade angesehen, sieht alles sehr gut 
und unverdaechtig aus.

von Peter D. (peda)


Lesenswert?

ebtschi schrieb:
> *) Software-Entprellung (Messung gilt nur wenn 20x nacheinander gleicher
> Wert)

Das nützt nichts, Du mußt auch zwischen den Auslesungen eine 
entsprechende Zeit warten.
Bei mir hat sich eine Abtastzeit von 2..50ms (Timerinterrupt) und ein 
4-maliger Vergleich bewährt.
Wichtig ist auch, beide Flanken zu entprellen (EXOR).


Peter

von Anja (Gast)


Lesenswert?

ebtschi schrieb:
> eh, Bloedsinn (wird wirklich schon spaet heute...). Das Gehaeuse ist
> mit Schaltungs-Masse verbunden (damit auch USB-Masse), und nicht
> geerdet. Versorgung ist ueber USB.

Wie ich es machen würde:

Metall-Gehäuse mit Schirm des USB-Steckers verbinden.
Signalmasse von Gehäuse und Schirm trennen. Maximal eine Kapazitive 
Verbindung (Filterung) beim USB-Stecker falls Abstrahlungsprobleme 
auftreten.

Ansonsten: die Hand-Empfindlichkeit zeigt daß Du irgendwelche Störströme 
auf deinen Leitungen hast.

ebtschi schrieb:
> Das Strobe-Signal habe ich mir gerade angesehen, sieht alles sehr gut
> und unverdaechtig aus.

Keine Kunst bei geerdetem Oszi: da fließen die Störströme dann völlig 
anders.

Gruß Anja

von ebtschi (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Bei mir hat sich eine Abtastzeit von 2..50ms (Timerinterrupt) und ein
> 4-maliger Vergleich bewährt.

Das mache ich auch so, 5 ms, 20-maliger Vergleich.

Anja schrieb:
>> Das Strobe-Signal habe ich mir gerade angesehen, sieht alles sehr gut
>> und unverdaechtig aus.
>
> Keine Kunst bei geerdetem Oszi: da fließen die Störströme dann völlig
> anders.

Wie kann ich dann auf de Leitung messen?

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


Lesenswert?

>Ich habe mehrere Tasten ueber Schieberegister an einem Mikrocontroller
>angebunden. Leider bekomme ich manchmal "Geistertasten-Signale", obwohl
>nichts gedrueckt wurde.

>11 Tasten werden über 2 8 Bit Schieberegister 74HCT165 ausgelesen

Viel einfacher zu verdrahten und weit weniger störanfällig ist es, alle 
Tasten an die Ausgänge eines oder mehrerer Schieberegister HC595 o.ä. zu 
schalten und mit (Schottky)Dioden zu entkoppeln. Eine gemeinsame 
Sammel-Leitung führt zurück zum Controller und dort auf einen relativ 
niederohmigen Pulldown (1k...10k), dem man auch noch ein Puffer-C 
parallelschalten kann, was die Leitung gegen hochfrequente Störer 
unempfindlich macht. Die Schieberegister bekommen eine einzelne '1' 
durchgeschoben. Erscheint die '1' am Controllereingang, ist die 
betreffende Taste gedrückt. Nach jedem Schiebevorgang wird ~1ms gewartet 
und dann mehrfach abgefragt.

von Sam .. (sam1994)


Lesenswert?

Wenn du 11 Taster hast, warum nutzt du denn keine Matrix Tastatur am 
AD-Port.

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


Lesenswert?

Schieberegister brauchen nur 3 Pins inklusive Rückleitung. Matrix sind 7 
Leitungen oder mehr.

von Ferkel (Gast)


Lesenswert?

Anstatt 74HCT165 zu verwenden, wäre langsame CMOS Technik besser; z.B. 
4021.
Ich vermute einen Fehler beim Timing. Überprüfe, ob Du die Datenleitung 
zum richtigen Zeitpunkt einliest. Nach der steigenden oder nach der 
fallenden Clock-Flanke?

>Das mache ich auch so, 5 ms, 20-maliger Vergleich.

Sind die 5ms die Gesamtzeit oder die Wartezeit zwischen den Abtastungen? 
Als Gesamtzeit wäre es deutlich zu schnell.

von Sam .. (sam1994)


Lesenswert?

Travel Rec. schrieb:
> Schieberegister brauchen nur 3 Pins inklusive Rückleitung. Matrix sind 7
> Leitungen oder mehr.

Nein, ich meinte die Taster werden mit diversen Widerständen 
ausgestattet und ein Pin geht zum AD-Wandler. Der kann dann Rückschlüsse 
auf die gedrückte Taste per Software ziehen.

siehe: http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html unter 
3.

von ebtschi (Gast)


Lesenswert?

Ich habe jetzt mal alle parallelen Eingänge direkt beim Schieberegister 
auf GND gelegt. Das Problem war weg.

D.h. wir können annehmen dass es an den Signalen von den Tasten liegt, 
oder?

von ebtschi (Gast)


Lesenswert?

Ferkel schrieb:
> Sind die 5ms die Gesamtzeit oder die Wartezeit zwischen den Abtastungen?
> Als Gesamtzeit wäre es deutlich zu schnell.

5ms ist die Zeit zwischen den Abtastungen.

von Frank B. (frankman)


Lesenswert?

Ganz ehrlich,
ich glaube nicht so recht an ein EMV-Problem.
Ich würde als erstes auf einen Wackelkontakt in der Datenleitung tippen. 
Oder ein Masseproblem bei den Pull-downs. Für micht sieht das eher so 
aus, als ob die Eingänge irgend wie Floaten, wenn die Tasten nicht 
gedrückt sind.

Ich kenn Deine Schaltung nicht, aber schaltest Du vielleicht auch 
irgendwelche Relais? Klemmdiode dort?
Entkoppel-C´s bei jedem Schieberegister? Wie schnell werden die denn 
eingelesen?

Ein EMV-Problem passiert nicht durch "Handauflegen", Du sendest ja keine 
Störfrequenzen aus. Also muss es etwas mit ESD sein oder was 
Kapazitives. Nur mal so laut gedacht.

von Frank B. (frankman)


Lesenswert?

>
> Damit leitest Du Dir Störströme (z.B. ESD) direkt auf die Leiterplatte.
>
> Gruß Anja


Wieso das denn?

von ebtschi (Gast)


Lesenswert?

Frank B. schrieb:
> Ich würde als erstes auf einen Wackelkontakt in der Datenleitung tippen.

Daten "durchschleifen" funktioniert wunderbar. Das würde nicht gehen 
wenn in der Datenleitung ein Wackelkontakt wäre.

> Oder ein Masseproblem bei den Pull-downs. Für micht sieht das eher so
> aus, als ob die Eingänge irgend wie Floaten, wenn die Tasten nicht
> gedrückt sind.

Habe ich mir auch gedacht, und nachgemessen. Sind wirklich immer 7.5k 
auf GND.

> Ich kenn Deine Schaltung nicht, aber schaltest Du vielleicht auch
> irgendwelche Relais? Klemmdiode dort?

keine Relais

> Entkoppel-C´s bei jedem Schieberegister?

Ja.

> Wie schnell werden die denn eingelesen?

ca. alle 5 ms mit 100 kHz

von ebtschi (Gast)


Lesenswert?

>
> Damit leitest Du Dir Störströme (z.B. ESD) direkt auf die Leiterplatte.
>
> Gruß Anja

Ja, genau das war's. Wir haben die Metallschrauben vom Gehaeuse zur 
Platine durch Kunststoffschrauben ersetzt und alles klappt.

Besten Dank fuer die Unterstuetzung.

von Anja (Gast)


Lesenswert?

Frank B. schrieb:
> Ein EMV-Problem passiert nicht durch "Handauflegen", Du sendest ja keine
> Störfrequenzen aus. Also muss es etwas mit ESD sein oder was
> Kapazitives. Nur mal so laut gedacht.
>
Schon mal darüber nachgedacht was am USB-Kabel so alles aus dem PC an 
Störungen entweicht?
- PC-Schaltnetzteil-Spitzen (ca 100 KHz)
- USB-Datenverkehr (mind. alle 1 ms)

Wenn ich jetzt den Schaltungs-Gnd direkt ans Gehäuse ("große" Kapazität) 
anschließt fließen sehr wohl kapazitive Störströme zum PC-Gehäuse 
zurück. (Die Kapazität und damit der Störstrom verändert sich dann durch 
Handauflegen).
Wenn der Anschluß dann auch noch an der falschen Stelle ist, so daß der 
Störstrom auf der Leitung zwischen Prozessor und Schieberegister fließt 
dann hat man es geschafft.

Gruß Anja

von ebtschi (Gast)


Lesenswert?

D.h. was mache ich in Zukunft bei Elektronik in Metallgehaeusen?
Nur bei der USB-Buchse an GND anschliessen?
Nur kapazitiv an GND koppeln? (An welchen Stellen?)
In der Luft haengen lassen?

Fragen ueber Fragen ^^

von Anja (Gast)


Lesenswert?

ebtschi schrieb:
> D.h. was mache ich in Zukunft bei Elektronik in Metallgehaeusen?

Hängt leider immer vom konkreten Anwendungsfall ab:
- Leitungen ins Gehäuse
- Signalfrequenzen
- Schutzklassen
- Störumgebung

Leitungen sind immer auch gute Antennen (für bestimmte 
Frequenzbereiche).
Generell solltest Du dir Überlegen: wie verhindere ich daß Störströme 
die (Kapazitiv) über Leitungen eingefangen werden durch deinen 
Signal-Gnd fließen bzw. in der Schaltung einen Spannungsabfall 
generieren.

Die meisten Störungen haben bei ca 100 MHz ihre Hauptspektralanteile.
bei 100 MHz hat 1 cm Leiterbahnlänge ca 10nH (entspricht 6 Ohm) oder 
einen Spannungsabfall von 0,6V bei 100mA Störstrom.
(zum Vergleich: Burststörungen nach Industrienorm haben 2000V bei 50 Ohm 
= bis zu 40 A Störstrom)
zum Vergleich: 100 pF (Streu-)Kapazität (großes Gehäuse) haben ca 16 Ohm 
Impedanz bei 100 MHz.

Generelle Konzepte:

- Strikte Trennung von Schirm (= Gehäuse) und Signal GND.
  (im Gesamtsystem darf es maximal eine Verbindung im Steckerbereich 
geben)

- Alle Leitungen von einer Seite her ins Gehäuse führen.
  (Störströme fließen nur im Steckerbereich
  und nicht quer durch den Schaltungsbereich)

- Filtern von stark störenden (ungeschirmten) Leitungen
  (niederfrequente Signale) gegen Gehäuse

- Zusatzlich grundsätzliche Tiefpaßfilterung
  (RC oder LC gegen Gnd) für Signale die über Leitungen herein kommen.

- eventuell nach dem Kondensator gegen Gehäuse noch eine Drossel
  (oder Ferrit) einbauen damit die Störung auch wirklich auf
  das Gehäuse geht.
  (insbesonders wichtig wenn man doch Stecker
  auf mehreren Seiten des Gehäuses hat)

Gruß Anja

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.