GPIO.setup pull_up_down

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

Montag 25. Dezember 2017, 10:22

Hey,

ich habe versucht mein Script zum Laufen zu bringen. Ich überprüfe im Script ob ein HIGH Signal ansteht.
Nun wenn ich die GPIOs verbinde mit der 3.3 Volt Versorgung des Raspberry Pis kommt immer ein LOW Signal heraus.

Nun habe ich gelesen, dass man einen Wiederstand setzen muss mit einem optionalen Parameter bei GPIO.setup();
Der Parameter lautet pull_up_down. Zu dem habe ich gelesen, wenn man GPIO.PUD_UP diesem zuweist, dass es dann von
0 auf 1 hochgezogen wird und wenn man GPIO.PUD_DOWN diesem zweist es von 1 auf 0 runtergezogen wird.

Nun wird mir aber beim GPIO.PUD_UP immer ein HIGH-Signal gegeben, obwohl auch keine Spannung ansteht.

Habt ihr denn Ideen wie man dies lösen kann?

Mein Script:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf8 -*-

import RPi.GPIO as GPIO

import logging
from marrow.mailer import Message, Mailer
logging.basicConfig(level=logging.INFO)


# Benötigte Werte:
# GPIO.LOW (alles ok)
# GPIO.HIGH (fehler)

GPIO.setmode(GPIO.BOARD); # Pin-Nummern aus dem Layout benutzen (siehe gpio.jpg)

	# input setzen auf Pin-Nummer: 18 = GPIO 24
GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_UP);

#Überprüfung ob input einen low oder high status hat   == GPIO.HIGH
gpioInput = GPIO.input(18)
if gpioInput == GPIO.HIGH: 
	# Mailversand
	mail = Mailer({
        'manager.use': 'futures',
        'transport.use': 'smtp',
        'transport.host': 'smtp.gmail.com',
        'transport.tls': 'ssl',
        'transport.username': '',
        'transport.password': '',
        'transport.max_messages_per_connection': 5
    })

	mail.start()

	message = Message([('Information', '')], [('Ich', '')], "test", plain="test")

	mail.send(message)
	mail.stop()
	print gpioInput
	print "Fertig"
	
else:
	print "Signal is not high"
	print gpioInput
__deets__
User
Beiträge: 2707
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 25. Dezember 2017, 11:32

Naja, das ist eben was ein PULL-UP macht - den Pegel auf High ziehen. Wenn du da eine Veränderung erzielen willst, musst du den PIN auf Masse bringen.

Wenn du den Pull-Down verwendest, sollte es funktionieren wie gedacht.
Sirius3
User
Beiträge: 7626
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 25. Dezember 2017, 12:12

@Moon: die Idee hinter pull-up/-down ist, dass im Normalfall kein Strom fließt, sondern nur wenn z.B. ein Taster gedrückt wird. Dabei kommt es eben darauf an, wie Deine elektronische Schaltung aussieht. Und ohne Widerstand an einen Port 3.3V anzulegen ist keine gute Idee. Um Dein Board nicht zu schrotten, brauchst Du ein paar Elektronikgrundlagen.
__deets__
User
Beiträge: 2707
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 25. Dezember 2017, 12:15

@Sirius3 man kann sehr wohl ohne widerstand 3.3V anlegen. Die Impedanz regelt das von alleine. Sonst wäre das Schaltungsdesign unerträglich.

Als Ausgang darf man nicht mehr als 16mA treiben. Da muss man Vorsicht walten lassen.
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

Montag 25. Dezember 2017, 16:22

Aso ok. Gut zu wissen.

Obwohl ich jetzt pull_up_down auf GPIO.PUD_DOWN gesetzt habe kommt immer noch 0 raus obwohl die 3.3V Versorgung des Raspberry Pis richtig angeschlossen wurde. Und wenn ich dies weglasse kommt auch immer 0 raus.

Aber das kann doch nicht sein. Es wurde doch mit der 3.3 Volt Versorgung des Raspberry Pis verbunden.
__deets__
User
Beiträge: 2707
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 25. Dezember 2017, 17:37

Ich würde ja mal auf falschen GPIO tippen.
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

Montag 25. Dezember 2017, 20:05

Das habe ich auch erstmal gedacht. Dann habe ich im Internet nach einem Bild mit Beschreibung der GPIOS geschaut. Und habe dies gefunden: http://raspberrypiguide.de/howtos/raspb ... io-how-to/ (Die Grafik). So habe ich die beiden Kabel angeschlossen. 1 Kabel mit aufsatz auf den GPIO und das andere auf die 3.3 Volt Versorgung.
__deets__
User
Beiträge: 2707
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 26. Dezember 2017, 09:54

Ich kenne den pinheader des PI zu genüge. Der hilft nicht beim problemlösen. Ein Foto DEINES Kabels auf dem Pi würde das.
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

Dienstag 26. Dezember 2017, 15:25

Hey,

ich habe jetzt mal andere GPIOs ausprobiert und siehe da es funktioniert.

Danke für die schnelle und gute Hilfe :)

Grüße,
Moon
Antworten