张天贵 姚宇肖 段子棋
摘 要:本文介绍的智能车系统以stc8g2k64s4微控制器为核心控制单元,并根据比赛的具体情况,自制质量较轻、较为灵活性的车模,使用stc8g2k64s4作为系统的控制核心,让它根据所采取的数据输出PWM波使电机差速转向。最后,我们对车模存在的问题分析、改进。
关键词:智能车;节能;无线充电;PID控制
*带队教师:左义海 寇元
本组使用的是自制车模,采用宏晶公司的stc8g2k64s4 作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动等,最终实现一套能够自主识别路线,并且可以实时输出车体状态的智能车控制硬件系统[1-2]。
1 智能车软件整体设计方案
软件部分的设计主要是对微处理器stc8g2k64s4的程序编写,通过计算,对其各个端口进行读写控制,即将传感器获取的电信号通过单片机端口读入,并经过处理,进行控制算法,最终通过单片机端口输出给硬件电路,对车速、打角等硬件电路进行控制,最终实现对车辆机械部分的控制[3-5]。
软件的设计原则主要是:效率、结构化、规范、易读。因为软件部分涉及到端口输入输出数据的处理,要对车辆硬件进行控制,因此要提高软件处理的效率以达到控制的及时性。另外,整个控制环节有紧密的逻辑关系,因此,软件的结构合理和规范化的设计有助于调理逻辑关系,便于修改、调试、扩展及拥有较强的适应能力。程序编写选用MDK为编译环境,C语言为主要程序编写语言。
软件系统是对传感器等输入设备输入的信息进行处理,然后通过一定算法,得到控制输出,对现有的硬件电路进行调度和控制,从而使智能车按照赛道前进。软件系统要达到的最终目的是让智能车更快更稳的在赛道上行驶,从而真正达到“智能”。
2 赛道特殊元素处理方法
2.1 车库处理方法
对于车库,我们的思路是:
检测→程序执行打角→程序执行直走→停止
● 检测:我们先后试过红外,干簧管,磁力计。经对比,我们采用一根弹簧将磁力计吊在碳杆上的方案。
● 程序执行打角:检测到车库之后,车模就开始进行打角,在这里我们采取固定转向的方法,我们通过控制车模打角的时间来使车子打角。车模打角的时间是通过大量实验得出数据,然后用matlab拟合出一条时间-电压曲线,通过这条曲线计算出来的。
● 程序执行直走:打角程序执行完成后我们控制车模直走进库,直走也是给的固定占空比,我们同样是控制车模执行程序的时间来完成这一步骤。
2.2 环岛处理方法
图3为一个标准的环岛,我们的处理方法主要基于我们的电感排布方式,所以不一定普遍适用。我们采用的电感排布是“三横两竖”。由于环岛铺设是有一个点或一段距离是电磁线重叠的,这个区域的电感值会明显区别于别的地方,根据这一特征我们将其判断为环岛。之后再通过竖直电感和水平电感的偏差拟合出一个新的偏差,以此进环。最后需要对出环进行处理,防止一个环岛绕几圈而耗能。
2.3 坡道处理方法
由于坡道铺设有明言规定电磁线会铺在坡道表面(如图4),所以说到了坡道处水平电感会有突变,经多次测试,中间电感值变化最明显,又加了陀螺儀判断当前角度为车模正常行驶的角度作为辅助判断条件。经多次测试后,该方案可行。
软件控制是基于机械系统和硬件系统的完善的基础上开展起来的。我们设计电磁程序控制算法的时候,首先根据不同放大倍数的电磁运放传感器,确定了我们所需要采取的数据,然后配合上位机将电感值反馈回来,再配合各个传感器的数据进行分析和处理。通过尝试过的方案优劣比较,最终确定采集特征值判断,效果比较明显。
3 结语
软件设计是在机械和硬件得到保障下的一项工作。因为有些问题从软件上解决或许很棘手,但是从机械或硬件上入手就会很简单,所以在机械和硬件设备完善的情况下软件设计起来会相对顺利。先在桌面上静态调试使车模直立起来,接着电感进行滤波计算偏差,然后上算法循迹,最后再综合调试。直立控制上我们采用的是PD控制,转向算法上我们也采用的PD控制,处理特殊元素时我们采取特征点来判断。电机控制算法上我们有所不足,但是我们肯定会继续努力,继续尝试不同的算法,完善我们小车的控制程序。
参考文献:
[1] 关于举办第十五届全国大学生智能汽车竞赛的通知[EB/OL].[2020-6-6].https://blog.csdn.net/zhuoqingjoking97298/ article/details/106581683
[2] 王盼宝,佟超,曹楠,等.智能车制作[M].北京:清华大学出版社,2001.
[3] 张剑平.模拟电子技术基础[M].北京:清华大学出版社,2011.
[4] 阎石.数字电子电路基础[M].北京:高等教育出版社,2005.
[5] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2001.