HC_SR501人体红外模块不能使用啊!什么情况?(51单片机,ARM,嵌入式,电子电路)

问题是这样的,我在淘宝上买了一个传说中的人体红外感应模块,它是这样的,感应到人体的时候模块会输出高电平,没感应到的时候会输出低电平。。。
模块提供了3个引脚,一个GND,一个VCC,一个是输出引脚,我就直接把它的GND,vcc接51单片机的GND跟VCC了,把它的输出引脚直接接在了单片机的 IO 口上,然后写程序不停的检测 IO口状态,结果发现根本就没发现那个模块输出高电平啊。。。不管我人站在哪个位置,,它都是一直输出低电平。。。更离谱的是,我把模块的VCC拔起来,只给它接了GND跟输出引脚,它也能输出低电平。。。什么情况啊。。。我跟卖家联系了,结果它说他们一天卖了几十个都没人反应有问题,然后又寄了一个给我了,还是一样的情况。。是不是哪里要做处理才能直接接单片机 IO 啊。。。求大神啊。。。小弟在线等啊
问题已经解决了,我百度了好久,发现是因为51单片机内部有傻100k的上拉电阻,所以高电平驱动能力很弱,这个人体红外模块输出的是3.3V,应该是不够高所以单片机内部检测不到高电平?是这样理解的吧。。。。我按照网上说的,先把 IO口置为高,然后再去读取 IO口就能读取出外部输入的电平了。。。问题虽然是解决了,但是我不懂为什么先置高再读取即可读出外部输入的电平?求硬件方面的前辈解释一下啊。谢谢了

你把I/O置为高,问题就解决了,这说明原先你的I/O口是置低的。51单片机是准双向I/O口,除了P0口之外,其它口内部都有上拉电阻。准双向I/O的特点是,具有较大的灌电流(10毫安以下),但只有微弱的拉电流(0.5毫安以下),所以,如果将I/O置为低电平,外部输入的高电平信号有可能也会被强制拉低,这样不但无法正确读取外部信号,而且还有可能损坏I/O口。正确的做法,是在读取I/O口信号之前,先将I/O口置为高电平,之后再读取I/O口的信号。这样说你也许还不一定会理解,但你只要记住,准双向I/O要接收外部信号,一定要将I/O口置高,而要向外部输出信号,置高或置低都可以。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-30
只接电源和gnd, 用万用表量下追问

问题找到了,我接的是51单片机,内部都有100k的上拉电阻。。。

第2个回答  2013-05-03
这个模块不是很适合初学者用,我昨晚试了1个晚上+昨天早上才弄出来的
第3个回答  2017-12-21
你好,我也是这个情况,可为什么我把那个口直接接到高电平单片机也可以检测到呢?红外模块还是不能正常工作?
相似回答