【NUCLEO-L476RG开发】+传感器系列第一帖——红外!多图慎入
本帖最后由 星辰一方 于 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%占空比下的波形图,这个区分度明显要好得多。
有人可能会说,测距、避障干嘛不用超声波?
首先,这里是探究红外发射与接收的基本原理,从这个实验可以直观地了解到红外对管的工作原理,而红外对管是最简单的红外传感器,其他红外接收头等均基于此。
其次,超声波模块成本高,指向性不如红外强,另外就是红外对颜色敏感,可以用于循迹,而超声波模块不能。
最后,还有一点就是,曾经有个搞控制的朋友说过,用足够精度的硬件去搞开发,大家都能搞,用低端低精度的硬件做搞定项目,这才叫控制,我不是搞控制的,但是我还是比较喜欢这句话:loveliness:。这个红外用的好的话,完全可以用作码盘编码传感器,光电码盘一般都是对射安装,而如果使用此方案中的红外,就可以变成反射,只需单测安装,非常便利,这个后续我会尝试下。
这个网速下这些图片把我累得,反复保存了4次才搞定,我得歇会…… 红外对管这样并排放置能有效接收吗:o 多谢分享,不错。。。。 不错不错,还带了串口打印。
请问楼主这个软件是什么软件,麻烦告知下。
多谢分享...:) 厉害。。 厉害厉害,给楼主点赞 多谢分享 嗯,用红外测距