Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi Zero W mit Tastern macht Probleme


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Felix H. (felixvie)


Lesenswert?

Hallo liebes Forum,
Ich lese schon seit Jahren mit jedoch heute meine erste mir 
unverständliche Problemstellung die ich gerne erörtern würde.

Ich habe an einen Pi Zero W zwei Taster und zwei LED per GPIO 
angeschlossen.

Die Taster sollen einen python script bedienen und die LED Dienen der 
optischen Kontrolle, das Gehäuse ist aus Kunststoff, die Taster aus 
Edelstahl.

Die Taster sind so verkabelt: GPIO27 -> 10k Widerstand -> Taster -> GND
Und so angelegt: GPIO.setup(button1_pin, GPIO.IN, 
pull_up_down=GPIO.PUD_UP)


Ich habe das Problem, dass die Taster bereits auslösen, wenn ich sie nur 
berühre, und zwar reicht es, wenn ich einen der beiden Taster berühre um 
beide auszulösen, gleichzeitig lade ich mich anscheinend so stark auf, 
dass ich sobald ich ein geerdetes Gerät berühre sofort einen kleinen 
Schlag bekomme - das ist nicht immer so, aber nach einer gewissen Zeit 
eigentlich immer. Ich habe bereits verschiedene Netzteile versucht aber 
keinen Unterschied bemerkt, der Pi ist direkt an der Platine an die 
Stromversorgung angelötet und geht nicht über den USB Eingang.

Hat jemand eine Idee was das Problem sein könnte? Dank euch vielmals 
vorab für die Unterstützung!

Felix

von Εrnst B. (ernst)


Lesenswert?

Felix H. schrieb:
> Hat jemand eine Idee was das Problem sein könnte?

der interne Pullup ist zu schwach.

Felix H. schrieb:
> Die Taster sind so verkabelt: GPIO27 -> 10k Widerstand -> Taster -> GND

Besser: Taster zwischen GPIO und GND, 10K-Widerstand als Pullup gegen 
Vcc.

Ggfs. noch einen kleinen Kondensator dazu, zum entprellen, oder in 
Software entprellen.

: Bearbeitet durch User
von Felix H. (felixvie)


Lesenswert?

Danke! Ist es dann nicht so, dass der interne pullup mit dem externen 
10k genug sein sollte in kombination?

Wie meinst du mit besser? Der Taster sitzt ja aktuell zwischen GPIO und 
GND, wäre es besser gegen Vcc zu schalten oder wie meinst du? Danke 
vielmals für Deine Hilfe!

Felix

von Helmut -. (dc3yc)


Lesenswert?

Felix H. schrieb:
> Wie meinst du mit besser? Der Taster sitzt ja aktuell zwischen GPIO und
> GND, wäre es besser gegen Vcc zu schalten oder wie meinst du?

Dann male einen Schaltplan (gerne auf Papier und abfotografiert). Dann 
weiß jeder, wie deine Taster verschaltet sind. Aus deiner Prosa geht das 
nicht genau hervor!

von Felix H. (felixvie)


Angehängte Dateien:

Lesenswert?

Danke, ich hoffe so ist es klar, ich habe mich auch geirrt, es ist kein 
10k sondern ein 16k Widerstand.

Danke!
Felix

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Felix H. schrieb:
> es ist kein
> 10k sondern ein 16k Widerstand.

Und eben auch kein Pullup. Hat der Stelle keinen wirklichen Zweck.

Felix H. schrieb:
> pullup mit dem externen
> 10k genug sein sollte in kombination?

Sondern bildet mit dem internen Pullup einen Spannungsteiler...

Deshalb, umstöpseln, Taster direkt an GPIO, den dadurch freiwerdenden 
Widerstand als Pullup verwenden.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Felix H. schrieb:
> n ein 16k Widerstand.

Und, was soll der bewirken?
Sieht für mich irgendwie krank aus, kenne allerdings auch nicht alle RPI 
Magie.

Beitrag #7571773 wurde vom Autor gelöscht.
von Felix H. (felixvie)


Angehängte Dateien:

Lesenswert?

Εrnst B. schrieb:
> Deshalb, umstöpseln, Taster direkt an GPIO, den dadurch freiwerdenden
> Widerstand als Pullup verwenden.

Danke! Sprich wenn ich das doch in Prosa versuchen darf wiederzugeben, 
von Vcc gehe ich durch den 16k Widerstand zum Taster, fahre aber durch 
in den GPIO, sobald der Taster gedrückt wird, fließt der Strom aber zu 
GND und somit habe ich das Event in python, dass der Button gedrückt 
wurde?

Danke!
Felix

von Steve van de Grens (roehrmond)


Lesenswert?

Felix H. schrieb:
> Ist es dann nicht so, dass der interne pullup mit dem externen
> 10k genug sein sollte in kombination?

