基于CCD智能小车的解决方案
2020-08-31徐莉徐锦红孙健龙孔祥权李瑜辉时玉栋
徐莉 徐锦红 孙健龙 孔祥权 李瑜辉 时玉栋
摘要:设计了一种智能小车,能够沿着直径2~3cm的黑色跑道行驶。本系统采用STM32F103C8T6作为主控,循迹模块使用的是线性CCD传感器,传感器将采集到的数据交给STM32处理并在OLED液晶显示器上显示出来。根据处理后的数据,有特定算法去实现小车的直角转向。实验结果表明:该方案能够实现小车对黑线的循迹,能够进行较好的转向。
Abstract: A smart car is designed to run along a black track with a diameter of 2~3cm. This system uses STM32F103C8T6 as the main control, and the tracking module uses a linear CCD sensor, which will send the collected data to STM32 for processing and display on the OLED. According to the processed data, there are specific algorithms to realize the right-angle steering of the car. The experimental results show that the scheme can track the black line and turn well.
关键词:控制算法;循迹;STM32;智能小车
Key words: control algorithm;tracking;STM32;intelligent car
中图分类号:TP23 文献标识码:A 文章编号:1006-4311(2020)23-0178-02
0 引言
隨着科学技术的发展,机器人的设计愈来愈精细,功能愈来愈复杂,车型机器人作为其中一个重要的分支,也在不断的发展。随着汽车工业与传统汽车行业的逐渐饱和,伴随着微控制技术与嵌入式技术的迅猛发展,使得汽车逐渐走向科技化、智能化。智能小车这类设备可在复杂多样、不利于人工工作的工作环境,在军事和普通生活中都可以有各种各样的用途。
1 系统设计框图
系统功能框图如图1。
本系统由主控部分、动力部分、转向部分、循迹部分以及显示部分组成,该系统采用STM32F103C8T6作为核心处理器,双电机驱动后轮作为动力组,转向部分由连杆机构及舵机组成,用OLED液晶显示器,显示整机状态以及CCD循迹模块采集到的线条数据。循迹模块使用的是线性CCD循迹模块。
2 硬件系统设计
2.1 主控模块
主控模块采用STM32F103C8T6作为核心处理器,其使用的内核是ARM公司出品的Cortex-M3;最高的工作频率为72MHz,128KB的Flash和20KB的SRAM;有两个SPI和IIC通信接口、三个通用定时器和一个高级定时器、两个12位的ADC模块以及37个GPIO端口。
2.2 电机驱动模块
采用A4950芯片驱动电机,A4950是一款全桥式驱动芯片,有强大的过电流保护功能。该芯片能够提供3.5A的峰值输出电流,工作电压可高达40V,可以通过电源来调节输出电压,也可以通过I/O口提供信号。用该芯片作为电机驱动,操作方便,可以调节PWM限制电流;稳定性好,当电压不足时,能进行内部欠压锁定(UVLO);性能优良,既有同步整流功能,又有交叉电流保护功能。
2.3 显示模块
OLED液晶显示屏的优点有自发光、低功耗;接口丰富、开发方便简单;户外阳光下可视;响应速度快、播放动态图像无拖尾;高低温性能优越,能适应严寒(-40~+80℃);具有较高的电磁兼容防护能力,能满足极端环境条件下使用;具有高色彩再现性和色彩饱和度,显示效果更真实等特点。OLED较多被使用在军工方面。
本系统使用分辨率为128*64的单色蓝光OLED液晶显示屏。采用的SPI通讯接口,操作简单、支持双全工操作,具有较高的数据传输速率。经由主控系统中的动态阈值算法和中线提取算法的处理,将黑线的动态阈值与中线中值显示在OLED液晶显示屏上。
2.4 循迹模块
本系统采用的CCD图像传感器具有高解析度、低杂讯高敏感度、动态范围广、良好的线性特性曲线、大面积感光、低影像失真、体积小、重量轻、低耗电力以及不受强电力磁场影响等优点。与传统的光电循迹不同,CCD模块是一种半导体器件,能够把光学影像转化为数字信号。一块CCD上植入的微小光敏物质称作像素,像素愈多,其提供的画面分辨率也就越高。相对于普通的光电循迹模块,线性CCD循迹模块具有更高的稳定性。
2.5 系统整体方案
系统整体方案的框架图如图2所示。通过主控芯片驱动线性CCD循迹模块寻找黑线,经由主控芯片将数据进行处理,反馈给小车系统的转向模块,判断左转、右转还是直线运动;通过电机驱动模块驱动电机驱使小车运动,再由末端的编码器返回电机转速值,从而实现电机的速度闭环控制;所有的数据由主控芯片处理后,再将CCD动态阈值以及中值、电机闭环速度以及舵机转速等数据显示在OLED液晶显示器上[1-3]。
3 系统测试
本系统中小车的循迹功能设计为在地面铺设2~3cm的黑色胶带,小车沿着黑色胶带的轨迹行走[4]。线性CCD模块采集回128个像素点存储在一个数组中,考虑到CCD的质量原因,可能会产生几个点的畸变,然后省略前几个点和后几个点的数据。本系统采用消除畸变的方法是将前四个点和后四个点的数据省略,产生120个值的数组。
将编码器连接在直流电机的输入端,再连接好电机驱动器与编码器。将小车放在赛道上,沿着黑线,启动小车。在OLED液晶显示屏上显示会显示直流电机的运行速度[5-6],与系统软件编写的速度吻合,且速度的均值不变,所以编码器闭环控制速度的部分更够正常运行。
循迹小车通过到弯道时,舵机转向系统正常。OLED显示系统正常。
整个系统的OLED测试结果如表1~表3所示。
4 总结
本次循迹小车的制作与测试,发现了不少的问题,同样的,也解决了不少的问题。例如,在开始设计下位机软件的时候,没有考虑到直角弯道。在一次次试验中发现原先的程序并没有实现扫描的直角弯道并转向的功能。经过CCD动态阈值以及中值的数据采集并处理,得出了是原先代码的算法缺失结论,接着一次次的试验,终于可以实现直角弯道的转向[7-8]。
在试验中发现,用舵機连杆机构的转向并不是十分适合直角弯。若要用舵机连杆机构实现直角转向,就得实现后轮的正反转,利用差速或逆向差速实现。
本文基于单片机STM32F103C8T结合线性CCD循迹模块、A4950电机驱动模块、传感器模块、OLED液晶显示模块等设计了一款性能稳定的智能循迹小车。加入适当的数据处理算法,可以使得数据处理变得更加稳定、可靠。克服了普通光电传感器受强光或较弱光影响比较大的缺点。研究内容可用于货物搬运以及自动驾驶技术,因此具有一定的学术价值和现实意义。
参考文献:
[1]姜岩,赵熙俊,龚建伟,等.简单城市环境下地面无人驾驶系统的设计研究[J].机械工程学报,2012,48(20):103-112.
[2]尹杰,杨宗帅,聂海,等.基于红外反射式智能循迹遥控小车系统设计[J].电子设计工程,2013,21(23):178-180,184.
[3]董杰,王国豹.基于STM32的智能循迹往返小车设计[J].电子设计工程,2013,21(12):158-160.
[4]顾志华,戈惠梅,徐晓慧,等.基于多传感器的智能小车避障系统设计[J].南京师范大学学报,2014,14(1):12-17.
[5]戈惠梅,徐晓慧,顾志华,等.基于Arduino的智能小车避障系统设计[J].现代电子技术,2014,37(11):118-120.
[6]李波,杨卫,张文栋,等.一种智能小车自主寻/循迹系统设计[J].计算机测量与控制,2012,20(10):2798-2801.
[7]徐莺.基于间接PID的智能车控制算法研究[J].湖北广播电视大学学报,2008(5):155-156.
[8]黄健,吕林涛,范晖.基于LDC1614的循迹小车研制[J].传感器与微系统,2018,37(8):88-90,93.