本文主要是介绍第十七届智能车本科电磁组总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
总结:
本人参加了两届智能车,两次都是电磁组,第一次成功参与奖,第二次获得了国赛二等奖。临近毕业,想对这个进行一个总结。
在大二下册的时候,一个学长在准备智能车,我通过他的车在赛道上飞驰,就特别的想参加智能车,原来打算这个学长组队的时候,可以把我考虑进去的,结果遗憾落选了,于是我就自己一个人开始了这条漫漫之路,也开始了我的秃头之路。
刚开始,我一个人准备,最先干的应该就是熟悉之前几届的技术手册与总体设计,一两个礼拜之后,我的智能车主板与驱动就问世了,也很顺利,板子大的毛病没有,小的问题非常多,于是在学长的帮助下就稍微飞了飞线,改了改电路也就能进行后续的搭车之路了。我拿了一辆车模过来,当我的板子都安装上去的时候,格外的兴奋,就开始了我的代码之路。这时候有个同学加入了我的团队,因此他之后负责了硬件,我负责了软件。在去省赛之前,我们还有校赛,临近校赛十天的时候,我就开始住在比赛场地了,这十天过得真快,最后校赛也取得了较好的成绩,能够去参加省赛。校赛之后,我的队伍又壮大了,自此,三人组完成,我与后来的两个人分白天与晚上写代码与调试车,我俩分工明确,他白天写代码调车,我晚上写代码调车,硬件的也会很照顾我们,偶尔给我们带带早饭,买买水,这样差不多一个月,我们就出发去了省赛。省赛其实我们车也挺好的,也全部都跑下来了,可是最后却成功参与了。我们回到学校在互相责怪,但是最后我们都看开了,结果固然重要,但是过程与学习到的知识,团队合作也非常重要。接下去他俩准备考研了,而我开始了混日子模式。
在大三上快结束的时候,有两个同学找到了我,想拉我一起再参加一届,我当时犹豫不决,我害怕拿不到成绩,我也在想我不参加的话,应该会有遗憾吧,所以我还是加入了他们,起初他俩说一个负责硬件一个负责软件,而我就全局指导就好了,后来还是听了学长的建议,说我去写软件会更加的顺手,也更加的熟悉,于是我又去写软件了,研究生学长还经常性的来指导我,于是我的车子开的比上一届的时候,快了很多,我们还是一样,临近比赛一个月还会住在赛道边上,开启了日夜调车模式。
最后到了比赛的日子,特别特别的紧张,以至于预赛与决赛两个晚上我只睡了三四个小时吧,预赛在担心第二天未完赛,决赛在担心我拿不到去国赛的资格,结局还是很美好的,预赛第二,可是决赛车子就出问题了,电感校准,与入库都存在很大的问题,但是还好,最后以决赛第五最后一个名额进入了全国总决赛。当时开心的一批。
国赛的话,当时我们那里是疫情地区,去不了线下,只能参加线上,我们三个还是和省赛一个月的时候一样,住在赛道边上,最后也取得了国赛二等奖的好成绩。我十分感谢我的指导老师、学长、同学对我的帮助与指导。
以上就是我的两届智能车的总结,最后提一下建议,团队分工明确,效率得高效,互相帮助,互相鼓励,不断地去追求进步。
第一章 系统总体设计
1.1系统概述
智能车主要由四个部分组成:检测系统、控制系统、动力系统和电源系统。其中检测系统完成两个功能,赛道上电磁引导线的识别及车库前斑马线的识别,电磁引导线采用20KHz配频配幅电感电容模组感应,车库前斑马线采用漫反射激光传感器识别;控制系统以STC8H8K64U单片机为控制系统核心处理器;动力系统主要实现电机转速控制,基于BTN8982设计电机驱动电路;电源系统将电池电源经过稳压模块给系统的各个组成部分供电,如检测系统、电机驱动系统、显示系统等。系统工作流程为,首先通过安装在智能车头部的8个电感电容模组感应赛道上电磁引导线,电容电感模组输出的电压信号经过运放放大后输入STC8H8K64U单片机的ADC转换通道进行AD转换;接着主控单片机根据接收到的电容电感模组输出信号判断前方道路情况,如直线、圆环、上坡、三叉等道路信号,此外还可以判断车身与赛道之间的偏离情况,主控单片机根据8路电容电感模组信号控制舵机转角及两个电机的差速实现车体的转向控制和速度控制。
1.2整车布局
- 为了预先判断道路情况,电感电容模组及漫反射激光传感器安装在车头前部(称之为前瞻),前瞻距离车头位置并非越远越好,前瞻离车头的距离为30cm左右。
- 电感电容模组分两排布置,第一排一般用于直行道路检测,第二排一般用于转弯道路,当第一排传感器信号丢失时候使用。
- 为使智能车保持平衡,电池放于车模后部,主控板位于车模中部,增大后轮摩擦,提高速度。
第二章 比赛任务及机械结构设计
2.1 四轮电磁组比赛任务
(1)车模
车模可以使用竞赛指定B/C型车模中,也可以自制车模,车模运行方向不限。
车模作品制作完毕后,对于车模外形尺寸没有限制。
(2)微控制器与传感器
车模微控制器使用STC系列单片机。
允许使用各电磁传感器件、光电传感器进行赛道和环境检测。
(3)电磁引导线
赛道铺设有中心电磁引导线。引导线为一条铺设在赛道中心线上,直径为0.1~1.0mm的漆包线,其中通有20kHz、100mA的交变电流。频率范围20k±1kHz,电流范围100±20mA。
选手自带信号源所使用的信号频率、波形和幅度没有任何限制,只要能够满足当前铺设的电缆和插座中允许的最大电压、电流和频率范围即可。
(4)赛道与比赛任务
比赛是在室内循环赛道上进行,赛道采用黑色赛道边线,赛道上铺设电磁引导线。
选手制作的车模完成从车库出发在运行三周后,然后在返回车库。
比赛时间从车模驶出车库到重新回到车库为止。如果车模没有能够停止在车库内停车区内,比赛时间加罚时。
计时标准:车模出库到返回车模之间的时间差。
2.2 机械结构设计
为了提高智能车的竞技性能,其机械结构设计、控制系统电路板、电池安装显得尤为重要。本次四轮电磁组采用C车模,结构如图2-1所示。
图2-1 车模结构图
2.2.1 传感器设计与安装
传感器在四轮电磁智能车的运行中非常重要,而传感器位置的安装又是重中之重。本组的四轮电磁智能车传感器主要有电感电容模组和漫反射激光传感器,电感电容模组用于感应铺设在赛道下的交流电磁引导线,激光传感器用于检测车库前的斑马线。传感器的安装如图2-2所示,安装在车头前部,称之为传感器前瞻,前瞻离车头距离30厘米,距离远虽能够提前感知前方道路类型,但也容易发生传感信号丢失的情况,距离太近则无法提前感知前面道路类型,电机和舵机的调节无法及时跟上道路的变化,无法提升智能车速度。
前瞻的排布设计如图2-2所示,电感电容模组分两排放置,第一排放置5个,中间三个一字排开,两边八字排列。第一排主要在直行道路中其检测作用,中间三个用来判断车体姿态,两边八字用来预判前方道路类型。第二排中间一个是一字排列,两边是八字排列,当第一排传感器信号丢失时,第二排传感器输出的信号作为循线的依据。漫反射激光传感器安装在第二排下方,与地面成一定的角度。
图2-2 智能车前瞻设计图
2.2.2 电池安装
电池采用标称值为7.4V锂电池,具体安装位置如图2-3所示。电池安装在车身后部,主要是考虑:一是要与前瞻平衡,二是尽量使重心靠后,可以避免在车速过快时,在转弯过程中车身会发生甩尾现象,因此将较重的锂电池安装在靠后位置。
图2-3 电池安装位置
2.2.3 编码器的安装
为了精确测量电机转速,本小车使用的5V电压供电的龙邱512线轻量增量式编码器,该编码器重量轻,体积小,容易安装,非常适合用于四轮电磁组智能车的速度检测。用定制加工件和齿轮进行了安装配合,尽量使得传动齿轮轴保持平行,传动部分轻松、流畅,不存在过大噪音和丢数情况。编码器安装直接使用车模上的编码器安装孔。编码器的安装如图2-4所示。图2-4 智能车编码器安装位置
2.3 本章小结
本章主要介绍了智能车的车模类型以及小车在传感器安装、电路板安装以及电池固定位置的设计。从开始准备比赛以来,一直坚持机械结构和算法是同样重要的原则,在更新算法的同时也在提高相应的机械和硬件结构来适应。上面的介绍是最终确定的小车安装方法。
第三章 系统硬件设计
3.1 硬件设计方案
四轮电磁智能车控制系统硬件框图如图3-1所示,包括传感器模块、电机驱动模块、人机接口模块以及电源模块构成。核心控制器采用STC8H8K64U单片机,电磁引导线采用20KHz配频配幅的电感电容模组感应;车库前斑马线的识别通过漫反射激光传感器来实现;基于BTN8982设计电机驱动电路,单片机输出PWM信号控制电机的速度;舵机实现智能车的车头方向控制;编码器实现车速的与距离的测量;键盘和OLED显示器实现人机接口,帮助完成智能车参数调试。
图3-1 四轮电磁智能车硬件框图
3.2 系统核心板
单片机最小系统板使用STC8H8K64U单片机。主板上仅将本系统所用到的引脚引出,包括信号接口、外部中断接口、若干普通 IO 接口等。
3.3 传感器选择
本设计中,传感器分为三部分:电磁引导线传感器,编码器,漫反射激光传感器。
3.3.1电磁引导线传感器
赛道铺设有中心电磁引导线。引导线为一条铺设在赛道中心线上,直径为0.1~1.0mm的漆包线,其中通有20kHz、100mA的交变电流,频率范围20k±1kHz,电流范围100±20mA。
采用20KHz配频配幅电感电容模组识别电磁引导线,该模组与电磁引导线的距离及角度不同,则在模组中感应的电压不同,在智能车车头分两排安装8个电感电容模组,单片机通过测量智能车车头安装的8个模组输出电压判断前方道路类型及车体姿态,根据道路类型及车体姿态调整舵机角度及后轮两个电机的差速,以保证智能车在赛道上快速行驶。
3.3.2 编码器
本小车使用的5V电压供电的龙邱512线轻量增量式编码器,该编码器的特点是测速可达10000rpm,与高速电机配套使用不会丢步,精度高。处理器通过读取编码器脉冲数来实现小车速度的检测,通过读取编码器旋转方向脚的高低电平来检测电机的正反转。该编码器重量轻,体积小,容易安装,非常适合用于四轮电磁组智能车的速度检测。
3.3.3 漫反射激光传感器
车库前斑马线的识别通过漫反射激光传感器来实现,漫反射光电传感器是一种集发射器和接收器于一体的传感器,当激光照射在黑色斑马线时,大部分激光被吸收了,漫反射光很弱,而激光照射在白色跑道时,大部分激光被漫反射了,接收器收到的反射光较强。根据接收器接收漫反射光线的强弱可区别是否为黑色斑马线,通过漫反射控制电路将其转换为开关信号,单片机读取开关信号来判断当前智能车是否在黑色斑马线上。
3.4 电路设计
智能车的电路设计决定了系统可靠性与稳定性,电路设计决定着摄像头图像采集的好坏以及驱动的性能等,本系统的电路以STC8H8K64U单片机为核心控制器,电源电路、人机接口电路、电机驱动电路、传感器电路等构成了智能车控制系统。
3.4.1 电源管理部分
整个智能车采用7.4V锂电池供电,7.4V的电源通过TPS7350稳压输出5V电源,为主板的单片机最小系统、显示、按键等模块供电。舵机最高供电电压为6.0V,7.4V的电源通过舵机电源稳压芯片AS1015调节输出5.9V电源,舵机电源越高则舵机打角反应快,智能车表现更灵敏。电机驱动板的采用另一套独立电源,一是保障该模块的供电电路,另一个原因是减少电机驱动对主板的干扰。三路电源数输出的电流能够满足各路的电流需求。
图3-2电源管理
3.4.2 电机驱动部分
电机驱动电路如图3-3所示,采用半桥功率集成芯片BTN8982,BTN8982是一款输出大电流半桥功率集成电路。该IC属于NavalithIC"系列的功率电路。
智能车两个后轮采用独立的驱动,用两片BTN8982构成H桥驱动电路,可实现电机的正转和反转。
图3-3电机驱动电路
3.4.3 电感运放部分
电感电容模组输出的是弱电压信号,需要通过运放电路将其电压信号放大。在本车中通过OPA4377运放组成同相比例运算放大电路对接收到的信号进行放大。调节放大倍数,使经过运放放大后的输出电压为1V左右,单片机通过读取8路电感电容模组输出的信号判断前方道路类型及智能车姿态,通过调整舵机打角及电机转速,使得车辆能跟着赛道中的电磁线行驶。运放电路如图3-4所示。
3-4电感运算放大
3.4.4 各类模块
如图9所示为各类模块元件电路,其中有OLED显示,蜂鸣器模块,编码器接口,拨码开关以及五项开关等。
图3-5各类模块
第四章 系统软件设计
4.1. 系统软件主程序设计
软件的控制的目的是让控制车模在符合比赛规则前提下,以最快最稳定的速度跑完整个赛道。智能车系统软件的主程序流程图如图4-1所示,系统上电后完成一些列初始化操作,包括读取EEPROM存储的电感电容模组最大值,PID调节的Kp、Kd、Ki参数等等;舵机位置回正;机停转,三个定时器初始化设置,一个用定时10ms,每10ms读取传感器值并做处理,另外两个工作在捕获模式读取编码器的计数值。接着进入主循环,在主循环中读取拨盘开关的状态和不断扫描是否有键按下,如果有键按下则做相应的处理,最后是显示相关的参数。
图4-1 主程序流程图
4.2 电磁循迹程序设计
电磁引导线循迹是通过读取安装在车头的8个电感电容模组输出值来实现的。电感电容模组输出的是弱电压信号,经过运算放大器放大后输入单片机的ADC输入端。单片机对传感器信号的读取并非实时进行,而是通过定时器定时10ms,每10ms进入定时器中断处理函数,在中断处理函数中读取AD转换的值,并对读取的值进行滤波、加权平均及归一化处理,接着根据读取的值判断
出库,在出库的情况下判断是否为直行、转弯、三叉、圆环、车库等道路类型并做相应的处理,其程序设计流程图如图4-2所示。
图4-2 电磁循迹程序设计流程图
4.3 舵机控制程序设计
四轮车的控制主要是电机与舵机的控制。舵机控制的方向环需要较高的实时性,并且不需要零误差,采用位置式PD的控制算法,根据电感电容模组读取的信号判断车身姿态及前方道路类型,根据车身姿态及前方道路类型以及根据经验值得到的Kp、Kd参数计算舵机需要打角的量,最后修改定时器的PWM信号占空比实现舵机的打角。
4.4 电机控制程序设计
我们使用串级PID进行电机控制,由于单极PID超调过大或是相应过慢,我们选择速度环与电流换串级控制,外环速度环使用增量式PID,编码器获取实际速度和设定速度进行一次PID输出增量,将增量作为电流内环的设定值,将内环的设定值与电流检测(AD8210)的实际值在进行一次PID,将增量加到电机上进行控制。
4.5 速度控制程序设计
速度控制采用PID算法进行控制,速度设置采用拨盘开关设置,通过编码器读取当前的速度,当前速度和设定速度不一致时需要通过PID重新计算控制电机的PWM信号的占空比。此外,为使电机在弯道行驶时转弯半径减小,行驶更稳定,还需根据舵机的角度计算两个后轮电机的差速,根据差速调整两个电机的PWM信号,使智能车行驶稳定性更强。
4.6 本章小结
本章主要介绍了智能车软件系统的主程序流程,电磁循迹流程,舵机控制以及电机速度控制等方法。软件是智能车系统的核心,一次又一次的找问题后优化,优化后找问题。不断尝试新的控制算法,学习新的知识,并把新的知识应用于智能车上。
第五章 开发工具及 STC8H系列C语言封装库
5.1 开发工具
程序的开发是在Keil5编程软件上进行的。Keil5是一款非常友好和强大的C语言软件开发系统。Keil5提供了清晰直观的操作界面,而且使用起来十分的轻松便捷,并具备编译器、编译器、安装包和调试跟踪,主要新增包管理器功能,支持LWIP,Keil5的SWD下载速度也是KEIL4的5倍。
5.2 STC8H系列C语言封装库
FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证。为避免之前STC12封装库存在的问题, 这个封装库在以下方面进行了改进:
(1)兼容SDCC和Keil C51
FwLib_STC12封装库只支持SDCC编译, 并且寄存器命名与官方不同, 使得基于FwLib_STC12的项目代码与其他Keil开发的项目代码无法兼容。 在FwLib_STC8的开发上, 采用了与官方库文件一致的命名, 并且增加了对Keil C51和SDCC的适配. 基于FwLib_STC8的项目, 可以在Linux下使用SDCC编译, 也可以在Windows下使用Keil C51环境进行编译。
(2)减小代码尺寸
FwLib_STC12封装库较多使用函数的方式对寄存器进行封装, 而函数与函数间的层级调用都会增加栈开支, 这样一方面8位MCU本来就不多的内存更加捉襟见肘, 另一方面增加了生成的固件尺寸。 在FwLib_STC8封装库中, 大量使用宏语句对寄存器操作进行封装, 并且控制方法间的层级调用深度, 有效节省了固件体积和堆栈占用。
这篇关于第十七届智能车本科电磁组总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!