Meistens ja. Aber viele Taster halten nicht lange, wenn sie nur so wenig 
belastet werden. Ich lege den Pull-Up immer so aus, dass mindestens 1mA 
fließen.

> wäre es besser gegen Vcc zu schalten?

Das ist egal

: Bearbeitet durch User
von Enrico E. (pussy_brauser)


Angehängte Dateien:

Lesenswert?

Felix H. schrieb:
> von Vcc gehe ich durch den 16k Widerstand

...oder besser 3k3 Widerstand, um eine Oxidationsschicht an den 
Tasterkontakten weitestgehend zu vermeiden.

von Keks F. (keksliebhaber)


Lesenswert?

Laut Code und Schaltplan hast du zwei Pullups.

von Felix H. (felixvie)


Lesenswert?

Keks F. schrieb:
> Laut Code und Schaltplan hast du zwei Pullups.
Inwiefern?

von Felix H. (felixvie)


Lesenswert?

Enrico E. schrieb:
> ...oder besser 3k3 Widerstand, um eine Oxidationsschicht an den
> Tasterkontakten weitestgehend zu vermeiden.

Wo wäre der Unterschied 10k 16k oder 3k3 zu verwenden?

Danke!

von Εrnst B. (ernst)


Lesenswert?

Felix H. schrieb:
> Wo wäre der Unterschied 10k 16k oder 3k3 zu verwenden?

Je nach Kontaktmaterial im Taster kann sich da eine Oxid-Schicht bilden, 
die zu schlechtem Kontakt und Prellen führt. Ein höherer Strom "brennt" 
diese weg.

https://de.wikipedia.org/wiki/Frittspannung

von Steve van de Grens (roehrmond)


Lesenswert?

Außerdem macht ein niedrigerer Widerstandswert die Schaltung robuster 
gegen Radiowellen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ersetze den Serienwiderstand durch eine Drahtbrücke. Der Code deklariert 
den Pullup und das reicht.
NB: Gezeichnet hast du den Taster an GPIO25, sagst aber, das er an 
GPIO27 dran ist.

: Bearbeitet durch User
von Felix H. (felixvie)


Lesenswert?

Danke,
Ich hab es jetzt mit 3k3 Ohm probiert und entsprechend die Verkabelung 
angepasst, leider aber kein Unterschied, sobald ich den Taster berühre 
schaltet er bereits, jedoch immer nur beim ersten Mal, soll ich das 
Metallgehäuse vom Taster mit GND verbinden oder hätte das keinen Sinn?

Matthias S. schrieb:
> NB: Gezeichnet hast du den Taster an GPIO25, sagst aber, das er an
> GPIO27 dran ist.

Das stimmt, nur hat diese Zeichnung keinen GPIO27 beschriftet, deshalb 
habe ich es an 25 gezeigt.

Danke!
Felix

von Εrnst B. (ernst)


Lesenswert?

Felix H. schrieb:
> sobald ich den Taster berühre
> schaltet er bereits

Welche Spannungsversorgung hat dein Pi?
Hast du ein Multimeter und kannst mal zwischen GND und Erde/PE messen, 
auch im AC-Messbereich?
Trägst du gut isolierende Schuhe, und hast trockene Luft im Zimmer?
Triggert der Schalter auch, wenn du dich vor dem Berühren erdest? 
(PC-Gehäuse, Heizkörper anfassen oder so)

von Felix H. (felixvie)


Lesenswert?

Hallo Ernst,
Εrnst B. schrieb:
> Welche Spannungsversorgung hat dein Pi?
> Hast du ein Multimeter und kannst mal zwischen GND und Erde/PE messen,
> auch im AC-Messbereich?
> Trägst du gut isolierende Schuhe, und hast trockene Luft im Zimmer?
> Triggert der Schalter auch, wenn du dich vor dem Berühren erdest?
> (PC-Gehäuse, Heizkörper anfassen oder so)

Spannungsversorgung habe ich zwei unterschiedliche 10W USB Netzteile 
verwendet, eines von Apple, eines von Samsung, bei beiden das gleiche.

Multimeter kann ich morgen anlegen, hab den Raspberry in der Werkstatt, 
nicht zu Hause, was sollte hierbei herauskommen?

Ich trage im Winter meist Schuhe mit Gummisohle, Luft ist durch die 
Werkstattheizung relativ trocken bei guten 50%

Vor dem Berühren erden habe ich noch nicht getestet, aber ich kann 
definitiv sagen dass ich nach dem ich den Taster betätigt habe auch 
einen kleinen Schlag bekomme, sobald ich die kabelgebundene Tastatur mit 
Alurahmen berühre.

Danke für Deine Hilfe!
Felix

von Enrico E. (pussy_brauser)


Angehängte Dateien:

Lesenswert?

Felix H. schrieb:
> sobald ich den Taster berühre schaltet er bereits

