智能车实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
制精度。u(k)=kpe(k)+bTi∑e(j)+Td*[e(k)-e(k-1)]
b=1 或 0
e(k)是当前给定速度和测量速度的偏差,e(k-1)是上次的偏差。
PID 控制程序:
#include <>
#include ""
void PID_Math(void)
{
signed long ee1;
//偏差一阶
红外传感器电路图:
3、驱动模块 电机驱动电路可以用 MOS 管搭建 H 桥驱动电路。采用 MOS 管构成的 H 桥电路,控制直
流电机紧急制动。用单片机控制 MOS 管使之工作在占空比可调的开关状态,精确调整电动机 转速。这种电路由于 MOS 管工作在饱和截止状态,而且还可以选择内阻很小的 MOS 管,所以 效率可以非常高,并且 H 桥电路可以快速实现转速和方向控制。MOS 管开关速度高,所以非 常适合采用 PWM 调制技术。所以我们选择了用 MOS 管搭建 H 桥驱动电路。
电机正转电路:
电机驱动电路: 4、测速模块
在比赛中常用霍尔传感器来测速。如图 1 所示,在半导体薄片两端通以控制电流 I, 并在薄片的垂直方向施加磁感应强度为 B 的匀强磁场,则在垂直于电流和磁场的方向上,将
产生电势差为 UH 的霍尔电压, 它们之间的关系为 U=k ,d 为薄片厚度,k 为霍尔系数,
//signed long ee2;
//偏差二阶
signed long d_out;
//积分输出
if(!Flag_PID_T_OK)
return;
Flag_PID_T_OK=0;
Temp_Set=3700;
//温度控制设定值度
PID_e0 = Temp_Set-Temp_Now;
//本次偏差
ee1 = PID_e0-PID_e1;
模块则需要通过较大的电流,利用 LM2940-5 和 LM2596-5 对控制系统和执行部分开供电,可 以有效地防止各器件之间发生干扰,以及电流不足的问题,使得系统能够稳定地工作。
电源电路图:
2、寻迹模块
寻迹模块是智能车系统的关键模块之一,所寻找的路径的好坏,将直接影响竞赛的结果, 我们采用的是光电传感器来寻找路径,光电传感器具有电路简单、信号处理速度快等特点。 因为在赛道中由黑色轨迹线和大面积的白色区域组成,则会使发光二极管发射的光线强度 不同,从而使接受到的光线强度不同,以此来指示小车前进。
宁波大学
创新性开放实验报告
题目
基于光电传感器的自动寻迹小车
学 号: 姓 名: 专 业: 指导教师:
目录
光电感应智能车................................................错误!未定义书签。
一、 硬件系统…………………………………………………………………………………错误!
(一) 主程序流程图.......................................................... 7
1、电机驱动............................................................... 8
2、舵机驱动.............................................................. 10
在程序中只要改变 a,a 从 500 变化到 2500,就可以让舵机从 0 变化到 180 度。
舵机 PWM 波模 块初始化
A/D 转换器 初始化 A/D 转换
传感器当前 状态监测
监测状态发生 改变的传感器
计算智能车偏差 的传感器
计算前轮转 角
改变 PWM 波 脉冲宽度
参考文献
[1] 卓晴,黄开胜,邵贝贝《学做智能车――挑战“飞思卡尔”杯》[M].北京航空航天大学出版 社,2007(1)20-60 [2] .单振清《传感器检测技术应用》[M] 电北京理工大学出版 2013 126-142 [3]Romon Pallas-Areny《传感器和信号调节》[M]. 清华大学出版社 2003 45-93 [4]吕泉 《现代传感器原理及应用》 [M] 清华大学出版社 2006 28-44
3、驱动模块............................................................... 5
4、测速模块............................................................... 6
二、 软件系统................................................................ 7
单易懂,使用中不需精确的系统模型是我们选择的原因。
算法:u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]
在实验中为提高精确度,选择积分分离 PID 算法,即当速度误差较大时选择 PD 控制,
可避免大的超调,又使系统有较快的相应,当速度误差较小时选择 PID 控制,可保证控
//如果温度相差大于 1 度时积分累计限
//积分输出 //当前温度高于设定温度度时积分累计
//当前温度高于设定温度度时削弱积分 //PID 比例,积分和微分输出 //恢复被 PID_Out 系数放大的倍数
PID_Out=0;
if(PID_e0 > 300) 热
PID_Out=200; if(PID_e0 < -20)
【关键词】 红外传感器 ;PID 控制;自动寻迹
一、 硬件系统
(一)智能小车的整体结构图
智能车通过单片机来接受和发出参数状态信号,电源模块是给智能车各个模块提供电压 以使模块可以正常运作,寻迹模块则是包含着参数输送给单片机的作用,驱动模块是小车动 起来的根源,测速模块是为了控制车速以使智能车平稳的沿着车道运行。
1、电源模块 在“飞思卡尔”比赛中,比赛方提供的是智能车竞赛统一配发的标准车模用 供电,但 是在单片机系统、路径识别的光电传感器、光电码编码器等均需要 5V 电源,直流电机可以 使用 蓄电池直接供电,我们采用的电源有串联型线性稳压电源(LM2940、7805 等)和开 关型稳压电源(LM2596)两大类。对于单片机,选用 LM2940-5 单独对其进行供电;而其它
限制 { if(PID_e_SUM > 150) PID_e_SUM = 150;
if(PID_e_SUM > 0) 正输出
d_out >>= 1; } PID_Out += d_out; } else PID_e_SUM=0;
PID_Out/=100; if(PID_Out > 200)
PID_Out=200; if(PID_Out<0)
未定义书签。
(
一
)
硬
件
框
图……………………………………………………………………………………..3
1、电源模块............................................................... 4
2、寻迹模块............................................................... 4
通过对一定时间内脉冲信号数量的捕捉可以计算出车轮的速度。 霍尔传感器的电路图:
系统主程序流程图
二、 软件系统
开始
系统初始化 定时器开始
寻迹模块工作 舵机工作
驱动电机工作
定时中断否
速度采样
1、 电机驱动 因为智能车在赛道上的路径不是一条直线,它是存在弯道的,所以让小车以个加速
度均匀的行驶是难以实现的,在此,我们采用在弯道里速度慢一些以保证稳定性,在直 道上速度快一些以减少整体行驶时间。在软件上的计算方法采用 PID 控制。PID 控制器简
TH0=-(c/256); TL0=-(c%256); /*重新定义初值 if(c>=500&&c<=2500)c=a; else c="20000-a"; /*判断宽度是否在正常范围内 void timer1(void) interrupt 3 using 1 {p13=!p13; d=20000-d; TH1=-(d/256); TL1=-(d%256); if(d>=500&&d<=2500)d=b; else d="20000-b"; } void main(void) {TMOD=0x11; /*设初值 p12=1; p13=1; a=1500; b=1500; /*舵机 90 度的位置 c=a;d=b; TH0=-(a/256); TL0=-(a%256); TH1=-(b/256); TL1=-(b%256); /*设定定时器初始计数值 EA=1; ET0=1; TR0=1;EX0=1;EX1=1; ET1=1; TR1=1; PX0=0;PX1=0;PT1=1;PT0=1; /*设定中断优先级
PID_Out=0;
//当前温度比设定温度低 3 度则全速加 //当前温度高于设定温度度则关闭加热
Hot_T_Run=PID_Out;
//加热时间控制输出
PID_e2 = PID_e1; PID_e1 = PID_e0;
//保存上次偏差 //保存当前偏差
1、舵机驱动 原理:控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系 列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵 盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板, 进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目 标停止。即由 pwm 波产生模块计算相应的 pwm 波占空比,产生 pwm 波,驱动舵机, 改变舵机前轮转角意识智能车转弯。 程序: #include <> #define uchar unsigned char #define uint unsigned int uinta,b,c,d; /*a、b 为舵机 1、2 的脉冲宽度/* /*c、d 为中间变量/* sbit p12=P1^2; sbit p13=p1^3; sbit p37=P3^7;/*输出管脚 void timer0(void) interrupt 1 using 1 {p12=!p12; /*输出取反*/ c=20000-c; /*20000 /*一个周期时间 20ms
输出 { if(abs(PID_e0) > 100)
制 { if(PID_e_SUM > 100) PID_e_SUM = 100; if(PID_e_SUM < -100) PID_e_SUM = -100; } d_out = PID_ki*PID_e_SUM; if(PID_e0 < -5)
参考文献.................................................................... 13
光电感应自动寻迹智能车
【摘要】如果把自动寻迹小车成比例的扩大数倍,就成为真正有意义上的智能车,
可以运用于军事、民用领域,对未来汽车行业的发展有一定的借鉴意义。通过光电传感器 来寻找轨迹,以所编写的程序为软件支持,通过单片机计算生成相应的控制参数,驱动电 机来使小车按照轨迹运动。其中小车在直线行驶过程控制参数保持不变,匀速行驶,而在 小车要转弯之前则要先减速以防止小车过弯时冲出赛道,弯道过去之后在加速行驶以减少 行驶时间。
//积分最多累计的温差
PID_e_SUM = 200;
源自文库
if(PID_e_SUM < -200)
PID_e_SUM = -200;
PID_Out = PID_kp*PID_e0+PID_kd*ee1; if(abs(PID_e0) < 200)
//计算 PID 比例和微分输出 //如果温度相差小于度则计入 PID 积分
//计算一阶偏差
//ee2 = PID_e0-2*PID_e1+PID_e2;
//计算二阶偏差
if(ee1 > 500)
//一阶偏差的限制范围
ee1 = 500;
if(ee1 < -500)
ee1 = -500;
PID_e_SUM += PID_e0;
//偏差之和
if(PID_e_SUM > 200)