单行道小车.docx
- 文档编号:9492995
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:152.75KB
单行道小车.docx
《单行道小车.docx》由会员分享,可在线阅读,更多相关《单行道小车.docx(16页珍藏版)》请在冰豆网上搜索。
单行道小车
单行道运行小车设计与制作
摘要:
本系统由控制部分、信号检测部分以及显示部分组成,实现了对单行道运行小车的控制,控制部分以msp430单片机为核心,单片机接收并处理各种信号,通过控制电机改变小车的前进和转弯。
信号检测部分由6个红外传感器组成,根据对红外传感器的适当布置,实现寻迹运动。
通过两个光敏三极管检测射灯信号和一个红外蔽障传感器检测障碍物,用液晶显示屏实时显示相关的信息。
关键字:
msp430红外传感器光敏三极管红外蔽障液晶
一、系统方案选择与设计
1.系统总体方案及框图
根据题目要求,整个系统可以分为控制模块、电机驱动模块、寻迹模块、蔽障模块、显示模块、电源模块、射灯感应模块这七个基本模块,各模块构成的系统框图如图F-2-1.对于每个模块,先提出多个方案进行比较和论证,最终确定适合整个系统的方案。
2.各功能模块方案选择与论证
1.2.1车架设计
方案1:
购买玩具电动车。
购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。
但是一般的说来,玩具电动车具有如下缺点:
首先,这种玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。
其次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易控制转弯。
而且这种电动车一般都价格不扉。
因此我们放弃了此方案。
方案2:
自己制作电动车。
经过反复考虑本题的要求,我们制定了三轮电动车,后面两轮用于驱动和转向。
前面按一个万向轮。
即左右轮分别用两个转速和力矩基本完全相同的步进电机进行驱动。
这样,当两个步进电机转向相同但转速不同时就可以实现电动车的转弯,由此可以轻松的实现本题所要求的转弯。
对于车架材料的选择,我们经过比较选择了铝合金。
用铝合金做的车架比塑料车架更加牢固,比铁制小车更轻便,美观。
综上所述,最后选择方案二。
1.2.2控制器模块
本次比赛是由TI公司赞助,因此我们直接选用该公司开发的msp43016位单片机,它是16位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、处理速度高、中断处理能力强等特点。
1.2.3电源模块
由于本系统需要电池供电,我们考虑了如下集中方案为系统供电。
方案1:
采用9V蓄电池为系统供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。
但是蓄电池的体积过于庞大,在小型电动车上使用极为不方便。
因此我们放弃了此方案。
方案2:
采用2节4.2V可充电式锂电池串联共8.4V给直流电机供电,经过7805的电压变换后为单片机和传感器供电。
经过实验验证,当电池为直流电机供电时,单片机、传感器的工作电压不够,性能不稳定。
因此我们放弃了此方案。
方案3:
采用2节4.2V可充电式锂电池为步进电机供电,用2节1.2V的锂电池为单片机和传感器供电。
采用此种供电方式后,单片机和传感器工作稳定,步进电机工作不受影响,且电池的体积较小,能够满足系统的要求。
综上考虑,我们选择了方案3。
1.1.4寻迹传感器模块
ST188红外光电对管是由一个发光管和一个接收管组成,当被测物是黑线时,红外光电二极管U发射出的光线被反射回来时很弱,光敏三极管无法导通,所以跟随器输出给单片机的信号为低电平。
相反的,当被测物是白线时,由于反射回的信号较强,致使三极管导通,单片机接收到高电平。
用高低电平来控制电机的转向。
此光电对管调理电路简单,工作性能稳定,体积小,结构紧凑。
1.1.5电机模块
本系统为单行道运行小车,对于电动车来说,对于小车的速度和转弯的精度要求很高。
我们综合考虑采用以下方案。
采用步进电机作为该系统的驱动和转向。
由于步进电机的转速可以精确定位,通过实验证明速度符合本题的要求,可以实现小车前进路程和位置的精确定位。
因此我们选用步进电机作为小车的驱动。
直流电机速度不易精确控制,位置不易精确定位,虽然可以用来控制方向,但是力矩小,小车重量稍微重一点,转向就不是很灵敏,因此我们还是选用步进电机作为小车的驱动和转向。
1.1.6电机驱动模块
采用专用芯片L298N作为电机驱动芯片。
L298N是一个具有高电压大电流的全桥驱动芯片,它响应频率高,功耗大。
因此我们选用L298N作为步进电机的驱动,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
1.1.7避障模块
障碍物的颜色本身是白色,本来也可以用ST188红外对管,但是我们所设的小车的路面也是白色,寻记本身也用的是红外对管,这样容易混淆,所以避障模块我们直接选用专门的红外避障。
简洁,方便,实用。
1.1.8射灯感应模块
光敏三极管检测射灯。
二.硬件实现及单元电路设计
TI公司的msp430是16位的单片机。
不用烧写器而只用串口或者并口就可以往单片机中下载程序。
2.1寻迹光电对管的设计
在寻迹传感器的设计中,我们在车体前端装有三个光电对管,三个要同时在白色区域工作时小车直线前进,当任何一边感应到黑色区域时小车都向其相反的方向移动,直到三个同时在白色内,这样既可以防止小车冲出场地,也可以节约时间。
红外光敏对管电路的设计与制作:
图中,R1起限流电阻的作用,当有光反射回来时,光电对管中的三极管导通,R2的上端变为高电平,此时VT1饱和导通,三极管集电极输出低电平。
当没有光反射回来时,光电对管中的三极管不导通,VT1截至,其集电极输出高电平。
2.2电机驱动电路的设计
我们采用电机驱动芯片L298N作为电机驱动。
驱动电路的设计如图16所示:
L298N的5、7、10、12四个引脚接到单片机上,步进电机有4根线接L298的231314,还有两根线接地,通过对单片机的编程就可以控制电机的转速.系统采用了17PM—K307四相6线步进电机,使之工作于8拍的工作方式,正转时各相通电顺序为A-AC-C-BC-B-BD-D-AD-A,反转时为A-DA-D-DB-B-CB-C-CA-A,电机步进角为0.9度,这种工作方式电源所提供的功率比较大,电机能产生旋转力矩也大。
系统需要控制两个
二、系统的软件设计
1.软件总体设计流程图
小车前进流程图:
三、系统测试
1.测量仪器
秒表:
记录时间
卷尺:
测距离
万用表:
测电路的情况
2.测量方法
使系统运行,参照题目的各项要求进行多次实际定量测量,得到该系统的测量结果及指标数据。
2.测量数据
小车的宽度:
21cm
单圈
第一次
第二次
第三次
第四次
时间(s)
90
97
100
102
三圈
第一次
第二次
第三次
第四次
时间(s)
250
280
270
290
斑马线处
第一次
第二次
第三次
第四次
停止时间(s)
10
10
10
10
3.测量结果及误差分析
通过对数据的统计和分析,单行道小车基本上完成了题目的要求。
小车单圈运行时间不得超过120秒,总的运行时间不得超过300秒。
四、总结
本系统不仅完成了题目要求的基本功能而且还完成了扩张部分。
通过数码管LED的显示,能够直观形象的显示小车运行的时间。
我们所设计的单行道小车能够从斑马线处出发,分别完成了避障,射灯感应等功能,车体始终保持在跑道内。
五、参考文献
1.李正军。
计算机控制系统。
北京:
机械工业出版社,2005
2.RamonPallas-Areny,JohnG.Webster(美)。
传感器和信号调节,第2版。
张伦译。
北京:
清华大学出版社,2003
系统总体电路图:
程序:
#include"msp430x22x4.h"
#defineucharunsignedchar
#defineuintunsignedint
#definerightMotor_dirP4DIR
#definerightMotor_outP4OUT
#defineleftMotor_dirP3DIR
#defineleftMotor_outP3OUT
#definepiece_dirP4DIR//选中实哪个数码管显示
#definepiece_outP4OUT//(用的是高四位)
#definebit_dirP3DIR//显示的数据输出口
#definebit_outP3OUT//用P3口的高四位;
voidTimerA_int(void);
voidTimerB_int(void);
voidIO_int(void);
voidled(uinta,uintb,uintc,uintd);
voiddelay(uintq);
uintTB_count=0,Time,Time_count,ge,shi,bai;
ucharzebra_IE;
uintcount,count_1;
ucharMotor_table[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
ucharrun_dir=0,run_dir_1=0;
uintbu_count=0,bu_count_1=0;
uintm=0,n=0;
uintspeed_set,speed_set_1;
uintTA_count=0;
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
P1DIR|=BIT0+BIT2+BIT3;
IO_int();
TimerA_int();
TimerB_int();
//bu_count_1=2000;bu_count=2000;
run_dir_1=0;run_dir=0;
speed_set_1=1;speed_set=1;
//_BIS_SR(GIE+CPUOFF);
_EINT();
while
(1)
{
bu_count_1=2000;bu_count=2000;
led(0,bai,shi,ge);
if((P2IN&BIT0)==BIT0)P1OUT&=~BIT0;elseP1OUT|=BIT0;
if((P2IN&BIT3)==BIT3)P1OUT|=BIT2;elseP1OUT&=~BIT2;
if((P1IN&BIT1)==BIT1)P1OUT&=~BIT3;elseP1OUT|=BIT3;
}
}
voidIO_int(void)
{
P2DIR&=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);//红外传感器和光敏传感器;
P1DIR&=~BIT1;
rightMotor_dir|=0x0f;
leftMotor_dir|=0x0f;
bit_dir|=(BIT4+BIT5+BIT6+BIT7);//传送数据;
bit_out&=~(BIT4+BIT5+BIT6+BIT7);//P3口的低四位给低电平0000,送初始数据0;
piece_dir|=(BIT4+BIT5+BIT6+BIT7);//选中哪个数码管
piece_out|=(BIT4+BIT5+BIT6+BIT7);//P4口的低四位给高电平,4个数码管都灭;
}
voidTimerA_int(void)
{
BCSCTL1=CALBC1_1MHZ;//设定DCO为1MHZ
DCOCTL=CALBC1_1MHZ;
TACTL=TASSEL1+TACLR;//定时器A时钟源为SMCLK,并清TAR
TACCTL0|=CCIE;//CCR0中断使能
TACCR0=5000;//计数值为50000个SMCLK周期
TACTL|=MC0;//启动定时器A为连续计数模式
}
voidTimerB_int(void)
{
TBCCTL0=CCIE;//TBCCR0interruptenabled
TBCCR0=50000;
TBCTL=TBSSEL1+MC0;//SMCLK,upmode
}
voidled(uinta,uintb,uintc,uintd)
{
uinte=0,f=0;
ucharq[4]={a,b,c,d};
ucharw=0x10;//P4的(高四位)
for(f=0;f<=3;f++)
{
piece_out&=0X0f;
piece_out|=(~w)&0xf0;//P4的(高四位)口给低电平才点亮;
bit_out&=0x0f;
//bit_out|=(q[e]&0xff)<<4;//传送数据;高四位
bit_out|=q[e]<<4;
delay(10);
w<<=1;
e++;
}
if(f==4)
{
w=0x10;
e=0;
f=0;
}
}
voiddelay(uintq)
{
unsignedinti,j;
for(i=0;i<100;i++)
for(j=q;j>0;j--);
}
#pragmavector=TIMERB0_VECTOR
__interruptvoidTimer_B(void)
{
//if((P2IN&BIT1)==BIT1)zebra_IE=0;elsezebra_IE=1;//zebra0没到斑马线1到了斑马线;
//if(zebra_IE==0)
//{
//矫正方向的红外传感器;
if((P1IN&BIT1)!
=BIT1)//有障碍物;
{
}
if(((P2IN&BIT0)==BIT0)&&((P2IN&BIT3)!
=BIT3))run_dir_1=0;elserun_dir_1=1;
if((P2IN&BIT2)==BIT2)run_dir=0;elserun_dir=1;//右前方
//2个光敏
/*if((P2IN&BIT5)==BIT5)
{
bu_count_1=0;
bu_count=0;
}
else
{
bu_count_1=200;
bu_count=200;
}
if((P2IN&BIT4)==BIT4)
{
run_dir=1;
run_dir_1=1;
}
else
{
run_dir=0;
run_dir_1=0;
}
*/
//}
}
#pragmavector=TIMERA0_VECTOR//ccr0中断服务
__interruptvoidta0_isr(void)
{
count++;
count_1++;
Time_count++;
if(Time_count==200)
{
Time_count=0;
Time++;
bai=Time/100;
shi=(Time%100)/10;
ge=Time%10;
}
if(count==speed_set)
{
count=0;
if(bu_count)//连续模式,走bu_count这么多步;
{
bu_count--;
if(run_dir==1)
{m++;}
else
{m--;}
rightMotor_out&=0xf0;
rightMotor_out|=Motor_table[m%8];
}
}
if(count_1==speed_set_1)
{
count_1=0;
if(bu_count_1)//连续模式,走bu_count这么多步;
{
bu_count_1--;
if(run_dir_1==0)
{n++;}
else
{n--;}
leftMotor_out&=0xf0;
leftMotor_out|=Motor_table[n%8];
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单行道 小车