工业PIR传感器始终为高

时间:2018-08-23 12:33:45

标签: python automation arduino raspberry-pi3 sensor

使用工业PIR传感器(ekmc1603111)[link-https://www.amazon.in/Panasonic-EKMC1603111-Pir-Sensor/dp/B016KL1EQG/ref=sr_1_1?s=industrial&ie=UTF8&qid=1535017218&sr=8-1&keywords=pir+sensor+ekmc1603111]。它是数字传感器,在树莓派上带有用于实验室自动化的继电器,当检测到运动时,实验室值会变高,而继电器会变高。 &当它变低时,继电器也变低,我的问题如下,当检测到运动或实验室传感器中有人时,万用表上给出4-5V的值,其正确的n继电器变高,但是当无运动时n没有人在场的传感器仍然给我2-3V而不是零电压,这里的继电器总是设置为高电平。(这里的继电器必须设置为 LOW ,所以请帮我解决这个问题,VCC-5V,GND -GND,SINGAL-GPIO 18,继电器-GPIO 5,6。预先感谢。下面是我的代码。

from threading import Thread, Event import time

import RPi.GPIO as GPIO 
GPIO.setmode(GPIO.BCM) 
GPIO.setup(18,GPIO.IN) 
GPIO.setup(5,GPIO.OUT) 
GPIO.setup(6,GPIO.OUT)

class MyThread(Thread):
    def __init__(self, timeout=20):
        super(MyThread, self).__init__()
        self.intruder_spotted = Event()
        self.timeout = timeout

        self.daemon = True

    def run(self):
        while True:
            if self.intruder_spotted.wait(self.timeout):
                self.intruder_spotted.clear()
                print("Intruder")       
                GPIO.output(5,GPIO.HIGH)
                GPIO.output(6,GPIO.HIGH)
            else:
                print("No intruder")                                                                               
                GPIO.output(5,GPIO.LOW)
                GPIO.output(6,GPIO.LOW)


t = MyThread(20)


try:
    t.start()
    while True:
        i=GPIO.input(18)
        if i==1:
            t.intruder_spotted.set()

        time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()
    exit(0)

1 个答案:

答案 0 :(得分:0)

尽管该传感器设计用于最高7V的工作电压,但实际上PI SoC的GPIO引脚不能承受5V的电压!这意味着您必须从3.3V上电为传感器供电,或者继续从5V供电,但是在这种情况下,您需要在传感器的输出和Pi的GPIO之间添加一个分压器。

我在数据表中找不到有关低信号电压电平的信息,但是,我认为从3.3V供电给传感器将解决问题。如果没有,您可以使用运算放大器来解决此问题。