Du könntest zusätzlich noch ein RC-Glied (100 Ohm und 1uF) vor den GPIO 
schalten.

Beitrag #7572084 wurde vom Autor gelöscht.
von Enrico E. (pussy_brauser)


Lesenswert?

Matthias S. schrieb im Beitrag #7572084:
> Man kann den Taster ohne weitere Bauteile am Pico betreiben.


Ja, das Prellen bekommt man programmtechnisch natürlich raus, aber die 
Berührungsempfindlichkeit nicht!

Wie groß ist denn eigentlich der interne Pullup?

von Felix H. (felixvie)


Angehängte Dateien:

Lesenswert?

Εrnst B. schrieb:
> Felix H. schrieb:
>> sobald ich den Taster berühre
>> schaltet er bereits
>
> Welche Spannungsversorgung hat dein Pi?
> Hast du ein Multimeter und kannst mal zwischen GND und Erde/PE messen,
> auch im AC-Messbereich?
> Trägst du gut isolierende Schuhe, und hast trockene Luft im Zimmer?
> Triggert der Schalter auch, wenn du dich vor dem Berühren erdest?
> (PC-Gehäuse, Heizkörper anfassen oder so)

Hallo Ernst, bin erst jetzt dazugekommen leider, habe laut Multimeter im 
AC Bereich circa 46v, sobald ich den GND pin berühre oder auch nur in 
die Nähe komme feuern die Buttons schon, ich hab noch ein Foto vom Pi 
mit den Buttons gemacht. Hätte es Sinn die Metallbuttons mit GND zu 
verbinden?

Danke!
Felix

von Εrnst B. (ernst)


Lesenswert?

Felix H. schrieb:
> habe laut Multimeter im
> AC Bereich circa 46v,

Die kommen üblicherweise von einem Y-(Entstör)-Kondensator im Netzteil, 
welcher L auf GND koppelt.

Manchmal kann es da helfen, das Steckernetzteil einfach um 180° 
gedreht in die Steckdose zu stecken. Dann wird N auf GND gekoppelt.

Ansonsten: Besseres Netzteil. Eines mit Schutzkontaktstecker (Erde!)

Felix H. schrieb:
> Hätte es Sinn die Metallbuttons mit GND zu
> verbinden?

Kann helfen oder es schlimmer machen. Mit PE/Erde verbinden wär vmtl. 
besser, dann werden statische Entladungen ganz an der Elektronik vorbei 
abgeleitet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Enrico E. schrieb:
> Matthias S. schrieb im Beitrag #7572084:
>> Man kann den Taster ohne weitere Bauteile am Pico betreiben.
>
> Ja, das Prellen bekommt man programmtechnisch natürlich raus, aber die
> Berührungsempfindlichkeit nicht!

Ich habe meinen Beitrag gelöscht, weil es hier nicht um den Pico geht, 
wie ich leider zu spät gesehen hatte. Vom Zero habe ich keine Ahnung.

von Felix H. (felixvie)


Lesenswert?

Εrnst B. schrieb:
> Manchmal kann es da helfen, das Steckernetzteil einfach um 180°
> gedreht in die Steckdose zu stecken. Dann wird N auf GND gekoppelt.
>
> Ansonsten: Besseres Netzteil. Eines mit Schutzkontaktstecker (Erde!)

Danke, Ernst! Leider hat das schlichte drehen nichts genutzt, ich habe 
jetzt ein 5v Schaltnetzteil bestellt und werde sehen ob das was hilft.

Mir ist aufgefallen, dass es seit dem ich das Gehäuse geöffnet habe 
nicht mehr so empfindlich ist, kann das auch damit zutun haben, dass die 
Komponenten im Gehäuse sehr eng aneinander verbaut sind?

Danke!
Felix

von Peter D. (peda)


Lesenswert?

Felix H. schrieb:
> Die Taster sind so verkabelt: GPIO27 -> 10k Widerstand -> Taster -> GND
> Und so angelegt: GPIO.setup(button1_pin, GPIO.IN,
> pull_up_down=GPIO.PUD_UP)

16k in Reihe ist viel zu hoch, da muß der interne Pullup noch viel 
hochohmiger sein. Wahrscheinlicher ist, er ist nicht aktiv, d.h. der Pin 
floatet.
Ich hatte mal ein Problem mit einem Pin bei einem LPC von NXP. Ursache 
war ein C&P-Fehler im h-File, es wurde der falsche Port angesprochen.

Du schreibst nicht, wie Du ihn einliest. Per externem Interrupt ist ein 
schweres Foul. Typisch nimmt man einen Timerinterrupt (1..20ms) mit 
mindestens 4-facher Abtastung.

von Steve van de Grens (roehrmond)


Lesenswert?

Peter D. schrieb:
> 16k in Reihe ist viel zu hoch

