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?
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
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
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
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 ????
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.
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
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
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?
>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.
Wenn du 11 Taster hast, warum nutzt du denn keine Matrix Tastatur am AD-Port.
Schieberegister brauchen nur 3 Pins inklusive Rückleitung. Matrix sind 7 Leitungen oder mehr.
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.
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.
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?
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.
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.
> > Damit leitest Du Dir Störströme (z.B. ESD) direkt auf die Leiterplatte. > > Gruß Anja Wieso das denn?
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
> > 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.
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
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 ^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.