要根据传感器特性做防抖,另外最好找一找干扰源是啥。。。
我软件滤波都是这么弄,如下:
程序用状态机,只在某个状态去读取。其他状态就是不要的。如果是上限和下限,防碰撞之类的。不用中断,用软件去判断,例如持续100ms的的高电平,是有效的。持续100ms的低电平是有效的,进行滤波。if(gpio) { if(++high_acc>T_SET_High) x=1; low_acc=0;}else{ if(++low_acc>T_SET_Low) x=0; high_acc=0}另外,你那个电平转换的三极管,下拉电阻多少的。电阻要下降。电路图有吗?
谢谢以上大家的热心解答,我的电路如下。其中,图中左侧为进入MCU引脚触发中断,右侧为传感器输出信号,兼容两种不同传感器。
换成P管试试
Vin多少?信号电平?不可能一点带载能力都没有吧,哪怕uA级别。另外,你这个图.........
看了你的电路图,请问bc850,用电压跟随器? 3.3/2M=1.65ua,按datasheet这么小的电流三极管的β取300 基极,na级别就能驱动了。输入阻抗太高了。很容易受干扰的。况且这个电路如果输入电压高于3.3,估计得倒灌到3.3V上去。这电路没看懂。
电平转换,应该是共射放大电路吧。这种输入阻抗低些!
最直接的办法应该先要弄清干扰源是啥吧
学习下大家的方法
看大家的经验