首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工业PIR传感器总是高的

工业PIR传感器总是高的
EN

Stack Overflow用户
提问于 2018-08-23 12:33:44
回答 1查看 470关注 0票数 0

我正在使用工业PIR传感器(ekmc1603111) 1?s=industrial&ie=UTF8&qid=1535017218&sr=8-1&keywords=pir+sensor+ekmc1603111]。这是一种数字传感器,带有继电器在raspberry pi上实现实验室自动化,当检测到运动时,实验室值会上升到高n个继电器。当它转到低继电器时,我的问题如下:当检测到运动或实验室传感器中的人在多米上给出4-5V值时,它正确的n个继电器就高了,但是当没有运动n时--没有人在场传感器仍然给我2-3V而不是零,这里的n个继电器总是设置为。(这里的继电器必须设置为低,所以请帮助我摆脱这个问题,VCC-5V,GND-GND,信号GPIO 18,继电器-GPIO 5,6。预先谢谢。下面是我的密码。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-08-26 00:34:26

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

我无法在数据表中找到有关低信号电压水平的信息,但是,我相信从3.3V给传感器可以解决这个问题。如果没有,您可以使用运算放大器来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51985916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档