在main程序里面,我要判断一个引脚的输入信号状态。
- if(!Read_pin(100) && pucDst[8]==0) //P1.15
- pucDst[8]=1;
- else if(Read_pin(100) && pucDst[8]==1) //P1.15
- pucDst[8]=2;
- else if(!Read_pin(100) && pucDst[8]==2) //P1.15
- {
- pucDst[8]=3;
- }
- pin口是一个导轨上的某个轴的限位开关,而且是机械方式的,感觉有点误触发。请教怎么解决
- if(!Read_pin(100) && pucDst[8]==0) //P1.15
- pucDst[8]=1;
- 刚开始电机正方向运动,当限位导通的时候,把pucDst[8]设置为1.
- 这个时候,电机反方向走,问题就来了,限位开关要逐步被释放。这个时候信号就有误触发的情况,还没完全释放开,就会出现导通与不导通切换的情况。
- 这样的话, pucDst[8]先等于2,紧接着就等于3了。这样我逻辑就不对了。
- 限位开关从被按下,到释放。应该是从1到2.不能等于3.但是在释放的过程中有误触发,所以就会从2,到3的变化。
- 请教程序怎么解决
复制代码
此帖出自
小平头技术问答
根据开关特性,加个合适的软件滤波
针对这个情况,你可以用示波器观察下这个阶段的开关特性,分析出 开、临界、关 三种状态的电平特性,利用程序上的多次采样计数器,将临界态过滤掉即可
一周热门 更多>