1、机械方面的总体设计
智能车的机械调整作为最基础的硬件其重要性是首位的,其机械调整主要分为:编码器的安装;CCD支架的安装;CCD位置的调整,主控板驱动电路板的安装固定;加速度陀螺仪板的安装调整。
(1) 编码器的安装
编码器安装的精度直接影响到测速的准确和对速度控制的准确度。其编码器的安装如图1所示。
(2)CCD的安装
CCD采用Texas Advanced Optoelectronic Solution公司的TSL1401系列的线性CCD。从网上购买的CCD由于都已经做成了成品,只需引出接口接到单片机就可以了,使用方便,拍摄的线阵还是比较清晰的。
(3)主控驱动电路板的安装
由于车底盘空间较小,而且空间比较复杂,如果想完全放到底盘上难度较大,所以将电机主控电路和驱动电路分开放置,便于合理利用小车空间安装。将其放到了电机的上面。虽然提高了重心但经过再三观察,由于电路板太大,再加上降低重心,只能将其放到电机上方,不过接口等方便明了,提高了我们的调试效率。
(4)加速度陀螺仪板的安装
加速度陀螺仪主要用于检测小车倾角,放置的位置对于所测数据有很大的影响,所以放置时要将其放置水平。
2、硬件总体设计
主控使用恩智浦公司的144引脚的Mk60芯片,因为其引脚IO多,可以控制的外围较多的外围设备。系统控制结构图如图2所示。
(1)核心板的设计
32位Kinetis系列列单片机MK60是硬件系统的核心部分,用于智能车的整体控制,包括信息的采集处理和输出。
(2)电源模块的设计
(2)电源模块的设计
系统的正常工作要有稳定可靠的电源保障。系统中需要的电压值主要有:7V,5V,3.3三种。7V电压主要为电池接入口处,一路为直接为电机驱动供电,另一路经过两片LM2940芯片分别产生两个5V电压值。5V电压有两路,其中一路为光电码盘供电,另一路为稳压器1117供电,为主控、CCD、三轴加速度陀螺仪提供3.3V电压。这种两路5V供电的设计,可以减小直流电机开启瞬间电压变化影响,避免了单片机因电压值减小引起的复位及CCD接受电压变化。
(3)电机驱动模块的设计
电机驱动模块采用BTS7970和H桥配合:74HC244驱动MOS管,MOS管驱动电机,这样不但满足电机驱动需求,而且驱动散热好,避免了温漂带来的影响。电机驱动通过IN1和IN2引脚输入PWM波形,以此调节驱动OUT1,OUT2引脚输出电压,调节电机转动速度,以及正反转和拐弯,达到不同的控制效果。
(4) 输入模块的设计
输入采用按键,加防抖电容,编程简单,通过给按键设置不同的功能,用于设置不同的参数,以此来更改智能车行车模式,适应各种情况。
(5)光电编码器的设计
光电编码器作用是反馈当前速度,使整个系统形成一个闭环系统。我们应用的是龙邱的光电编码器,由于两路电机分别控制,所以要用两个光电编码器。该编码器电源电压为3.3V-5V。
3、软件总体设计
在智能车控制系统的软件设计中,程序的主流程是:摄像头通过中断采集程序对跑道信息进行采集,主程序在两次中断的间隙中完成对数据进行处理及计算并给出控制量,采样周期为16.7ms。其中,主程序主要完成的任务是:单片机初始化、图像采集、图像滤波、信标位置提取、速度控制算法。另外速度值提取、速度控制输出放置定时中断里,更能实现对速度的实时控制。主程序控制流程如图3所示。
(1)原始图像的处理
在单片机采集图像信号后需要对其进行处理以提取主要的跑道信息,同时,由于交叉道、起点线的存在,光线、杂点、赛道远处图像不清楚的干扰,图像效果会大打折扣。因此,在软件上必须排除干扰因素,对跑道进行有效识别,并提供尽可能多的赛道信息供决策使用。在对摄像头进行准确的参数标定后,通过 MATLAB 辅助编程,我们得到了较好的校正效果,如下图4所示:
(2) 速度控制策略
1)速度PID控制
速度控制采用增量式PID算法,所谓增量式PID是指数字控制器的输出只是控制量的增量Δuk.。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。其采用的算法公式为:
2)速度改变策略
为了使得小车跑的平均速度最大,不能在全程使用一个速度。在转弯的时候应当适当的减速,在直道的时候应该加速。怎么识别直道和弯道。我们可以根据CCD采集赛道黑白边界不同来识别,从而及时增减速度。 其采用的算法公式为:Speed_Curr = (Right_Speed + Left_Speed) / 2;速度值等于左轮和右轮的速度值得平均值。
3)小车转向的算法实现
直立车的转向是通过两个轮子的转速差来实现的,故控制转向就是控制两个轮子的速度差。其采用的编程参数为:ZUO=ccd_move_aver_filt(DL_DB,Dist_Left,DIRE_NC);YOU=ccd_move_aver_filt(DR_DB,Dist_Right,DIRE_NC);ee = (int)(ZUO - YOU);偏差经过PD运算后得到转向控制的改变量。 Dire_Out = (ee*DIRE_P+gyro_hor*DIRE_D)*0.1。
4)程序开发工具的说明
程序的开发是IAR下进行的,包括源程序的编写、编译和链接,并最终生成可执行文件。 IAR是IARSystems公司为ARM 微处理器开发的一个集成开发环境(下面简称IAR EWARM) 。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点 EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM 内核、外部设备甚至中断的软件运行环境。
4、智能车实物图和电路原理图
电机驱动模块的设计很有特点,调节正反转比较方便