1.发射波形
<1>38k不间断发射
<2>38k间断发射
2.接收检测
<1>检测有遮挡物执行动作,检测遮挡物持续停留不再执行动作
t1:PWM打开输出时间,t2:PWM关闭输出时间
t3:接收波t1时低电平时间,t4:接收波t2时低电平时间
t3 + t4 = t1
//t1+t2=一个周期,多检测几个周期,可以防干扰波,也可以调节灵敏度
void Hw_Recv_Scan(void)
{
if(Flg_Hw_PwmOn) //t1时检测接收低电平
{
Flg_Hw_PwmOff = 0;
if((!IO_HW_RecvSda) && (!Flg_Hw_Low))
{
Hw_RecvLow_Count++;
Flg_Hw_Low = 1;
}
}
else //t2时检测接收低电平
{
if(!Flg_Hw_PwmOff)
{
Flg_Hw_PwmOff = 1;
Flg_Hw_Low = 0;
if((Hw_RecvLow_Count > 0) || (Flg_Hw_HandOn))
Hw_PwmOff_Count++;
if(Hw_PwmOff_Count > 4)
{
if(Hw_RecvLow_Count > 4) **//t1+t2=一个周期,多检测几个周期,可以防干扰波,也可以调节灵敏度**
{
if(!Flg_Hw_HandOn)
{
Flg_Hw_Ok = 1; //判断红外感应到物体
}
Flg_Hw_HandOn = 1; //遮挡物是否持续停留
}
else
{
if(Flg_Hw_HandOn)
{
Flg_Hw_HandOn = 0; //无遮挡物则解除
}
}
Hw_RecvLow_Count = 0;
Hw_PwmOff_Count = 0;
}
}
}
}
3.其它注意
<1> 感应距离主要调节发射管电阻
<2> 有的接收器在持续发射38K波会接收到1S左右的低,要求很高的灵敏度和长距离时
<3>注意发射管不要漏光
<4>感应距离的远近t3和t4时间不同
<5>其它pwm的光可能会将红外反射光抵消,接收器接收不到