为了和环境光区分设计了调制信号版本的红外对光

非载波下的红外光限位,检测在民用以及工业应用特别广泛,但是当自然光较强,或者室外效果非常差劲,博主也遇到这个问题。
博主使用红外对光管做把手检测,当手握住把手后输出高电平,撒开把手后输出低电平。下面是电路图:
电路的几点说明:
j3和j1是对插接口,红外对光管使用的型号是st178。
当对光管被遮挡后,out端电压降低,如果比较器a-端电压低于a+端,outa就会输出高电平,此时q1会导通,输出高电平。
电路使用r5和r6调节基准电压。
当两个对光管都被遮挡后a-端电压大约在1v左右,a+的电压基准大概为3.33v。
结果:
最后在现场,我是懵逼的!!! 虽然现场在室内,但是,窗户的自然采光量已经导致a-端电压在1v左右,当时大约在中午,下午把手都恢复正常了。但是这肯定不合格。因此为了和环境光区分设计了调制信号版本的红外对光。
红外调制版本电路图:
方案说明:
该方案使用红外发射管调制38khz发射,使用hs1838接收,hs1838收到38khz红外信号后,会输出低电平(但是不会持续输出),因此38khz也得编码,这里使用30hz左右的方波信号进行编码。和红外通信原理类似。
第一种版本:
ne555调制版本
电路说明:
上面是发射电路,其中d1是红外发射管,左边用三极管构成一个多谐振荡器产生30hz开漏输出信号,右边是ne555产生38khz 60%占空比推挽输出信号,因此最终30hz信号载波38khz发射出去,接收端会输出30hz的方波信号,然后处理器检测这个30hz方波信号就可以确定有没有信号了,如果挡住了发射管,接收管不会有输出,挡住了接收管也是一个道理啦。
缺点就是元件数量太多了。
因为这个电路要装进把手里,所以一定要小。原件太多就尴尬了。
第二版本电路
这就简单多了,j3是hx1838,d2是发射管。单片机是stm8s103f3。
tim2作为38khz 60%占空比输出。 tim4产生30hz编码信号。
tim1_ch3输入捕获脉冲宽度。
最后完美解决干扰问题。
下面是具体片段代码:
定时器2产生38khz载波信号
tim2_deinit(); //定时器2 默认值tim2_timebaseinit(tim2_prescaler_4, 103);// 配置定时器2 主时基tim2_oc2init(tim2_ocmode_pwm1, tim2_outputstate_disable,60, tim2_ocpolarity_high);//输出pwm配置tim2_arrpreloadconfig(enable); //打开自动装载tim2_ccxcmd(tim2_channel_2, enable);tim2_cmd(enable);//使能
定时器4产生编码信号
tim4_timebaseinit(tim4_prescaler_128, 125);//1000hz触发频率tim4_itconfig(tim4_it_update, enable);//中断触发tim4_arrpreloadconfig(enable);tim4_setcounter(0x00);tim4_cmd(enable);
定时器4中断进行载波处理
interrupt_handler(tim4_upd_ovf_irqhandler, 23)//定时器4编码信号 {static bool flot=0; /* in order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ tim4_clearflag(tim4_flag_update);numb++;//清除标致 if(numb>15){//做一个延时使用 if(flot) {tim2_cmd(enable);flot=0;}//打开及关闭定时器2来控制38khz的输出和关闭 else{ tim2_cmd(disable);flot=1;} numb=0;
定时器1进行输入捕获
tim1_timebaseinit(1600, tim1_countermode_up, 10000, 0x00);//定时器一些设定tim1_icinit(tim1_channel_3, tim1_icpolarity_falling, tim1_icselection_directti, tim1_icpsc_div1, 0x00);//输入捕获设定tim1_arrpreloadconfig(enable);//自动重装载定时器tim1_ccxcmd(tim1_channel_3, enable);//使能第三通道tim1_itconfig(tim1_it_update, disable);//无更新中断tim1_itconfig(tim1_it_cc3, disable);//不打开第三通道捕获中断 tim1_cmd(disable);//关闭定时器
主函数处理
while(1){if(!gpio_readinputpin(gpioc, gpio_pin_3)){ //先检测到低电平 tim1_setcounter(0x0000);//然后清空计数器 tim1_cmd(enable);//打开定时器1 while(!tim1_getflagstatus(tim1_flag_cc3));//等待高脉冲 pwmdata= tim1_getcapture3();//获取到脉冲宽度 tim1_clearflag(tim1_flag_cc3);//清除标志位 tim1_cmd(disable);//关闭定时器1 等待下次处理 }if((pwmdata>310)&&(pwmdata5)led_on;}else {led_off;a=0;}}
实物图
这是发射接收传感器部分
处理器部分
效果说明:
非常稳定,使用安防监控红外灯照射,依然波形不乱。明天试试太阳底下效果。

什么是Zcoin和Zcash
恩智浦和LivingPackets通过可重复使用的智能包装推动电子商务变革,实现更加环保的在线购物体验
ROHM适用于恩智浦“i.MX 8M Nano系列”处理器的电源管理IC“BD71850MWV”
Nexperia超低电容ESD保护二极管保护汽车数据接口
华为多款设备即将升级鸿蒙OS系统
为了和环境光区分设计了调制信号版本的红外对光
阻容降压原理和计算公式
思歌锁业科技C061-SN门锁介绍
PLC零基础自学入门知识浅析
数据中台下的数据质量问题
ZYNQ器件的启动配置方法
vivoZ5x游戏性能实测 到底怎么样
2014 MWC:说说手机芯片的那些事
HSDPA技术特点及其部署策略
AI键盘综合评测:科大讯飞AI智能键盘D1能否成为市场热门之选?
基于汉王OCR技术的人脸识别方案介绍
Hololens江山不稳Meta2终于出货了
通通透透看SWITCH
机器人对交流伺服电机驱动器有什么要求
关于MSP430FR2311的特点及应用介绍