Ich versuche, ein RPi3 zu verwenden, um eine Lampe mit diesem Relaismodul auszugeben / zu steuern.
Ich möchte auch von einem Taster und einem Schalter lesen können.
Das Problem, das ich habe, ist, dass es so aussieht, als würde das Schalten des Relais Rauschen in den GPIO-Eingang einführen und Fehlalarme erzeugen.
Das RPi und das Relaismodul befinden sich in einem Outdoor-Gehäuse von 190 mm x 145 mm x 140 mm. Sie haben recht zueinander.
Ich habe versucht, ein Halbleiterrelais zu verwenden, und das hat das Problem der Interferenz gelöst, aber ich würde wegen der Größe und des Preises lieber ein herkömmliches Relais verwenden.
Ich habe versucht, das vom GPIO aufgenommene Rauschen mit einem billigen digitalen USB-Oszilloskop von Hantek zu sehen, konnte aber leider nichts sehen. Ich warte immer noch darauf, es mit meinem analogen Oszilloskop zu überprüfen. Außerdem denke ich darüber nach, abgeschirmte Kabel vom Taster und Schalter zum GPIO zu versuchen und auch das Relaismodul in geerdetes Metallgeflecht zu wickeln, um einen Faraday-Käfig zu schaffen.
Bis jetzt habe ich versucht, einen Tiefpassfilter für jeden Eingang zu setzen.
Die erste Schaltung, die ich ausprobiert habe, war: C1 - 10n und 100n
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Dann habe ich einen Tiefpassfilter ausprobiert:
R1 - 100 und 1k
C1 - 1u, 10n, 100n
Simulieren Sie diese Schaltung
Ich habe es auch mit ein- und ausgeschaltetem GPIO-Pull-up versucht
Jedenfalls verbessert keiner von ihnen das Ergebnis.
Auf der Softwareseite verwende ich Python, RPi.GPIO event_detect; Ich habe versucht, die Bounce-Zeit zu erhöhen und eine Verzögerung nach der Ereigniserkennung einzufügen, um von Menschen generierte Ereignisse zu "filtern", aber dies funktioniert nur für den Fall der Drucktaste, nicht für den Schalter.
Jeder Rat wäre willkommen.
UPDATE : Dieses Relaismodul fügt viel Rauschen ein, ich habe es mit dem RPI HAT-Slice von Realy versucht und derselbe Code hat gut funktioniert, konnte bei einem schnellen Testlauf alle Fehlalarme erkennen.
das ist der Code:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def read2(channel):
print "GPIO 2"
def read20(channel):
print "Button"
def read23(channel):
print "Switch"
if __name__ == '__main__':
GPIO.add_event_detect(26, GPIO.BOTH, callback=read2, bouncetime=300)
GPIO.add_event_detect(20, GPIO.BOTH, callback=read20, bouncetime=300)
GPIO.add_event_detect(23, GPIO.BOTH, callback=read23, bouncetime=300)
while True:
pass
Unabhängig davon suche ich immer noch nach Möglichkeiten, dieses Board zu verwenden.
Sie sollten in der Lage sein, Ihren Schalter in Software zu entprellen. Es ist immer eine gute Praxis, den Eingang mit einem Widerstand von etwa 10 kOhm in die entgegengesetzte Richtung Ihrer Schalteraktion zu "ziehen".
In Bezug auf die Relaisschalttransienten scheint es, dass es Überspannungsdioden über den Relaisspulen gibt. Ich würde also versuchen, einen 100-uF-Kondensator oder mehr direkt über die Stromversorgungsanschlüsse der Relaisplatine zu legen. Dies hilft, die 5-Volt-Versorgung der Platine zu "halten", wenn das Relais erregt ist.
Ich stand vor genau dem gleichen Problem und kurz bevor ich wahnsinnig wurde, fand ich die Ursache und die Lösung.
Ihr Problem ist, dass die Flankenerkennung sehr, sehr, sehr, sehr empfindlich auf Spannungsspitzen reagiert. Wahrscheinlich werden Sie auch dann falsche Erkennungen sehen, wenn Sie andere Geräte in Ihrem Haus ein- oder ausschalten.
Um dieses Problem zu lösen, fügen Sie einfach eine Ruhepause von 10 ms in Ihre Callback-Definitionen ein und lesen Sie den Pin-Status erneut. wenn immer noch gleich als Aktion ausführen, sonst war es nur ein Spike. Kondensatoren können helfen, müssen aber speziell ausgelegt werden, damit das Timing perfekt ist, außerdem haben sie ein unterschiedliches Lade- und Entladeverhalten, also ist das ziemlich schwierig!
Bitte werfen Sie einen Blick auf: https://www.raspberrypi.org/forums/viewtopic.php?t=134394 für einige wirklich richtige Informationen! Hoffe es wird dir gelingen!
Ich bin mir nicht sicher, ob es zutrifft, aber es gibt mehrere mögliche Probleme mit diesen Relais.
Sofern das Relaismodul sie nicht vorsieht (konnte das Moduldatenblatt nicht finden), müssen Sie dies selbst tun. Da das Modul nun für Arduino ausgelegt ist, das AFAIK 5 V GPIO hat, besteht eine hohe Wahrscheinlichkeit, dass mindestens p. 1 ist vor Ort. Das heißt, das Modul erwartet 5 V als Steuerspannung und der Versuch, es mit 3,3 V RPi GPIO zu steuern, führt zu einem instabilen Betrieb.
Endlich löste eine 100uf-Kappe auf der Relaisplatine zwischen VCC und GND die Probleme mit Fehlalarmen.
Keine Ebenenverschiebung erforderlich.
Dank an alle.
UPDATE : Fehlalarm! habe ohne Last (LAMP) getestet, es funktioniert nicht mit dem Relaismodul oder RPi HAT.
Ich fange an zu glauben, dass ich darauf aus bin, etwas Unmögliches zu tun. Ich denke, ich habe nur noch die Optionen von SSRs und / oder Software-"Entprellen" übrig ...
Andrej Pro
Chris Stratton
maco1717
maco1717
maco1717
Andrej Pro
maco1717
Prasan Dutt
maco1717
Prasan Dutt
maco1717