首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机械水表双输入脉冲计数

机械水表双输入脉冲计数
EN

Stack Overflow用户
提问于 2016-11-02 13:18:44
回答 2查看 192关注 0票数 0

我想用STM32L单片机来计算机械水表中的脉冲数。水表的输出来自两个簧片开关。

开关的操作说明如下:

  • 在指针或齿轮在寄存器上运行时,安装在指针或齿轮上的磁铁将分别“关闭”或“关闭”两个簧片开关,但绝不会同时“打开”。
  • 两个簧片开关在指针的一轮中操作两个“打开”和两个“关闭”/齿轮意味着一个信号输出。

如何读取这两个输入,并能够计算C中的脉冲数?注:1脉冲= 100升。

EN

回答 2

Stack Overflow用户

发布于 2016-11-02 16:27:08

我不知道你到底在问什么,因为不管你是投票还是使用边缘触发的中断,你所问的都是如此简单。主要问题是取消开关信号。对于脱扣器,您应该确定您的仪表的最大流量,这并不是您真正关心的直接,但它将允许您计算最大开关周期。使用最小开启或关闭时间的一些重要部分来执行您的退出。

票数 0
EN

Stack Overflow用户

发布于 2016-11-09 17:36:21

两个开关相距180度,一次只能做一个开关,这一点就是不需要拆下开关。

实际上,代码需要更复杂,但基本算法可以用以下方式表示:

代码语言:javascript
复制
while(1) {
    while(switchA() == 0);          // wait for switch A to be made
    litres += 100;                  // clock up unit volume
    display(litres);                // tell the user
    while(switchB() == 0);          // wait for switch B to be made
}

当一个簧片开关靠近磁铁的时候,有多少脉冲来自它并不重要--除了第一个脉冲之外,所有的脉冲都会被忽略,因为算法会看到另一个开关。

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

https://stackoverflow.com/questions/40380972

复制
相关文章

相似问题

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