单行道小车Word格式.docx
- 文档编号:22629039
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:152.75KB
单行道小车Word格式.docx
《单行道小车Word格式.docx》由会员分享,可在线阅读,更多相关《单行道小车Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
1.2.3电源模块
由于本系统需要电池供电,我们考虑了如下集中方案为系统供电。
采用9V蓄电池为系统供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。
但是蓄电池的体积过于庞大,在小型电动车上使用极为不方便。
采用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
三圈
250
280
270
290
斑马线处
停止时间(s)
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;
led(0,bai,shi,ge);
if((P2IN&
BIT0)==BIT0)P1OUT&
=~BIT0;
elseP1OUT|=BIT0;
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的(高四位)口给低电平才点亮;
=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)
//{
//矫正方向的红外传感器;
BIT1)!
=BIT1)//有障碍物;
if(((P2IN&
BIT0)==BIT0)&
&
((P2IN&
BIT3)!
=BIT3))run_dir_1=0;
elserun_dir_1=1;
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;
BIT4)==BIT4)
run_dir=1;
run_dir_1=1;
else
run_dir=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++;
{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++;
{n--;
leftMotor_out&
leftMotor_out|=Motor_table[n%8];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单行道 小车