智能车设计(3)

2019-04-02 23:27

(1)中央处理器单元

中央处理器采用MC9S12DG128芯片,以运算速度很快的CPU12内核为核心的单片机,经过锁相环后,时钟频率可达到40MHz,内部Flash高至128KB,拥有2组各8路10位A/D、16路I/O口,有功能强大的8位PWM输出共8路,以及8路16位增强型定时器(ECT)。该单片机功能强大,完全能够胜任小车的检测和控制功能。

(2)道路识别模块

道路检测模块用于完成赛道相对智能车的偏移量、方向、曲率等信息的采集,通过连接线把信息传送给中央控制单元,使智能车沿着跑道轨迹稳定前行,获取更多、更远、更精确的赛道信息是提高智能车运行速度的关键。

(3)电源模块

为各个电路模块提供稳定电源,可靠的电源方案是整个电路稳定运行的基础,电源模块包含多个稳压电路,将充电电池电压转换成各模块所需要的电压。

(4)舵机驱动模块

对模型车上的舵机进行驱动,达到快速准确控制赛车方向。 (5)电机驱动模块 通过电机驱动模块,控制驱动电机两端电压可以使模型车加速运行,也对模型车进行制动。

(6)速度检测模块

通过速度检测模块对模型车的速度进行检测,实现闭环控制,以便调整弯道和直道的速度,从而提高平均速度,使小车能够平稳快速的跑完全程。

智能车的工作模式是:光电传感器探测赛道信息,转速传感器检测当前车速,电池电压

监测电路检测电池电压,并将这些信息输入单片机进行处理。通过控制算法对赛车发出控制命令,通过转向舵机和驱动电机对赛车的运动轨迹和速度进行实时控制。 (7)转弯控制策略

总体流程图:

(二)部分程序模块

1、 线性CCD模块

我们常说的摄像头 CCD 模块通常使用的是面阵 CCD 芯片,一般以 OV 系列面阵 CCD 最为常用。而 TSL1401 属于线性 CCD,也可以叫做线阵 CCD。与面阵 CCD 相比,线性 CCD 最明显的特点就是其只能采集一行的可视像素。本系统采用的线性CCD可以采集到一行的128个点,并用一个数组Pixel[]存储起来。

以下是CCD采样程序:

void ImageCapture(unsigned char * ImageData) {

unsigned char i; extern u8 AtemP ;

SI_SetVal(); /* SI = 1 */ SamplingDelay();

CLK_SetVal(); /* CLK = 1 */ SamplingDelay();

SI_ClrVal(); /* SI = 0 */ SamplingDelay();

//Delay 10us for sample the first pixel /**/

for(i = 0; i < 250; i++) { //更改250,让CCD的图像看上去比较平滑,

SamplingDelay() ; //200ns //把该值改大或者改小达到自己满意的结果。

}

//Sampling Pixel 1

*ImageData = ad_once(ADC1, AD6b, ADC_8bit); ImageData ++ ;

CLK_ClrVal(); /* CLK = 0 */

for(i=0; i<127; i++) { SamplingDelay(); SamplingDelay();

CLK_SetVal(); /* CLK = 1 */ SamplingDelay(); SamplingDelay(); //Sampling Pixel 2~128

*ImageData = ad_once(ADC1, AD6b, ADC_8bit); ImageData ++ ;

CLK_ClrVal(); /* CLK = 0 */ }

SamplingDelay(); SamplingDelay();

CLK_SetVal(); /* CLK = 1 */ SamplingDelay(); SamplingDelay();

CLK_ClrVal(); /* CLK = 0 */ }

以下是计算曝光时间的程序: u8 IntegrationTime = 10;

void CalculateIntegrationTime(void) { extern u8 Pixel[128];

/* 128个像素点的平均AD值 */ u8 PixelAverageValue;

/* 128个像素点的平均电压值的10倍 */ u8 PixelAverageVoltage;

/* 设定目标平均电压值,实际电压的10倍 */ s16 TargetPixelAverageVoltage = 25;

/* 设定目标平均电压值与实际值的偏差,实际电压的10倍 */ s16 PixelAverageVoltageError = 0;

/* 设定目标平均电压值允许的偏差,实际电压的10倍 */ s16 TargetPixelAverageVoltageAllowError = 2;

/* 计算128个像素点的平均AD值 */ PixelAverageValue = PixelAverage(128,Pixel);

/* 计算128个像素点的平均电压值,实际值的10倍 */

PixelAverageVoltage = (unsigned char)((int)PixelAverageValue * 25 / 194);


智能车设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管理学基础 练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: