解释方波的问题

时间:2016-03-24 21:35:43

标签: lua esp8266 nodemcu

我试图使用ESP8266 SoC读取水流量传感器,据说产生方波作为输出。我认为在中断模式下使用GPIO端口来计算上升沿转换是一件简单的事情 - 实际上最初似乎有效。然后我将固件从0.96升级到1.5并且它已经停止工作,我看到当轮子旋转时没有转换。

但是,如果我将引线连接到引脚[用于GPIO我正在使用]并立即将其触摸到VCC,则会按预期调用中断程序,因此我知道传感器连接到右引脚,并正确注册中断例程。我的代码:

function intCb(level)
    SpinCount = SpinCount + 1
    local levelString = "up"
    if level == gpio.HIGH then
        levelString = "down"
    end
    gpio.trig(pin, levelString, intCb)
end
gpio.write(pin, 0)
gpio.trig(pin, "up", intCb)
gpio.mode(pin, gpio.INT, gpio.FLOAT)

那我错过了什么?我需要更多支持电路来读取方波作为输入吗?如果是的话那么它最初是如何运作的?

2 个答案:

答案 0 :(得分:2)

对于涉及硬件的任何事情,很难在SO上给出一个明确的答案。在大多数情况下,一个基于提示(有时是预感)。一些想法:

  • gpio.FLOAT可能应该是gpio.PULLUP(除非你有一个外部上拉电阻)。
  • 您的设置似乎与例如根本不同使用按钮或开关触发某些事件。因此,您可能想要使用某种去抖或节流功能。
  • 由于您似乎对上升的下降边缘感兴趣(当您在updown之间切换时),您也可以倾听{{1} ,不?

所以,假设我得出了正确的结论,可能会证明以下generic skeleton有用:

both

答案 1 :(得分:1)

我使用555定时器芯片作为施密特触发器解决了这个问题:

schematics