Ich erinnere an:

Steve van de Grens schrieb:
> Aber viele Taster halten nicht lange, wenn sie nur so wenig
> belastet werden. Ich lege den Pull-Up immer so aus, dass mindestens 1mA
> fließen.

Steve van de Grens schrieb:
> Außerdem macht ein niedrigerer Widerstandswert die Schaltung robuster
> gegen Radiowellen.

Gut, die 50 Hz vom Netzteil sind jetzt keine Radiowellen. Aber ich bin 
ziemlich sicher, dass ein stärkerer Pull-Up Widerstand auch dagegen 
hilft.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Steve van de Grens schrieb:
> dass mindestens 1mA
Die Taster sind für 2 oder 3A vorgesehen.
(die kommen mir bekannt vor)

Somit besteht durchaus die Möglichkeit den Pullup recht klein zu machen. 
Zudem prellen die wie Höllenfeuer.

Alles nicht/kaum vergleichbar mit den winz Tastern auf Platinen.

Ach ja:
Metalltaster/Gehäuse muss/sollte sowieso geerdet werden.

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Arduino F. schrieb:
> Die Taster sind für 2 oder 3A vorgesehen.

Dann würde ich noch deutlich mehr als 1 mA fließen lassen, falls im 
Datenblatt der Taster kein Wetting-Current angegeben ist.

von Manfred P. (pruckelfred)


Lesenswert?

Felix H. schrieb:
> Ich trage im Winter meist Schuhe mit Gummisohle, Luft ist durch die
> Werkstattheizung relativ trocken bei guten 50%
>
> Vor dem Berühren erden habe ich noch nicht getestet, aber ich kann
> definitiv sagen dass ich nach dem ich den Taster betätigt habe auch
> einen kleinen Schlag bekomme, sobald ich die kabelgebundene Tastatur mit
> Alurahmen berühre.

Phasenprüfer in die Hand nehmen, etwas herumlaufen und dann gegen den 
Schutzleiter einer Steckdose. Der wird kurz aufglimmen, weil Du 
statisch aufgeladen bist. Also ein typisches ESD-Problem.

Felix H. schrieb:
> Danke, Ernst! Leider hat das schlichte drehen nichts genutzt, ich habe
> jetzt ein 5v Schaltnetzteil bestellt und werde sehen ob das was hilft.

Ja, Nein, vielleicht. Wenn es keine speziellen Gründe dagegen gibt, lege 
GND vom Ausgang des Netzteils auf den Schutzleiter und auch das 
Schaltergehäuse dran.

Steve van de Grens schrieb:
> Dann würde ich noch deutlich mehr als 1 mA fließen lassen, falls im
> Datenblatt der Taster kein Wetting-Current angegeben ist.

Stefans Gebetsmühle dreht wieder, ohne dass diese zum aktuellen Problem 
beiträgt.

Hilfreich ist, dass ein niederohmig(er)er PullUp die Störsicherheit 
erhöht.

von Felix H. (felixvie)


Lesenswert?

Manfred P. schrieb:
> Felix H. schrieb:
>> Ich trage im Winter meist Schuhe mit Gummisohle, Luft ist durch die
>> Werkstattheizung relativ trocken bei guten 50%
>> Vor dem Berühren erden habe ich noch nicht getestet, aber ich kann
>> definitiv sagen dass ich nach dem ich den Taster betätigt habe auch
>> einen kleinen Schlag bekomme, sobald ich die kabelgebundene Tastatur mit
>> Alurahmen berühre.
>
> Phasenprüfer in die Hand nehmen, etwas herumlaufen und dann gegen den
> Schutzleiter einer Steckdose. Der wird kurz aufglimmen, weil Du statisch
> aufgeladen bist. Also ein typisches ESD-Problem.
> Felix H. schrieb:
>> Danke, Ernst! Leider hat das schlichte drehen nichts genutzt, ich habe
>> jetzt ein 5v Schaltnetzteil bestellt und werde sehen ob das was hilft.
>
> Ja, Nein, vielleicht. Wenn es keine speziellen Gründe dagegen gibt, lege
> GND vom Ausgang des Netzteils auf den Schutzleiter und auch das
> Schaltergehäuse dran.
> Steve van de Grens schrieb:
>> Dann würde ich noch deutlich mehr als 1 mA fließen lassen, falls im
>> Datenblatt der Taster kein Wetting-Current angegeben ist.
>
> Stefans Gebetsmühle dreht wieder, ohne dass diese zum aktuellen Problem
> beiträgt.
> Hilfreich ist, dass ein niederohmig(er)er PullUp die Störsicherheit
> erhöht.


Danke, wie meinst du das genau? Also vom wiring her. Ich verwende jetzt 
ein meanwell schaltnetzteil, Gehäuse ist aus Kunststoff.

Danke für die Hilfe!!

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.