微型计算机控制技术课程设计报告.docx
《微型计算机控制技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《微型计算机控制技术课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
微型计算机控制技术课程设计报告
《微型计算机控制技术课程设计》报告
名称:
电磁智能车舵机控制
院系:
电子电气工程学院
学号:
021208132
学生:
李太军
任课教师:
戎自强
完成时间:
2011年6月
目录
1、引言3
1.1研究背景3
1.2应用前景3
2、硬件设计4
2.1电源模块4
2.2电机驱动电路4
2.3核心控制模块6
2.4霍尔传感器布局7
2.5舵机模块8
3、软件设计9
3.1PID简介9
3.2程序框图9
3.3程序11
4、结束语19
5、参考文献20
摘要:
本设计智能小车舵机的控制核心是单片机(MC9S12DG128),软件平台为CodeWarriorIDE开发环境。
采用霍尔传感器对赛道进行检测,利用PWM技术和PID控制小车的运动方向。
基于这些完备可靠的硬件设计,编写了开环运动控制程序来控制舵机的运行。
经过反复测试,取得比较好的成果。
关键字:
单片机,PWM技术,舵机
1、引言
1.1研究背景
1953年,美国制造了世界上第一台采用埋线电磁感应方式跟踪路径的自动导向车,也被称为“无人驾驶牵引车”。
20世纪70年代中期,具有载货功能的自动导向车主要用于自动化仓贮系统和柔性装配系统的物料运输。
在20世纪70年代和80年代初,自动导向车的应用领域扩大而且工作条件也变得多样化,因此,新的导向方式和技术得到了更广泛的研究与开发。
最近,小型自动导向车应用更为广泛,而且以长距离不复杂的路径规划为主。
这种自动导向车从仅由大公司应用,正向小公司单台应用转变,而且其效率和效益更好。
至此出现了智能车的概念。
智能汽车是一种高新技术密集的新型汽车,是在网络环境下利用信息技术、智能控制技术、自动控制、模式识别、传感器技术、汽车电子、电气、计算机和机械等多个学科的最新科技成果,使汽车具有自动识别行驶道路、自动驾驶和自动调速等先进功能。
随着控制技术、计算机技术和信息技术的发展,智能车在工业生产和日常生活中已经扮演了非常重要的角色。
近年来,智能车在野外、道路、现代物流及柔性制造系统中都有广泛运用,已成为人工智能领域研究和发展的热点。
1.2应用前景
城市公共交通是与人民群众生产生活息息相关的重要基础设施。
然而,目前世界上许多大城市都面临着由私人汽车过度使用而带来的诸多问题,例如:
道路堵塞、停车困难、能源消耗、噪声污染和环境污染等,这些问题严重降低了城市生活的质量。
优先发展城市公共交通是提高交通资源利用效率,缓解交通拥堵的重要手段。
回顾汽车发展的百年历史,不难发现其控制方式从未发生过根本性改变,即由人观察道路并驾驶车辆,形成“路——人——车”的闭环交通系统。
随着交通需求的增加,这种传统车辆控制方式的局限性日益明显,安全性低。
如果要从根本上解决这一问题,就需要将“人”从交通控制系统中请出来,形成“车——路”闭环交通系统,从而提高安全性和系统效率。
这种新型车辆控制方法的核心就是实现车辆的智能化。
智能车有着极为广泛的应用前景。
结合传感器技术和自动驾驶技术可以实现汽车的自适应巡航并把车开得又快又稳、安全可靠。
2、硬件设计
2.1电源模块
驱动电路模块中的电源模块为系统其它各个模块提供所需要的电源。
设计中除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。
可靠的电源方案是整个硬件电路稳定可靠运行的基础。
全部硬件电路的电源由LP38690提供,基本稳压值为5.5V。
由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包括多个稳压电路,将充电电池电压转换成各个模块所需要的电压。
2.2电机驱动电路
电机驱动芯片BTS7970B的一部分是NovalithIC,含有三个独立的芯片的家庭。
包装:
一个p-channel高MOSFET和一个n-channel低MOSFET,形成一个完全整合集成电路的半高电流。
三个芯片安装在一个共同的引线框架,利用该芯片在芯片和芯片技术上,利用垂直马鞍山电源开关技术确保最佳的阻力。
由于p-channel高开关需要一个电荷泵,就可以消除电磁干扰(EMI)。
连接到一个单片机变得容易,集成驱动电路的逻辑电平输入、诊断这些特点可以防过热、过流、过压、欠压、短路。
BTS7970B结合其他BTS7970B形成三相定速驱动方式。
图2BTS7970B芯片内部结构图
图3BTS7970B芯片外部引脚的封装图
各个引脚的功能(如表1所示):
表1BTS7970B引脚对应功能表
终端
终端名称
I/O
功能
1
GND
-
低电流模拟信号接地
2
IN
I
输入
定义高低开关是否被激活
3
INH
I
抑制
当被设置为低电平进入睡眠模式
4,8
OUT
O
功率输出的桥梁
5
SR
I
在SR和GND之间连接一个电阻使电源开关的速度可以调节
6
IS
O
电流反馈输出引脚
7
VS
-
2.3核心控制模块
核心控制模块(如图4所示)是智能车的核心单元,具有以下几个主要任务:
接收传感器的输入信号;利用算法对输入信号进行分析处理;根据处理结果输出舵机和驱动电机的控制信号。
该模块上包括了MC9S12DG128单片机工作所必需的稳压模块、时钟模块和复位模块,同时还包括了视频信号分离电路、BDM调试接口、串口以及无线Zigbee接口等。
图4控制电路板
2.4霍尔传感器布局(如图5所示)
霍尔传感器是一种当交变磁场经过时产生输出电压脉冲的传感器。
脉冲的幅度是由激励磁场的场强决定的。
因此,霍尔传感器不需要外界电源供电。
霍尔传感器可广泛应用于:
1电子式水表、气表、电表和远程抄表系统
2控制设备中传送速度的测量
3无刷直流电机的旋转和速度控制
4在工程中测量转动速度和其他机械上的自动化应用
5转速仪、速度表以及其他转子式计量装置
霍尔传感器模块的设计是整个电磁智能小车设计中重要的一部分,其作用相当于人的眼睛和耳朵,采集外部路面的信息并将其送入MCU微型控制器进行数据处理,其能否正常工作直接影响着小车对路面的判断以及小车下一步的行动,因而其布局的合理性与有效性对小车稳定而又快速的行驶起着至关重要的作用。
在传感器布局中,要解决的两个问题是:
信息检测的精确度和信息检测的前瞻性。
当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为霍尔效应。
两端具有的电位差值称为霍尔电势U,其表达式为U=K·I·B/d其中K为霍尔系数,I为薄片中通过的电流,B为外加磁场(洛伦慈力Lorrentz)的磁感应强度,d是薄片的厚度。
由此可见,霍尔效应的灵敏度高低与外加磁场的磁感应强度成正比的关系。
图5霍尔传感器布局
2.5舵机模块
舵机是操控车模行驶的方向盘,由舵盘、位置反馈电位计、减速齿轮组、直流电动机和控制电路组成,内部位置反馈减速齿轮组由直流电动机驱动,其输出轴带动一个具有线性比例特性的位置反馈电位计作为位置检测。
舵机的输出转角通过连杆传动控制前轮转向,其转角精度直接影响到智能车模能否准确按赛道路线行驶。
舵机的控制脉宽与转角在-45°~+45°范围内线性变化。
对于对速度有一定要求的智能车,舵机的响应速度和舵机的转向传动比直接影响车模能否以最佳速度顺利通过弯道。
车模在赛道上高速行驶,舵机的响应速度及其转向传动比将直接影响车模行驶的稳定性,因此必须细心调试,逐一解决。
由于舵机从执行转动指令到响应输出需占用一定的时间,因而产生舵机实时控制的滞后。
虽然车模在进入弯道是能够检测到黑色路线的偏转方向,但由于舵机的滞后性,使得车模在转弯过程中时常偏离跑道,且速度越快,偏离越远,极大限制车模在连续弯道上行驶的最大时速,使得车模全程赛道速度很难进一步提高。
舵机转角与脉宽的关系如图5所示:
图5舵机输出转角与输入信号脉冲宽度的关系
舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,通过改变舵机的安装位置,而非改变舵机本身结构的方法可以提高舵机的响应速度。
分析舵机控制转向轮转向的原理可以发现,在相同的舵机转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。
这相当于增大力臂长度,提高线速度。
针对上述特性,将舵机安装在了相对靠后的位置。
这样安装的优点是:
改变了舵机的力臂,使转向更加灵敏;舵机安装在了正中央(如图6所示),使左右转向基本一致;重心更靠后,减轻了舵机负载。
图6舵机安装实物图
3、软件设计
3.1PID简介
本设计中软件设计部分,主要是对舵机控制进行设计,我们采用PID控制。
可调PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
3.2程序框图
3.3程序
#defineBUS_FREQ48000000
#defineTIM_CLK(BUS_FREQ/128)
#defineTIM_INT25
#defineTIM_CNTS(TIM_CLK/TIM_INT)
#include
#include
#pragmaLINK_INFODERIVATIVE"mc9s12xs128"
unsignedcharad0;
unsignedcharad1;
unsignedcharad2;
unsignedcharad3;/*后面一排的传感器值*/
unsignedcharad5;
unsignedcharad6;
unsignedcharad7;
unsignedintduty;/*舵机软参数*/
unsignedintecT;/*ect结果寄存*/
unsignedintsdu;/*由舵机得到的速度累变值*/
unsignedintv;/*电机软参数*/
unsignedintvv;
charc;
charf;
unsignedcharflag_down;
unsignedcharad0_0;
unsignedcharad1_1;
unsignedcharad2_2;
unsignedcharad3_3;
unsignedcharad5_5;
structPID
{
wordP;//比例常数
wordI;//积分常数
wordD;//微分常数
wordud;
wordmotor;
worddingzhi;
wordchelg;
worde1;//e(k)
worde2;//e(k-1)
worde3;//e(k-2)
}sPID;
/****************超频子函数BUS**48MHz************************/
voidPLL_48M(void)
{
CLKSEL=0X00;
PLLCTL_PLLON=1;
SYNR=0xc0|0x05;
REFDV=0x80|0x01;
POSTDIV=0x00;
_asm(nop);
_asm(nop);
_asm(nop);
while(!
(CRGFLG_LOCK==1));
CLKSEL_PLLSEL=1;
}
/****************************ect模块初始化******************/
voidect_init(void){
PACTL=0x40;
PACNT=0;
PACTL_PAMOD=0;
PACTL_PEDGE=1;
PACTL_PAEN=1;
TSCR1=0x90;
TSCR2|=0x06;
TIOS|=0x01;
TC0=(int)(TCNT+TIM_CNTS);
TCTL1|=0x01;
TIE|=0x01;
}
/*模数转换初始化*/
voidad_init(void){
ATD0CTL1=0x00;
ATD0CTL2=0x40;
ATD0CTL3=0xC0;
ATD0CTL4=0xBF;
ATD0CTL5=0x30;
ATD0DIEN=0x00;
}
/******************PWM模块初始化子程序***********/
voidpwm_init(void){
PWMPRCLK=0x05;
PWMSCLA=3;
PWMCTL_CON45=1;
PWMCTL_CON67=1;
PWMCLK_PCLK5=1;
PWMCLK_PCLK7=0;
PWMPER45=782;
PWMPER67=5000;
PWMPOL_PPOL5=1;
PWMPOL_PPOL7=1;
PWMCAE=0x00;
PWMDTY45=391;
PWME_PWME5=1;
}
unsignedcharlsd(unsignedcharm){//区间判断
unsignedchara;
if(m%10==0)a=m/10-1;
elsea=(int)(m/10);
returna;
}
/*voidad23_cl(void){//ad2ad3相应处理
chara,b,c,d,e,f;
a=lsd(ad2);
b=lsd(ad3);
c=lsd(ad0);
d=lsd(ad5);
e=a-b;f=c-d;
if(e>f){
duty=390-10*e;
if(e>0)
vv=310-5*e;
elsevv=310+5*e;
}
if(eduty=390-10*f;
if(f>0)
vv=310-5*f;
elsevv=310+5*f;
}
}*/
voidad23cl(void){
chara,b;
a=lsd(ad6);
b=lsd(ad7);
c=a-b;
}
voidad05cl(void){
chard,e;
d=lsd(ad0);
e=lsd(ad5);
f=e-d;
}
/*voidad05_cl(void){//ad0处理
chara,b,c;
a=lsd(ad2);
b=lsd(ad3);
if(aelse{c=a-b;
if(c>0)
vv=310-5*c;
elsevv=310+5*c;
}
duty=390-10*c;
a_=a;b_=b;
}
//if(ad0>=50)flag_down=1;
//elseflag_down=0;*/
voidvv_(void){
if(flag_down==1&&(duty<=250||duty>=500))vv=150;
}
voidDD_cl(void){
chara,b;
ad23cl();
ad05cl();
if(c>0)a=c;
elsea=-c;
if(f>0)b=f;
elseb=-f;
if(a<=0&&b>=0){
duty=382-10*f;vv=200;
}
else
{duty=382-10*c;
if(c>0)
vv=1200-3*c;
elsevv=1200+3*c;
}
}/*if(a>=b){
duty=390-10*c;
if(c>0)
vv=250-10*c;
elsevv=250+10*c;
}
if(a
duty=390-11*f;
if(f>0)
vv=250-10*f;
elsevv=250+8*f;
}*/
/*电机驱动子程序*/
voidmotor_qudong(unsignedintdata){
PORTB=0xFF;
PWMDTY67=data;
PWME_PWME7=1;
}
/*舵机驱动子程序*/
voidtuoji_z(unsignedintdata){
PWMDTY45=data;
}
/*模数转换读取程序*/
voidad_duqu(void){
while(!
ATD0STAT2_CCF0);
ad0_0=ATD0DR0L;
while(!
ATD0STAT2_CCF0);
ad1_1=ATD0DR1L;
while(!
ATD0STAT2_CCF0);
ad2_2=ATD0DR2L;
while(!
ATD0STAT2_CCF0);
ad3_3=ATD0DR3L;
while(!
ATD0STAT2_CCF0);
ad5_5=ATD0DR5L;
}
/*ad值处理滤波*/
voidad_CL(void){
ad0=(char)((4*ad0+ad0_0)/5);
ad1=(char)((4*ad1+ad1_1)/5);
ad2=(char)((4*ad2+ad2_2)/5);
ad3=(char)((4*ad3+ad3_3)/5);
ad5=(char)((4*ad5+ad5_5)/5);
//ecT=(int)((4*ecT+ecT_1)/5);
}
voidPID1_motor(structPID*t){//调速PID
wordpp=0,pi=0,pd=0,z;
t->P=5;
t->dingzhi=vv;
t->chelg=ecT;
t->D=5*(t->P)/4;
t->e1=(t->dingzhi)-(t->chelg);
pp=t->P*((t->e1)-(t->e2));
pd=t->D*(t->e1-2*(t->e2)+t->e3);
z=pp+pi+pd;
t->motor=(int)(z+t->motor);
v=t->motor;
t->e3=t->e2;t->e2=t->e1;
}
voidmain(void){//主程序
PLL_48M();
pwm_init();
ad_init();
ect_init();
DDRB=0xFF;
for(;;){
ad_duqu();//ad转换等待及结果存储
ad_CL();//滤波
DD_cl();//判断该怎样,模糊加PID
tuoji_z(duty);
PID1_motor(&sPID);//pid调速
motor_qudong(v);
//tuoji_z(duty);
}
}
/*中断子程序*/
#pragmaCODE_SEGNON_BANKED
voidinterrupt8TIM(void){
TC0=(int)(TCNT+TIM_CNTS);
ecT=PACNT;
PACNT=0;
EnableInterrupts;
}
#pragmaCODE_SEGDEFAULT
4、结束语
本文介绍电磁智能车设计的系统方案。
该系统以单片机MC9S12DG128作为系统控制处理器,采用霍尔传感器。
综合全文来看,智能车分为硬件设计和软件设计两个部分。
硬件设计部分主要是对智能车的安装、调整,以及电路板的设计。
软件设计部分,本文主要介绍对舵机控制的部分。
在霍尔传感器布局设计中,我们先确定了传感器以一字形进行排布。
然后进行调试。
安装舵机时,我们首先想架高舵机,后来参看了许多技术报告,我们将舵机安放在前轮正中央。
在安装过程中,我们必须不断地调试,确定舵机的安装位置是否在正中央。
这样的安装方式可以是舵机更便捷地控制车轮转向,减小舵机的滞后性。
在控制舵机方式上,我们采用PID控制。
这次课程设计,不仅让我加深了《微型计算机控制技术》这门课的理论知识,更使我懂得如何将书本上的知识应用于实际操作中,得到了实战的锻炼机会,培养了一定程度的科研能力。
展望未来,智能车技术必将在更广阔的领域中得到广泛的应用。
5、参考文献
[1]邵贝贝.单片机嵌入式应用的在线开发方法.北京:
清华大学出版社.2004
年10月第1版.
[2]黄开胜,金华民,蒋狄南.韩国智能模型车技术方案分析,电子产品世
界,2006(5):
150-152.
[3]邵贝贝.单片机嵌入式应用的在线开发方法.北京:
清华大学出版社.2004
年10月第1版.
[4]胡晨晖,陆佳南,陈立刚.上海交通大学CyberSmart队技术报告.
[5]周斌,李立国,黄开胜.智能车光电传感器布局对路径识别的影响研究[J].电子产品世界,2006,9.
[6]雷贞勇,谢光骥.飞思卡尔智能车舵机和测速的控制设计与实现[J].电子设计工程,2010,2(19).
[7]杨明等.基于光电管寻迹的智能车舵机控制[J].光电技术应用,2007,1(22).