1、4.1 电机特性模型车后轮驱动电机型号为 RS380 电机,工作在 7.2V 电压下,空载电流为 0.5A,转速为 16200r/min。在工作电流为 3.3A,转速达 14060r/min 时,工作效率最大。通过电机驱动模块,控制驱动电机中以使模型车加速运行,也对可对模型车进行制动。由于比赛中不需要模型车倒车,所以电机只工作在正转方向上做功与发电两个状态。可以使用大功率晶体管、全桥或者半桥电路,输出 PWM 实现对于电机的控制。为了简化驱动电路设计,多数参赛队伍采用了集成电机驱动芯片完成对于电机的控制。下图为 MC33886 全桥电机驱动芯片的电路原理图。图中用到两片 MC33886 芯片并
2、接的方式以增加工作电流,并可通过两路 PWM 的控制来实现对电机的正反转的控制。图 4-3 电机驱动电路原理图4.2 舵机特性舵机本身是一个位置承受动系统。它由舵盘、减速齿轮组、位置反馈电位计、直流电机和控制电路组成。通过内部的位置反馈,使它的舵盘输出转角正比于给定的控制信号,因此对于它的控制可以使用开环控制方式。在负载力矩小于其最大输出力矩的情况下,它的输出转角正比于给定的脉冲宽度。车模采用大赛组委会统一提供的 S3010 型舵机,工作电源为 6V。影响舵机控制特性的一个主要参数是舵机的响应速度即舵机输出轴角速度,这个参数一般以舵机输出动心盘旋转 所需要的时间表示。SRM 102 型舵机响应
3、速度为 0.2s/ 。60 60控制信号是周期为 20ms 的 PWM 信号,脉、冲宽度决定舵机输出的转角舵机输出转角与控制信号脉宽的关系如图所示。图 4-4 舵机输出转角与控制信号脉宽之关系图舵机接口一般采用三线连接方法,黑线为电源地线,红线为电源线,白线(蓝线或黄线)为控制信号线。控制信号是周期在 20ms 左右的脉冲信号,脉冲信号的占空比可决定舵机输出舵盘的角度。为了改善舵机的响应速度,可将控制信号的周期减小至 10ms。图 4-5 舵机电路原理图4.3 主控制电路的设计4.3.1 稳压电路的设计采用两片 MAX758A 稳压芯片构成两条 5V 输出稳压电路,一个是专给对电压稳定要求较高
4、的单片机供电,另一路给所有其它需要 5V 的电路供电(如探测板电路、电机驱动电路、速度传感器电路等等) 。图 4-6 稳压电路图上图为 MAX 758A 稳压芯片的电路原理图,其输出电压较稳定且可调。我们硬件电路总共由五大模块组成,分别为电源模块、摄像头与高速 AD模块、电机驱动模块、通信与调参模块,速度检测模块等。其系统结构图见引言,各模块功能下面一一介绍。3.1 电源模块全部硬件电路的电源由 7.2V、2A/h 的可充电镍镉电池提供。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包括多个稳压电路,将充电电池电压转换成各个模块所需要的电压。主要包括如下不同的电压
5、:5V 电压。主要由电源芯片 LM1117 提供,总共用到了三块 LM1117,其在电路图中的名称为 U8、U9、U11。其中 U8 为单片机,数显模块,74LVC4245A 提供电源,U9 为摄像头级其信号处理电路 TLC5510 供电,U11给加速度传感器和速度传感器供电。提供的电压要求稳定、噪声小,电流容量适合要求。6.2V 电压。主要是为舵机提供工作电压,由 LM2576。实际工作时,舵机所需要的工作电流一般在几十毫安左右,电压无需十分稳定。7.2V 电压。这部分直接取自电池两端电压,主要为后轮电机驱动模块提供电源。18V 电压。由 34063 提供给自搭建驱动,其中的逻辑电路还需要
6、LM1117提供 5V 电源。部分电源电路如图 3.1图 3.1 电源模块电路整个电源模块的电路结构如图 3.2图 3.2 电源管理模块3.2 摄像头与高速 AD 模块3.2.1 摄像头模块(1) 摄像头的工作原理摄像头的工作原理是:按一定的分辨率,以隔行扫描的方式采集图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度一一对应的电压值,然后将此电压值通过视频信号端输出。具体而言(参见图3.3) ,摄像头连续地扫描图像上的一行,则输出就是一段连续的电压信号,该电压信号的高低起伏反映了该行图像的灰度变化。当扫描完一行,视频信号端就输出一个低于最低视频信号电压的电平(如 0
7、.3V) ,并保持一段时间。这样相当于,紧接着每行图像信号之后会有一个电压“凹槽” ,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行后(因为摄像头是隔行扫描的) ,开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着又会出现一段场消隐区。该区中有若干个复合消隐脉冲,其中有个远宽于(即持续时间长于)其它的消隐脉冲,称为场同步脉冲,它是扫描换场的标志。场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。摄像头每秒扫描 25 幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描 50 场图像。奇场时只
8、扫描图像中的奇数行,偶场时则只扫描偶数行。图 3.3 摄像头视频信号摄像头有两个重要的指标:有效像素和分辨率。分辨率实际上就是每场行同步脉冲数,这是因为行同步脉冲数越多,则对每场图像扫描的行数也越多。事实上,分辨率反映的是摄像头的纵向分辨能力。有效像素常写成两数相乘的形式,如“320x240” ,其中前一个数值表示单行视频信号的精细程度,即行分辨能力;后一个数值为分辨率,因而有效像素=行分辨能力分辨率。值得注意的是,通常产品说明上标注的分辨率不是等于实际分辨率(即每场行同步脉冲数) ,而是等于每场行同步脉冲数加上消隐脉冲数之和。因此,产品说明上标注的“分辨率”略大于实际分辨率。我们要知道实际的
9、分辨率,就得实际测量一下。通过 S12 单片机的定时器模块对单个脉冲的下降沿和上升沿间隔、两相邻脉冲上升沿间隔进行计时,可得每行信号和每个脉冲持续的时间。实际测得所用摄像头(1/3 Omni Vision CMOS)的时序参数见表 3.1。从测得的结果可知,该摄像头扫描的每场中有 320 行信号,其中第 23 行到 310 行是视频信号,第 311 行到下一场的第 22 行是场消隐信号。在视频信号区,每行信号持续的时间相同,约为 62us;每行的行同步脉冲持续时间也相同,约为 4.7us。而在场消隐区,每行持续的时间会有所变化,每行对应的消隐脉冲持续的时间,尽管其中大多数为 3.5us,但也有
10、变化。在场消隐区中,第320 行的消隐脉冲持续的时间远长于其他消隐脉冲的时间,此脉冲即为场同步脉冲。表 3.1 摄像头时序参数(2) 模拟摄像头视频分离电路设计要能有效地对视频信号进行采样,首先要处理好的问题是如何提取出摄像头信号中的行同步脉冲、消隐脉冲和场同步脉冲。这里有两种可行的方法。第一,直接通过单片机 AD 进行提取。因为行同步脉冲、消隐脉冲或场同步脉冲信号的电平低于这些脉冲以外摄像头信号的电平,所以据此可设定一个信号电平阈值来判断 AD 采样到的信号是否为上述三类脉冲。第二,就是给单片机配以合适的外围芯片,此芯片要能够提取出摄像头信号的行同步脉冲、消隐脉冲和场同步脉冲以供单片机作控制
11、之用。考虑到单片机的速度有限,而一些脉冲的间隔时间又较短,同时为了减轻其处理负担,我们采用了第二种方法进行信号提取。LM1881 视频同步信号分离芯片(简称 LM1881)可从摄像头信号中提取信号的时序信息,如行同步脉冲、场同步脉冲和奇、偶场信息等,并将它们转换成 TTL 电平直接输给单片机的I/O 口作控制信号之用。LM1881 的端口接线方式如图 3.4 所示。图 3.4 LM1881 连接图其中,引脚 2 为视频信号输入端,引脚 1 为行同步信号输出端(如图 3.5中的 b) 。引脚 3 为场同步信号输出端,当摄像头信号的场同步脉冲到来时,该端将变为低电平,一般维持 230us,然后重新
12、变回高电平(如图 3.5 中的c) 。引脚 7 为奇.偶场同步信号输出端,当摄像头信号处于奇场时,该端为高电平,当处于偶场时,为低电平。事实上,不仅可以用场同步信号作为换场的标志,也可以用奇.偶场间的交替作为换场的标志。图 3.5 LM1881 信号时序图由 LM1881 及其外围电路构成的摄像头采样电路如图 3.6 所示。摄像头视频信号端接 LM1881 的视频信号输入端,同时也接入 S12 的一路 AD 转换端口(选用 AD0) 。LM1881 的行同步信号端(引脚 1)通过跳线选择,分别接入ECT 模块中的 PT0 和外部中断引脚(IRQ) ,通过跳线选择,既可以采用脉冲捕捉方式获取行同
13、步信号,也可以采用硬件中断获取。同时将 LM1881 的场同步信号和奇. 偶场同步信号也输入到 ECT 模块中(选用 PT1,PT2) ,这样,既可以采用查询方式获取奇偶场信号跳变,又可以采用脉冲捕捉方式获取电平变化。通过这样的接线,为软件开发提供了多种选择机会,使程序更加灵活。图 3.6 摄像头采样电路图(3) 实际选择摄像头针对模拟摄像头的视频分离电路过于繁琐,我们采用的是使用 OV7620 芯片的摄像头,直接将摄像头行场中断信号和单片机口连接,直接去掉了视频信号的视频分离电路,简化了电路的同时,减少了外部干扰的几率。3.2.2 高速 AD 模块摄像头获得的视频信号为模拟信号,而单片机处理
14、的却是数字信号,所以由必要把视频模拟信号离散成数字信号,这就要用到模数转换技术。一般而言单片机都有 A/D 转换模块。我们所用单片机为组委会推荐使用的新一代单片机mc9s12xs80。S12 内置了 2 个 10 位/8 位的 A/D 模块 ATD0 和 ATD1,通称为模数/转换器(ATD)。但是 S12 微控制器 ATD 的最高转换频率只有约为 2MHz,不能够满足我们的要求,所以我们自己设计了外部高速 AD 将摄像头的模拟信号先转换位数字信号后再通过 I/O 口送单片机内部进行数据处理。我们采用 8 位高速 A/D 转换器 TLC5510 搭建。TLC5510 引脚说明及工作原理(1)T
15、LC5510 的引脚说明TLC5510 为 24 引脚、PSOP 表封装形式(NS)。其引脚排列如图 3.1 所示。各引脚功能如下:AGND:模拟信号地;ANALOG IN:模拟信号输入端;CLK:时钟输入端;DGND:数字信号地;D1D8:数据输出端口。为数据最低位,为最高位;OE:输出使能端。当 OE 为低时,D1D8 数据有效,当 OE 为高时,D1D8 为高阻抗;VDDA:模拟电路工作电源;VDDD:数字电路工作电源;REFTS :内部参考电压引出端之一,当使用内部电压分压器产生额定的2V 基准电压时,此端短路至端;REFT:参考电压引出端之二;REFB:参考电压引出端之三;REFBS
16、:内部参考电压引出端之四,当使用内部电压基准器产生额定的 2V基准电压时,此端短路至 REFB 端。具体的芯片管脚图见图 3.7图 3.7 TLC5510 的引脚排列(2) TLC5510 工作原理TLC5510 的工作时序见图 3.8。时钟信号 CLK 在每一个下降沿采集模拟输入信号。第次采集的数据经过 2.5 个时钟周期的延迟之后,将送到内部数据总线上。在图 3.8 所示的工作时序的控制下,当第一个时钟周期的下降沿到来时,模拟输入电压将被采样到高比较器块和低比较器块,高比较器块在第二个时钟周期的上升沿最后确定高位数据,同时,低基准电压产生与高位数据相应的电压。低比较块在第三个时钟周期的上升
17、沿的最后确定低位数据。高位数据和低位数据在第四个时钟周期的上升沿进行组合,这样,第次采集的数据经过2.5个时钟周期的延迟之后,便可送到内部数据总线上。此时如果输出使能 OE 有效,则数据便可被送至 8 位数据总线上。由于 CLK 的最大周期为 50ns,因此,TLC5510 数模转换器的最小采样速率可以达到 20MSPS。图 3.8 TLC5510 工作时序(3)TLC5510 外围电路a 为了减少系统噪声,外部模拟和数字电路应当分离,并应尽可能屏蔽。b 因为 TLC5510 芯片的 AGND 和 DGND 在内部没有连接,所以,这些引脚需要在外部进行连接为了使拾取到的噪声最小,最好把隔开的双
18、绞线电缆用于电源线。同时,在印制电路板布局上还应当使用模拟和数字地平面。c VDDA 至 AGND 和 VDDD 至 DGND 之间应当分别用 1uF 电容去耦,推荐使用陶瓷电容器。对于模拟和数字地,为了保证无固态噪声的接地连接,试验时应当小心。d VDDA、AGND 以及 ANALOG IN 引脚应当与高频引脚 CLK 和 D0D7隔离开。在印制电路板上,AGND 的走线应当尽可能地放在 ANALOG IN 走线的两侧以供屏蔽之用。e 为了保证 TLC5510 的工作性能,系统电源最好不要采用开关电源。图 3.9 TLC5510 外围电路3.3 电机驱动模块在电机驱动上,我们用 MOS 管作
19、为分立元件搭建了 H 桥驱动电路如图3.8。通过逻辑设计,可以让电机处于多种模式下工作,经过在赛道上对赛车进行试验,电机的加减速效果很好,完全可以满足赛车对不同赛道加减速的要求。图 3.10 H 桥在搭建的过程中我们试过了很多的前级驱动芯片,如IR2110,33883,4427 等,MOS 管也用过了 IRF3205、IRF1404、IRF2804 等,通过上面各芯片的 datesheet,我们最后选择了 4427 和 IRF2804 的组合。图 3.11为 4427 的引脚功能图,图 3.12 为其内部原理图。图 3.10 4427 的引脚功能图3.11 4427 内部原理图从图 3.9 可
20、以很轻易知道 4427 有两路信号通道,A 通道和 B 通道,而且是完全对等的,而图 3.9 中的 MOS 管的关断与否要四各信号来控制,所以我们可以使用两片 4427 来控制,由于信号通道是完全对等的,两片 4427 共四路信号可以控制任意一个 MOS 管。对于 MOS 管的选择原则是尽可能的选择导通内阻低的,这样可以避免管子发热严重的现象。在设计初期我们同时考虑到应避免图 3.10 中 Q1 和 Q2、Q3 和 Q4 同时导通的问题,本质上来说应该避免电源和地短路的问题,对于此,参考了大量资料后我们觉的可行的办法就是在前级驱动电路前面加上逻辑保护电路。实际中控制中我们用到了一路 PWM 口
21、和一路 I/O 口来控制驱动电路。所以逻辑保护电路应该能够达成如下表 3.2 的控制效果。表 3.11 驱动电路的控制逻辑PWM I/O 导通情况 效果0 1 Q2、 Q4 导通 电磁阻尼1 1 Q2、 Q3 导通 反转0 0 Q1、 Q3 导通 电磁阻尼1 0 Q1、 Q4 导通 正转驱动电路从设计到制板在到焊接使用前后花了两个多月时间,值得高兴的是,制作出来的驱动电路驱动性能的确够好,也够强劲。图 3.12 为搭建驱动电路的电路原理图,以飨读者。图 3.12 驱动电路图3.4 通信与调参模块3.4.1通信模块 (1)串口通信模块串行通信是微控制器与外围设备或其他计算机之间通信的一种重要渠道
22、,计算机或微控制器与外界进行数据交换称为通信。我们所用 S12 串行通信模块包含多个独立的串行子系统,故我们可以进行 S12 和计算机之间的通信,进行在线调试。图 3.12 为串行通信模块电路图。其中 MAX232 的 9、10 两脚分别与S12 的 PS0、PS1 连接。图 3.13 为 MAX232 引脚图。图 3.12 串口通讯电路 图 3.13 MAX232 引脚图(2)SD 卡记录设备在前几届的比赛中,大多数队伍均是通过串口将S12 的数据传到电脑中进行分析,便于识时进行调试。但这只能在静止条件下捕获赛车所采集的信息情况,难以辨知赛车在赛道中跑的时候所采集到的赛道信息是什么样的。 为
23、了解决此难题,我们成功地研制出了SD 卡记录功能。SD 卡用过SPI 与S12 进行通信。通过SD 卡可以讲车模运动时的每一幅图片存储下来,以便事后分析,发现错误。 不过我们的 SD 卡记录系统还存在一些不足的地方,比如由于 S12 的限制,在使用 SD 卡的时候,会增加单片机的工作负担,从而无法跑出和没有 SD 卡时一样的速度。3.4.2调参模块 对于用来竞赛的车模必须要有很强的适应性,这就在要求你控制算法适应性强的同时,还可以适当的改变一些算法中的可调参数使车模能够很好的适应新的赛场环境。特别是在赛前的副管调试时,可以根据跑道所用材料的摩擦系数来适当的确定车模在接下来的比赛中所用参数。总之
24、,一辆好的车模往往具有很强的可调性,这就需要确定好方便调参电路和必要的软件程序的支持。针对于此,设计初期,我们参考了上届其他大学的报告,有了几种方案。(1) 使用带旋柄电位器对合适的电压进行分压,用 S12 的 ATD 模块对分得电压值采样。可以用 S12 的一个 A/D 口就可读入一个旋转信号,可以用它来等比例调节车速。(2) 使用使用键盘阵列配合拨码盘和 LED。此方法占用单片机 I/O 口,而且外围电路过于大,模块化以后占车模面积也太大,所以没有采用。(3) 旋转开关配合 LED。旋转开关在接好外围电路后,在正反转使产生不同脉冲信号,送入单片机进行处理,根据需要可以设置不同的可调参数。在
25、实际的使用中我们选择了第三种方法,它理论上可调的参数为九十九个,足够用来对车模的参数进行调节,LED 显示构成人机界面。如图 3.14 为旋转开关电路图,3.15 为人机界面电路图。图 3.14 旋转开关电路图图 3.15 人机界面电路图3.5 速度测量模块为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运行不稳定。通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车模
26、运行得更稳定。 车速检测的方式有很多种,例如用测速发电机、转角编码盘、反射式光电检测、透射式光电检测和霍尔传感器检测。经过对去年测速方案和其它学校方案的比较,本次设计中速度传感器采用的是 OMRON 公司生产的 E6A2-CS100 型光电编码器。它由 5-12V 的直流供电,速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。速度传感器通过后轮轴上的齿轮与电机相连,车轮每转一圈,速度传感器转过 2.75 圈。这样能够很好的稳定工作,且能很准确的得到电机的转速,比较可靠。系统的软件方框图 单片机初始化摄像头场中断摄像头行中断图像采集测速速度 PID 控制
27、图像处理黑线处理 传送图像设定速度跟随线设定舵机控制传送图像?超声波测距中断测距判断方位舵机控制图 4.2 系统软件方框图4.3 系统初始化单片机要正常工作,必须对它进行初始化,对于 MCS12DG128B 单片机来说,初始化的部分主要有一下几部分:总线时钟初始化,PWM 模块初始化,ECT 模块初始化,I/O 口初始化,SCI 模块初始化,A/D 转化初始化。下面我就分别介绍一下各个模块的初始化程序。4.3.1 总线时钟初始化和总线时钟初始化相关的寄存器主要有时钟合成寄存器 SYNR 和时钟分频寄存器 REFDV。锁相环产生的时钟频率 F=2*f*( SYNR+1)/(REFDV+1), 式
28、中f 是振荡器的频率,SYNR 为示踪合成寄存器的值, REFDV 为时钟分频寄存器的值。下面就是总线时钟设定程序:void PLL_init(void) /设定总线时钟 40MHz SYNR=0X09; REFDV=0X03; while(CRGFLG_LOCK=0); CLKSEL=0x80; 4.3.2 摄像头初始化由于摄像头行同步信号接到了 S12 单片机的输入捕捉 PT1 引脚,所以当每行视频信号到来时,会产生一个中断,进入采集该行。摄像头的初始化包括初始化中断,具体过程为:TIE=0X02; /中断IC1使能 INTCR_IRQEN = 0; /清除外部中断标志 ATD0DIEN=
29、0xFF; /设置 AN 为数字输入4.3.3 PWM模块初始化脉宽调制(PWM)模块有 8 路独立的可设置周期和占空比的 8 位 PWM 通道,每个通道配有专门的计数器。该模块有 4 个时钟源,能分别控制 8 路信号。通过配置寄存器可设置 PWM 的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(单独输出还是合并输出) 。为了提高控制精度,将 PWM0、PWM1 两路 8 位通道合并为一个 16 位通道来控制舵机,这样可使舵机的控制精度从 1/255 提高到 1/65536。PWM 模块的初始化设置过程为:(1)选择时钟PWMPRCLK、PWMSCLA、PWMS
30、CLB、PWMCLK(2)选择极性 PWMPOL(3)选择对齐模式 PWMCAE(4)对占空比和周期编程 PWMDTYx、PWMPERx(5)使能 PWM 通道 PWME下面是 PWM 模块初始化程序:void PWM_init(void) /PWM 初始化PWMPRCLK=0x12; /A clock 10MHz , B clock 20MHzPWMSCLA=0x01; /SA 5MHz=(10/(2*1)PWMSCLB=0x01; /SB 10MHz=(20/(2*1)PWMCLK=0xFF; /选择 ClockSA,ClockSB 时钟PWMPOL_PPOL1=1; /周期开始,PWM
31、输出高电平PWMPOL_PPOL7=1; PWMPOL_PPOL3=1;PWMCAE=0xff; /对齐方式为输出中心对齐PWMCTL=0xb0; /通道 01,23,67 级联PWMPER01=50000; /PWM 占空比初始化PWMDTY01=steer_MIDDLE; PWMPER23=1000;PWMDTY23=0;PWMPER67=1000;PWMDTY67=0;PWME=0xFF; /启动 PWM,下一个时钟输出 PWM通过 PWM 初始化,我先对总线时钟进行了预分频,把 ClockA 的时钟设定为 10MHz=40MHz/4,ClockB 的时钟设定为 20MHz=40MHz/
32、2。然后对 ClockA和 ClockB 进行进一步分频,得到 ClockSA 的时钟 5MHz=10 MHz /(2*1),ClockSB 的时钟 10 MHz=20 MHz /(2*1)。极性设定为 1,也就是周期开始时,PWM 输出为高电平 ;对齐方式为输出中心对齐方式,所以就得到占空比的计算公式:占空比=【PWMDTYx/PWMPERx】*100%4.3.4 I/O 模块初始化S12MCU 的每个端口除可以作为通用 I/O 外,还分别具有专用 I/O 功能,可以根据需要选择其一。有的端口启动专用功能后,通用 I/O 功能自动关闭;有的端口专用功能只占用部分引脚,其余引脚的 I/O 功能
33、仍然可以正常工作;此外,有的引脚仅具有单向输入或输出功能。具体情况取决于专用功能的特殊要求以及对 I/O 的设置。下面是 I/O 初始化的程序:void IO_init(void) /IO 口初始化DDRB=0xff; /设定 PORTB 为输出PORTB=0xff; /端口 PORTB 输出高电平 DDRA=0x00; /设定 PORTA 为输入PUCR_PUPAE=0; /A 口的上拉电阻无效DDRM=0x00; /设定 PORTM 为输入PERM=0x00; /M 口的上拉电阻无效DDRE=0x00; /设定 PORTE 为输入PUCR_PUPAE=0; /E 口的上拉电阻无效DDRJ_
34、DDRJ7=1; /设定 PORTJ_7 为输出motor=1; /enable 33886 DDRH=0x00; /设定 PORTH 为输入通过 I/O 模块初始化程序,完成 A 口,B 口,E 口,M 口,H 口以及 J 口的第七位的输入输出方式设定,同时也给 PORTB 设定了初值。4.3.5 SCI 模块初始化SCI 是一种采用标准的不归零数据 NRZ 格式的异步串行通信接口。S12MCU 的 SCI 的功能特点是:双线串行接口;标准 NRZ 格式;硬件自动生成奇偶标志;全双工操作;独立的波特率产生逻辑;独立的发送器和接收器允许控制位;通信过程可采用中断驱动机制;具有回送方式,方便了调
35、试;可以监视发送器的输出,实现通信过程的自诊断。它的初始化很简单,使用起来非常方便。下面是 SCI 的初始化程序:void SCI_init(void) /SCI 模块初始化 SCI0BD=260; / baud rate 9600SCI0CR1=0x00; /正常 8 位模式,无奇偶校验SCI0CR2=0x2C; /接受中断允许SCI 的初始化完成后, S12MCU 就进入等待中断模式,等待上位机向其发送数据。4.3.6 ECT 模块初始化S12 的 ECT 具有 8 个输入捕捉(Input Capture,IC)/输出比较(Output Compare,OC)通道,可以通过设置 TIOS
36、寄存器的 IOSx 位选择输入捕捉/输出比较(IC/OC )功能,8 个输入捕捉/输出比较通道各自具有自己的向量中断和控制寄存器。下面是 ECT 模块的初始化程序:void ECT_init(void) /ECT 模块初始化 TIOS=0x00; /通道设置为输入捕捉工作方式TSCR1=0x80; /使能定时器TCTL3=0x02; /通道 4 采用下降沿捕捉TIE=0x10; /通道 4 定时器中断使能TSCR2=0x07; /预分频系数为 128DLYCT=0x00; /进制输入延时PACTL=0x40; /输入脉冲累加使能ECT 模块为我们系统测速功能提供了很大的方便,由于有了这个增强型
37、输入捕捉定时器,测速模块的软件实现就显得比较简单。ECT 模块的初始化,正是为以后的测速做好了准备。4.3.7 高速 AD 模块初始化高速 AD 模块工作时,CPU 向该模块发出启动命令,然后进行采样,A/D转换,最后将结果保存到相应的寄存器。高速 AD 模块 AD 转换芯片及相应的外围电路组成。下面是 AD 模块的初始化程序:void ATD_get(void)for(z=0;z4000) steer_temp=(unsigned int)(right_limit.400)+(steer_temp.(right_limit.400)*1.3); if(steer_tempright_limi
38、t) steer_temp=right_limit; /右极限控制/if(wire_confirm=1)PWMDTY01=(unsigned int)steer_temp; if(KEYSET1_1=0 /舵机打到中间位置4.6 测速和速度设定智能寻迹导航系统的测度功能主要是依靠定时器的 ECT 模块,通过记录脉冲的个数来得到测速的目的。下面就是测速部分的 C 语言程序:void get_speed(void) /测 速char s;for(s=0;s=straight_line_value|abs(X3)=straight_line_value) set_speed=140; /直线入弯时设
39、定速度/set_speed=135; /巡航时的速度设定if(R=4) ts(unsigned char)set_speed); /传送速度到上位机4.7 速度的 PID 控制为了达到好的速度控制效果,对速度进行闭环控制是必须的。这里所说的速度控制策略是指设定速度的确定方法设定速度主要由道路与直道的偏差来决定,道路越接近直道,设定速度越高,反之越低。系统行进中的最低速度是这样确定的:令系统以较低的速度匀速行使,在保证安全的前提下,逐渐提高匀速行使的速度,直到系统出现不稳定行为,此速度再减去一个安全量,即为所需的最低速度。简单的说,变速行使的最低速度等于匀速行使的最高速度。系统行进中的最高速度是这样确定的:在确定最低速度以后,加入变速策略,不断提高最高速度的设定值,直到系统出现不稳定行为,此速度再减去一个安全量,即为所需的最高速度。系统行进过程中难免出现“失去道路”的情况,对此需要采取一定的安全策略,防止系统“盲跑”而导致危险。速度控制的实现我们采用 PID 算法,下面就简单介绍一下: