本帖最后由 星辰一方 于 2015-11-20 19:56 编辑 【NUCLEO-L476RG开发】+比较器COMP1试用 【NUCLEO-L476RG开发】+传感器系列第二贴——MPU6050 【NUCLEO-L476RG开发】+传感器系列第三贴——玩转超声波测距 这是我的L476试用贴第一帖。传感器:【红外对管】,首先,红外包括用于夜视照明、通讯、检测等多种领域各种各样,本帖中提到的红外只红外对管,就是最简单的那种红外反射和接收二极管。 实验目的:1、使用cubemx和HAL库函数,学习与熟悉PWM输出、AD转换、DMA传输、串口输出、I/O外部中断等的操作步骤; 2、探究红外对管发射接收过程,讨论红外对管用于距离测量(10cm近距离)的可行方案。 实验内容:1、使用HAL库配置TIM2的CH1为PWM输出,通过三极管驱动红外发射管,控制红外发射强度; 2、打开ADC1中10个AD通道,并使用DMA方式连续转换200组数据,经串口打印输出,按键每按下一次,进行一次200组数据的转换并打印输出; 3、进行printf重定向; 4、对红外测量数据进行对比分析,评估红外测距的可行性,和大家讨论红外测距方案设计。 下面是详细过程: 1】电路原理图和实验板连接: 2】cubemx工程创建: 配置ADC1,打开图中10个通道,配置为单端输入。(实验中只用到一个通道,此处只是为了练习多通道ADC配置过程和数据在Scan模式下的传输及数据组织形式) 打开定时器2的CH1,使能定时器时钟 打开USART2为异步,如下图 时钟配置,使用默认即可,无需特殊配置,如下: 打开TIM2配置页面,配置预分频、计数周期、占空比三个参数,如下图: 打开TIM2全局中断 配置ADC1,这一步非常关键,而且需要配置的参数也很多,一定一定要严格按照下图所示配置,未显示部分按照rank1配置,注意通道要依次往下选,不要选重复了,如下图: 打开ADC1中断 增加ADC1的DMA通道,注意配置信息,如下图: 打开USART2配置页面,修改图中字长配置为8位,如图: 打开USART2的中断 打开GPIO配置页面,配置PC13外部中断上升沿触发,如下图: 打开NVIC配置,选中图中外部中断10——15线的开关, 配置全部完成,生成工程前记得选中下图中选项,生成对应.c和.h文件,否则代码会比较乱。 代码我就不详细讲了,见附件。 3】实验过程: 因为进行的是测距实验,首先系统上电,使用一个物体挡住红外对管,这里使用了一个充电宝,充电宝下方有一直尺,用于测量距离,如图: 下面是使用50%占空比PWM波经三极管驱动红外发光管下测量的数据曲线图,图中标有2cm……10cm的界限,每个距离200个点,可以看出上界限不够明显,但是下界限比较明显,由此波形可以得出:原理上,经过滤波处理,完全可以实现一定精度的红外测距。 下面是90%占空比下的波形图,这个区分度明显要好得多。 有人可能会说,测距、避障干嘛不用超声波? 首先,这里是探究红外发射与接收的基本原理,从这个实验可以直观地了解到红外对管的工作原理,而红外对管是最简单的红外传感器,其他红外接收头等均基于此。 其次,超声波模块成本高,指向性不如红外强,另外就是红外对颜色敏感,可以用于循迹,而超声波模块不能。 最后,还有一点就是,曾经有个搞控制的朋友说过,用足够精度的硬件去搞开发,大家都能搞,用低端低精度的硬件做搞定项目,这才叫控制,我不是搞控制的,但是我还是比较喜欢这句话。这个红外用的好的话,完全可以用作码盘编码传感器,光电码盘一般都是对射安装,而如果使用此方案中的红外,就可以变成反射,只需单测安装,非常便利,这个后续我会尝试下。 |
AD_Sample.rar
下载28.77 KB, 下载次数: 47, 下载积分: ST金币 -1
接受管收到的光强不同 输出的电压也不同,楼主就是机智的采集了电压信号来得到接收光强的大小,也就是反射面越远,反射回来的光越少。
楼主真机智也!确实是外接光对这个影响很大
一般循迹的时候,要摸提前确定好电压阀值;要摸就是像LZ样采集电压比较大小来循迹
间隔开不好啊,距离远了对反射光接收不利啊,红外发射管就是一个发光二极管呀,发射光是一直发射的,信号也会一直接收,但是障碍物距离不等信号波形是差异性是很大的,见上面曲线图,间隔开之后波形就没有区分度了,这个可以试验,用数据比较直观,这个就是红外避障和循迹工作的基本原理,
无障碍也有反射光!这多正常啊!没有发射管一样有反射光,这多正常的事儿啊,你见到电视遥控有问题吗?你见到循迹模块有问题吗?要不我上面画曲线图说各段区分度干嘛?有反射光就会错误吗?但遥控、循迹不是都好好的?你能说你遥控器没按的时候房间没有红外反射光?
请问楼主这个软件是什么软件,麻烦告知下。
好好学习
多谢分享