摘 要
本设计制作了以STM32f103C8t6微控制器为处理与控制系统,以三路LDC1000电感数字转换器与蜂鸣器为检测系统,以双路减速直流电机与L298N电驱为动力系统的智能化循迹小车,实现了循迹、硬币检测、测距三大功能。循迹功能调用检测系统、处理与控制系统和动力系统,采用检测-控制原理实现,当小车运行时,通过检测系统获取赛道信息,利用处理与控制系统计算出小车当前状态与应变状态,而后处理与控制系统输出PWM波到动力系统改变小车运动状态。硬币检测功能通过处理与控制系统处理检测系统输出的硬币特征值实现。测距功能通过测距系统输出TTL电平到处理与控制系统,依次运算距离值并返回到测距系统,在OLED屏上显示。实验表明,小车平均显示距离为673.33cm时,其平均显示时间为31.33s。
关键字:STM32f103;LDC1000;智能化循迹;PWM控速;差速控向
Abstract:
This design is the intelligent tracking vehicle, which use the STM32f103C8t6 microcontroller as the processing and control system, the LDC1000 inductive digitizer and buzzer as the detection system, the deceleration DC motor and L298N electric drive as the power system. It has three functions like tracking, coin detection and ranging. The tracking function use the detection system, the processing and control system and the power system, adopts the detection-control principle. When the trolley is running, the track information is obtained bye the detection system, the current state and the strain state of the trolley are calculated by the processing and control system, and then The processing and control system send out a PWM wave to the power system to change the motion state of the car. The processing and control system processing the coin feature values to implement the coin detection function. The ranging system outputs the TTL level to the processing and control system which sequentially calculate the distance value and returns to the ranging system for display on the OLED screen to implement the ranging function. Experiment shows that the average display distance of the trolley is 673.33cm, the average display time is 31.33s.
Keywords: STM32f103; LDC1000; Intelligent tracking; PWM control speed; Differential speed direction control
1 系统方案与分析
1.1 总体设计
智能化寻迹小车总体由检测系统、动力系统、处理与控制系统、测距系统、电力系统组成。
检测系统:由三路LDC1000电感传感器监测,检测到的数据传入单片机中。
动力系统:通过电流大小来控制电机转速,电流越大,电机转速和输出的扭矩就越大。电流的大小通过外部PWM的占空比来调节,使之能够根据需要做出相应的转向、加速等动作。
处理与控制系统:由MCU组成,负责数据处理与控制信号输出。
测距系统:由OLED显示、光电传感器两部分组成。OLED显示将单片机处理的结果进行实时显示,方便用户及时了解小车当前的距离和时间,蜂鸣器主要是根据硬币所在位置做出响应来报告位置。
电力系统:由两节18650电池提供能源,由降压电源将电压调至各系统适用的电压。
1.2 方案论证
1.2.1 小车车型设计方案比较选择
按照大赛要求,小车投影不超过A4纸大小,且小车运行后,不得有任何人工干预,故制定了两种方案:
方案一:双轮双驱小车
中部底部采用常规两轮,前后底部使用单个万向轮,且车长只有四轮车的三分之二,车身更加轻盈,这样方便小车进行转向,但稳定性较弱。
方案二:四轮四驱小车
前后底部都是用常规两轮,车身长度更长,且更加稳定,但摩擦更大,转向力度要求更高,不方便控制。
结论:根据要求和方便使用,我们选择了方案一。
1.2.2 传感器设计方案比较选择
方案一:LDC1000
LDC1000是世界上第一个电感数字转换器,从而在一个低功耗、小封装尺寸解决方案内提供电感感测的优势。此产品采用一个小外形尺寸无引线 (SON)-16封装,并且提供了几种运行模式。其串行外设接口(SPI)简化了与微控制器(MCU)的连接方式[1]。
方案二:LDC1314
LDC1314属于电感-数字转换器(LDC),通过测量LC谐振器的振荡频率。该器件输出数字值与振荡频率成比例关系。此频率测量值可被转换为一个等效电感。
结论:综上两种方案选择方案一。
1.2.3 电机设计方案比较选择
方案一:采用步进电机
步进电机在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
方案二:采用减速直流电机
通过电流大小来控制电机转速,电流越大,电机转速和输出的扭矩就越大。电流的大小一般可以通过外部PWM的占空比来调节。这类电机一般用于扭矩和转速控制,无法做到精确的位置控制,常用在轮式机器人上,控制其行走。
方案三:采用伺服电机
伺服电机可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。
结论:综合以上三种方案,选择方案二。
1.2.4 显示器设计方案比较选择
方案一:1602液晶显示
1602液晶显示驱动简单,易于控制,功耗小,且显示信息量大,可以直观地观测到小车走过的距离和经过时间。
方案二:LED数码管显示
数码管显示亮度高、色彩选择多,但数码管占用I/O资源多,控制复杂,功耗较大、显示信息量较少且单一。
方案三:TFT-LDC显示
16位真彩色,显示信息量大且突出,双向数据线,但功耗大、占用I/O口多。
方案四:OLED显示
拥有128*68超高分辨率,且拥有超高可视角度,超低功耗,宽供电范围。
总结:综合考虑,我们采用方案四。
2 系统理论分析与计算
码盘与小车运行距离运算
车轮外径D = 22cm,光电码盘一周码盘孔数N = 20个,车轮转动中检测到码盘孔即产生电平跳变,故车轮转动一周产生20次电平跳变。
则检测到一次电平跳变车轮转动距离d = D/N = 22cm/20 = 1.1cm。
由于车轮相对于地面并未发生滑动,所以车轮转动距离可以近似等于小车行驶距离,当光电传感器检测到number次码盘孔时,行驶距离S = d*number。
3 电路与程序设计
3.1 电路设计
系统总体组成与原理框图如图1所示。
图1 系统总体组成与原理框图
3.1.1 电机驱动模块电路原理
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。
模块内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。
由L298N芯片驱动电机,可驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
图2所示是电机驱动模块电路。
图2 电机驱动模块电路
3.1.2 光电传感模块原理
图3所示是光电传感模块电路,该模块用于测距。采用槽型对射光电,只要在非透明物体通过槽型即可触发(配合小车码盘使用)输出5V TTL电平。采用施密特触发器去抖动脉冲,非常稳定。
图3 光电传感模块电路
3.1.3 电源模块
输入电压:3.2-35V。
输出电压:1.25-30V连续可调(建议空载调试)。
输出电流:额定电流1A,最大2A(需加散热片),如果输出功率大于15W,建议加上散热片。
转换效率:最高92%(输出电压越高,效率越高)
静态功耗: 3mA左右。
3.2 程序设计
3.2.1 程序流程图
如图4所示是程序流程图。其中,传感器基值用于检测区分铁丝或是硬币,以便实现循迹和硬币检测报警功能,该基值的调试获取过程见4.1.1节。
图4 程序流程图
3.2.2 程序功能描述与设计思路
(1)循迹功能
使用三个传感器(同时启动)实现赛道识别,其中左右传感器负责控制小车在轨,中间传感器控制小车加速功能。具体功能如下:
左侧传感器:检测到赛道后,控制小车左轮不转右轮转动,实现小车左转,使小车从向右的方向恢复为向前方向;
右侧传感器:检测到赛道后,控制小车右轮不转左轮转动,实现小车右转,使小车从向左的方向恢复为向前方向;
中间传感器:检测到赛道后,即可基本确定小车前进方向与赛道方向同向,此时控制左轮与右轮同时转动,实现加速。
(2)硬币检测报警功能
由于传感器在检测到硬币时返回的值远大于检测到铁丝时所返回的值,故可在基准值的基础之上设置两个档位来区分铁丝和硬币:当传感器返回值较基准值变动较小(约为40)时检测为铁丝,当传感器返回值较基准值变动较大(约为623)时检测为硬币,随后启动蜂鸣器报警。
为了避免硬币检测数据对循迹功能的干扰,在数据被判断为由硬币产生时,循迹功能实现程序选择忽略该数据。
(3)测距功能
在车轮转动中,光电传感检测到小车码盘孔时触发输出5V TTL电平,产生电平跳变。程序通过启动STM32f103C8t6外部中断,采用下降沿触发中断。利用中断服务函数中的EXTI_GetITStatus[2]检测中断发生与否,实现电平跳变次数(即码盘孔数)计数,进而计算小车行驶距离(计算原理见第2节)。
(4)OLED显示功能
利用SSD1306(OLED启动芯片)控制显示参赛信息、小车运行时间和运行距离。
4 测试方案与测试结果
4.1 各模块测试方案与结果分析
4.1.1 LDC1000传感器测试
测试方案:将动力系统屏蔽,OLED直接显示传感器当前获取值。
测试结果:LDC1000输出值测试结果见表1。
表1 LDC1000输出值测试结果
测试情况 |
左侧传感器 |
中间传感器 |
右侧传感器 |
基准值 |
2436-2442 |
2460-2468 |
2373-2378 |
铁丝位于传感器正下方 |
2719-2725 |
2683-2685 |
2632-2635 |
硬币位于传感器正下方 |
3276 |
3262 |
3276 |
结果分析:
同一型号的LDC1000存在体质不同问题,在没有检测到铁丝的情况下,传感器自身返回数值也有所不同,故各传感器检测到铁丝硬币的数值区间需单独设计。
4.1.2 PWM控速测试
测试方案:屏蔽检测系统,直接由while(1)循环控制小车运行,实现直走与90°转向。
测试结果:PWM控速测试结果见表2。
表2 PWM控速测试结果
功能 |
左轮 |
右轮 |
直行 |
68 |
65 |
90°转向 |
X |
68 |
结果分析:
在实现差速控向的过程中发现,在相同的控制电压下,即使同一型号的电机,也有转速差别,故想要精准控制电机转动,必须对各电机的体质进行测试,得出具体的区别。
4.2 整车测试结果
在各模块测试结束后,对小车最终的循迹时间和距离进行了测试,外部测试时间为使用人工计时,显示时间为OLED显示的时间,人工记录较和设备记录有一定误差。如表3所示,在平均显示距离为673.33cm时,其平均显示时间为31.33s;外部测试时间和显示时间的误差为1.44s。
表3 整车测试结果
测试次序 |
外部测试时间 (单位:s) |
显示距离 (单位:cm) |
显示时间 (单位:s) |
1 |
29.76 |
650 |
31 |
2 |
30.13 |
670 |
32 |
3 |
29.78 |
700 |
31 |
平均值 |
29.89 |
673.33 |
31.33 |
5 总结
在开始阶段,小组成员只想着解决物理结构或者解决控制逻辑,但是在最终调试发现并不存在确定物理结构就可一劳永逸的调试代码,或者一套控制方案匹配多种物理结构的情况,小车的运行情况是物理结构与控制逻辑共同影响的,面对具体问题,很多时间是需要两方面同时更改的。
在实际调试时一定要先出具体调试方案再行调试,且方案必须遵循控制变量法,这样才能在实际调试中逐个排查,真正解决问题。
参考文献
[1]《LDC1000 电感数字转换器》 Texas Instruments,ZHCSBM0C –SEPTEMBER 2013–REVISED SEPTEMBER 2015
[2]《32 位基于 ARM 微控制器 STM32F101xx 与 STM32F103xx固件函数库》 UM0427 用户手册 UM0427 Oct. 2007 Rev 2
注:站内阅读,请勿转载。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。