黄 健,董三锋,王利平
(西京学院,西安710123)
自动循迹智能小车是近年来研究的一个热点,在各种电子设计竞赛中都有所涉及,比如飞思卡尔智能车大赛、全国大学生电子设计竞赛、TI杯比赛等。智能车融合了传感器、电机控制、微处理器等多项硬件技术,为有效的对其进行控制,还要加入软件算法。智能车控制是典型的软硬件技术的结合体,具有极大的研究价值,其中自动循迹是智能车要解决的一个主要技术问题。早期的循迹采用光电传感器,用黑白线作为跑道标识。近几年,随着电感传感技术的发展,有人提出采用铁丝作为跑道,实现自动循迹[1-3]。
本文正是基于此提出采用TI公司新型数字电感传感器 LDC1000 作为传感器[4-5],检测直径为0.7 mm的细铁丝构成的跑道。由于铁丝太细,必须采用自制的线圈来检测,否则根本检测不到。经过多次的实验,绕制成功了合适的线圈,能够明显感应到细铁丝。但由于只有一个LDC1000,当铁丝在线圈的正中心时,值最大,向左或者向右偏移时,都会减小,给软件编程造成了一定的困难。采用试探法结合状态图法,能够有效地控制小车的左右移动和前进,较好地完成了自动循迹的功能。
系统设计框图如图1所示。LDC1000传感器检测到铁丝的值后,通过一个SPI总线接口传送给STM32微处理器。由于选择的主控是STM32F103RBT6[6-7]。它有 2 个 SPI 接口,用另外一个连接到1.44英寸TFT真彩屏,显示采集到的数据和其它信息。电机驱动采用TB6612,体积小,比L298性能好。其中2个直流电机都带有编码器,可将其连接到STM32的定时器进行测速。通过软件编程控制左右电机速度,使得小车能够平稳前行。
图1 系统框图
LDC1000原理图如图2所示。图中DCLK是LDC1000时钟输入信号线,SCLK是SPI总线通信所需时钟线,SDI是SPI总线数据接收信号线,SDO是SPI总线数据发送信号线。由于LDC1000采用SPI总线通信,所以将LDC1000的SCLK连接到STM32的PA5(SPI1_SCLK),将 LDC1000的 SDI连接到STM32的 PA7(SPI1_MOSI),将 LDC1000的 SDO连接到STM32的PA6(SPI1_MISO),将LDC1000的SCLK连接到 STM32的 PA5(SPI1_MOSI),将LDC1000的CSB连接到STM32的PA4(SPI1_NSS),为实现有效通信,双方必须共地。此外,LDC1000的DCLK作为主时钟,要求产生6 MHz的频率,用STM32的PC6通过定时器的PWM波产生。图中LDC1000与INA和INB连接的电容C和电感L为振荡电路,基于电涡流原理[8],能够与外部检测的金属产生谐振。
图2 STM32与LDC1000连接图
当外部有金属物体时,在电感L上将会产生一个谐振频率。而LDC1000对金属物的探测也就是基于测试LC谐振频率的方法。LDC1000的外部基准时钟是6 MHz,由STM32的PC6产生。使用内部寄存器计数方法作频率计。其中LC的谐振频率通过式(1)计算:
式中:Fsen是LC谐振频率;Fex是外部时钟基准频率,取值为6 MHz;Fcnt是LDC1000内部计数器值,TL是LDC1000内部寄存器设置的响应时间。对式(1)两边分别求倒数,并做适当变化,可得到:
式中:1/Fsen是LC谐振周期;1/Fex是基准时钟周期。式(2)表明在TR个LC谐振周期内,使用LDC1000的Fcnt计数器记录基准时钟的个数来推算LC的谐振频率。
根据电涡流原理,要检测直径为0.7 mm的细铁丝,必须要产生足够大的涡流,就必须增大电感量L的值.通过多次实验,绕制了直径为4 cm的电感线圈,如图3所示。
图3 自制电感线圈
该线圈采用0.15 mm的细铜丝绕制而成,直径为4 cm,电感量为0.180 mH,与其匹配的电容值为2 nF。
TB6612是东芝公司推出的一款直流电机驱动芯片,集成度高,可同时驱动 2路直流电机[9]。TB6612的硬件连接图如图4所示。
图4 TB6612硬件连接图
图4 中PA0,PA11,PA12控制1路电机,PA0产生PWM波,控制电机的转速;PA11,PA12控制电机的方向。PA1,PB10,PB12控制另1路电机,PA1产生PWM波,控制电机的转速;PB10,PB12控制电机的方向。AO1,AO2连接1路电机;B01,B02连接另外1路电机。
TFT显示单元采用1.44英寸SPI接口真彩屏,显示电路设计如图5所示。
图5 TFT显示电路设计原理图
为提高1.44 TFT真彩屏的刷屏速度,采用硬件SPI接口与STM32相连,其中 SCLK连接到 PB13(SPI2_SCLK),DI连接到 PB15(SPI2_MOSI),CS 连接到 PB12(SPI2_NSS)。其余 RST为复位信号,GND 为接地,VCC 接3.3 V。
本设计的难点是只有一个LDC1000传感器探头。当铁丝在传感器线圈的正中心时,检测到的频率值最大;当铁丝向左、向右偏转时,检测到的频率值都在减小。因此,如何判断偏左还是偏右,就变得非常困难。为有效解决这个问题,提出“试探法”结合“状态图”的方法。当频率值减小时,首先让小车左转,如果值继续减小,则右转。因为小车要沿着铁丝行走,小车将会有3个状态,分别是直走、左转、右转。只有控制好这3个状态及其相互转换的条件,另外,为有效控制小车的运行,还必须测出传感器对铁丝感应的最大值FRE_MAX和最小值FRE_MIN,FRE_MAX是细铁丝在自制线圈的正中心时测量值,FRE_MIN是细铁丝完全偏离线圈,在线圈外时测量值。图6给出了小车的状态图。
图6 状态转换图
图中FRE为传感器测得的当前频率值,测试时,首先将小车放在跑道的正中心,细铁丝位于传感器线圈的中心直径上。当FRE=FRE_MAX时,小车直走。当FRE减小时,首先让小车左拐,如果FRE继续减小,说明小车继续偏离细铁丝,这时状态转换为右拐;若右拐时,FRE一直在增大,说明右拐正确,小车一直在向细铁丝靠近,当递增到最大值后,小车直走。当FRE受到意外干扰,FRE≤FRE_MIN时,强制让小车右拐,如果值递增,说明右拐正确,小车正在靠近细铁丝,继续右拐;如果不变,还是最小值,说明右转错误,改变状态左拐,左拐后如果FRE在递增,继续左拐,当到达最大值FRE_MAX后,直走。
按照图6的状态图在MDK5.0下用C语言编程,较好地完成了对小车自动循迹的控制。
测试时的跑道如图7所示。小车起始位置放在2 m直道的正中心,途径6个弯道,弯道圆弧的半径均为为20 cm。最后再回到起点处,完成一圈行驶。
图7 小车行驶跑道
静态测试时,用手挪动小车到指定位置,测量传感器LDC1000通过自制线圈对细铁丝感应时的频率值。当线圈的电感量为0.180 mH,电容为2 nF时,对直道、弯道1、弯道2、弯道3、弯道4、弯道5、弯道6测量得到的频率值与细铁丝位置之间的对应关系,如表1~表7所示。
表1 铁丝位置与频率值之间对应关系(直道1)
表2 铁丝位置与频率值之间对应关系(弯道1)
表3 铁丝位置与频率值之间对应关系(弯道2)
表4 铁丝位置与频率值之间对应关系(弯道3)
表5 铁丝位置与频率值之间对应关系(弯道4)
表1~表7中距离d是细铁丝与线圈直径之间的垂直距离。从表中可以看出,当距离d增大时,频率值明显减小,但在弯道时比较复杂,但整体而言,如果偏离弯道,则频率值减小;若靠近,频率值增大。
表6 铁丝位置与频率值之间对应关系(弯道5)
表7 铁丝位置与频率值之间对应关系(弯道6)
本文采用LDC1000数字电感传感器和自制线圈,经过多次实验和测试,成功实现了对细铁丝跑道的检测。采用试探法结合状态图法,解决了只有一个传感器无法识别左右的问题,经过多次调试,解决了该问题。实现了自动循迹功能。具有实用性和通用性,可应用在汽车、消费电子、智能玩具等领域[10-11]。
[1] 余炽业,宋 跃,雷瑞庭.基于STC12C5 A60S2的智能循迹小车[J].实验室研究与探索,2014,33(11):46-49.
[2] 王子辉,叶云岳.基于CMOS传感器的智能循迹小车图像识别技术研究[J].传感技术学报,2009,22(4):484-488.
[3] 单以才,李奇林,秦剑华,等.基于红外传感器的自主循迹小车控制算法设计与实现[J].机床与液压,2010,38(14):78-81.
[4] 金立,贾存良,王梅,等.基于PIC单片机的智能循迹小车设计[J].工矿自动化,2010,36(8):129-132.
[5] 莫太平,杨宏光,刘冬梅.面向多路线的智能循迹小车的设计与实现[J].自动化与仪表,2014,29(4):6-9.
[6] 吕云芳,陈帅帅,郝兴森,等.基于C51高级语言程序控制的智能循迹小车设计与实现[J].实验室研究与探索,2015,34(3):142-145.
[7] 师树恒,赵斌,郭朋彦,等.基于MK60 N512的智能循迹小车设计[J].机床与液压,2014,42(2):91-96.
[8] 杨宁,石冰飞,朱平,等.基于CCD的自动循迹小车的软件设计[J].自动化与仪表,2012,33(1):52-55.
[9] 宋永献,马娟丽,贺乃宝,等.基于T MS320F2812的智能循迹小车控制系统设计[J].计算机测量与控制,2011,19(9):2128-2130.
[10] 李艳红,李自成,孙仕琪.基于ST M32单片机的金属物体探测定位器系统的设计与实现[J].仪表技术与传感器,2016(4):63-66.
[11] 王丽君,马龙升,钟皇平,等.可自主移动的金属物体探测定位仪设计及开发[J].实验技术与管理,2015,32(5):107-110.