智能小车课程设计报告书样本.docx
《智能小车课程设计报告书样本.docx》由会员分享,可在线阅读,更多相关《智能小车课程设计报告书样本.docx(16页珍藏版)》请在冰豆网上搜索。
![智能小车课程设计报告书样本.docx](https://file1.bdocx.com/fileroot1/2022-12/31/8c05d64c-9a49-477d-b844-607a0211f400/8c05d64c-9a49-477d-b844-607a0211f4001.gif)
智能小车课程设计报告书样本
课程设计报告书
课题名称
智能小车蓝牙操控和循迹实现
姓名
学号
学院
专业
指引教师
2月15日
1设计目
通过设计进一步掌握51单片机应用,特别是在嵌入式系统中应用。
进一步学习51单片机在系统中控制功能,可以合理设计单片机外围电路,并使之与单片机构成整个系统。
2功能规定
智能小车作为当代新创造,是后来发展方向,她可以按照预先设定模式在一种环境里自动运作,不需要人为管理,可应用于科学勘探等等用途;并且能实现显示时间、速度、里程,具备自动寻迹、寻光、避障等功能,可程控行驶速度、准拟定位停车,远程传播图像、按键控制加速,减速,刹停,左转和右转、实时显示运营状态等功能。
3总体设计方案
在既有玩具电动车基本上,加了四个按键,实现对电动车运营轨迹启动,并将按键状态传送至单片机进行解决,然后由单片机依照所检测各种按键状态实现对电动车智能控制。
这种方案能实现对电动车运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统各项规定。
本设计采用AT89C51单片机。
以AT89C51为控制核心,运用按键动作,控制电动小汽车状态。
加装光电、红外线、超声波传感器,实现对电动车速度、位置、运营状况实时测量,并将测量数据传送至单片机进行解决,然后由单片机依照所检测各种数据实现对电动小车智能控制,如图1所示。
简易智能电动车采用AT89C51单片机进行智能控制。
开始由手动启动小车,并复位初始化,当到达规定起始黑线,由小车底部红外光电传感器检测到第一条黑线后,通过单片机控制小车开始记数、显示、调速[2]。
在白纸所做轨迹道路中,小车通过超声波传感器正前方检测和光电传感器左右侧检测,由单片机控制实现系统自动避障功能。
在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以控制小车调速;并采用动态共阴显示行驶时间和里程。
小车通过光电传感装置实现驶向光源并通过循迹保持小车在白纸范畴内行驶。
当小车到达终点第二次检测到黑线时,单片机控制小车停车。
图1总体设计框架图
4硬件电路选用与设计
(1)硬件电路选用
1.控制器模块选用
咱们采用AT89C51单片机作为主控制器,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM)低电压,高性能CMOS8位微解决器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业原则MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器,为诸多嵌入式控制系统提供了一种灵活性高且价廉方案。
2.电机模块选用
采用普通直流电机。
直流电机运转平稳,精度有一定保证。
直流电机控制精度虽然没有步进电机那样高,但完全可以满足本题目规定。
通过单片机PWM输出同样可以控制直流电机旋转速度,实现电动车速度控制。
并且直流电机相对于步进电机价格经济。
3.电机驱动器模块选用
采用电机驱动芯片L298N。
L298N 为单块集成电路,高电压,高电流,四通道驱动,可直接对电机进行控制,不必隔离电路。
通过单片机I/O输入变化芯片控制端电平,即可以对电机进行正反转,停止操作,非常以便,亦能满足直流减速电机大电流规定。
调试时在依照芯片手册,用程序输入相应码值,可以实现相应动作。
4.电源模块选用
在本系统中,需要用到电源有单片机5V, L298N芯片电源5V和电机电源12V。
因此需要对电源提供必要对的和稳定可靠。
用9V锂电池串联2节5号普通电池给前、后轮电机供电,然后使用7805稳压管来把高电压稳成5V分别给单片机和电机驱动芯片供电。
因而为了以便,这里咱们采用12V电源给电机供电,再用7805转换成5V电源给单片机使用。
(2)硬件设计
小车采用四轮驱动,一侧先后两个车轮共用一种电机驱动,此外两个先后轮共用一种驱动,调节左右车轮转速从而达到控制转向目。
图2硬件控制模块图
1.控制模块设计
依照设计小车性能,使用控制系统来控制电机状态,按键来操作,从而使小车可以进行加速、减速、刹停、左转和右转运营。
设计控制模块电路图图3AT89C51单片机P0通过控制总线来连接锁存器74LS373以及计数器8253,以此来控制L298N驱动芯片工作方式,PWM1和PWM2来控制电机工作状态。
AT89C51P2口通过控制总线与显示屏连接。
图3控制模块设计图
2.电机模块设计
由于设计小车运营比较简朴,没有避障等复杂功能,因此咱们选取普通直流减速电机,通过到商店里和到网上等途径进行购买,电机模块采用2块电机同步驱动,这里将同一侧电机短接接到L298N-个输出端。
3.电机驱动模块设计
采用电机驱动芯片L298N。
L298N是SGS公司产品,为单块集成电路,高电压,高电流,四通道驱动,可直接对电机进行控制,不必隔离电路。
通过单片机IO输入变化芯片控制端电平,即可以对电机进行正反转,停止操作,非常以便,亦能满足直流减速电机大电流规定。
调试时在依照芯片手册,用程序输入相应码值,可以实现相应动作。
图4电机驱动模块设计图
如图4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流信号,,还可驱动2个电机,OUT1, OUT2, OUT3, OUT4之间分别连接2个电动机。
5、7、10、12脚接控制电平,控制电机正反转,ENA,EN B接控制使能端,控制电机停转。
同步输出两组PWM波,每一-组P WM用来控制一一种,电机速度。
此外,二个I / 0口可以控制电机正反转,P1.0, P1.1控制第-一种电机方向,输入:
PWM1控制第-一种电机速度;P1.2、P1.3控制第二个电机方向,输出PWM2控制第二个电机地说速度。
由于电机正常工作时对电源干挠很大,只用一组电源时,会影响单片机正常工作,因此选用双电源供电。
d1,Q1是一对红外发射接受对管,与LM324构成光右转电传感检测电路。
可实现对小车加速,减速,刹停,并可通过两个电机不同转速实现左转和。
可以用表表达为:
4.电源模块
采用电脑USB,5V、2A输出或者用充电宝5V、1A或2A输出都可以。
构造图如下:
图5电源与单片机构造图
5.按键模块
本系统添加四个键,用来选取控制小车。
并接于P2口。
图6按键控制图
5软件设计
1.流程图设计
图7主程序流程图
2.小车运营设计
若规定小车直走,这需要给4个电机正转命令。
依照L298N芯片手册,这里将P1=0xfa。
3.小车调速设计
若规定车调速,只需用PWM来控制L298NENA和ENB就可以对小车进行调速。
这里我使用定期器T0工作方式2自动重装。
并赋初值
TH0=0xf6;TL0=0xf6;
6系统测试与成果分析
基于单片机技术智能小车蓝牙控制与循迹系统实验样机图如图8所示,用1台***型直流稳压充电宝提供+5V电压,通过多次调试咱们发现两个问题。
如下:
1.转向时间需要慢慢调,时间长,旋转弧度大;时间短,旋转弧度小。
2.直行时,由于每个电机性能不同样,导致两侧占空比同样时,小车会存在转弯,这样需要微调占空比。
图8实验样机图
7使用阐明
当前智能小车、机器人得到诸多人关注和追捧,因而市面上智能小车控制板,价格都很昂贵,硬件自己动手机率小,基本都是成品模块,因此咱们在学习电子时应当先硬件后软件,这样你不久就能学会电子。
在使用智能小车过程中,你需要理解某些C语言知识、单片机知识,掌握了这些你才干更迅速、更有效控制咱们智能小车。
8设计总结
通过本次项目经验,咱们学会了学以致用,可以将自己在课堂上学习到东西可以在项目中加以运用,正所谓知行统一。
一方面咱们复习C语言对51单片机进行编程使咱们可以精确控制到单片机,然后再将单片机连接到小车上去构成本次项目成品——智能小车。
由于小车上有装了蓝牙模板、红外感应模块等,咱们又能摸索学习蓝牙模块一系列知识,对于咱们是一次长知识经历同步也是一次可以接受挑战。
参照文献
[1]陆蕊.基于单片机智能小车系统设计[J].电子世界,(8):
166-166.
[2陈梦婷,胡白燕,黄璨.基于单片机智能循迹避障小车设计与实现[J].智能机器人,:
47-51.
[3]陈海宴.51单片机原理及应用[M].北京:
北京航空航天大学出版社.:
62-65.
[4]高枫.基于ARM智能寻迹小车设计与实现[D].山西:
中北大学,.6.
[5]陈海洋,李东京.基于单片机智能循迹避障机器人小车设计[J].科技风,(20):
99.
[6]钱栢霆,李娟.基于单片机循迹避障智能小车系统设计[J].电子制作,(6x).
[7]寸巧萍.基于Mega16单片机智能小车循迹避障设计方案
[8].电子技术与软件工程,(18):
258.
[9]顾群,蒲双雷.基于单片机智能小车避障循迹系统设计[J].数字技术与应用,(5):
23.
[10]蔡莉莎,曾维鹏.基于人工智能途径规划系统智能小车设计与实现[J].电子世界,(18):
112-113.
[11]朱思敏.自循迹智能小车控制系统设计与实现[D].浙江工业大学,.
[12]徐少朋.基于Android开发智能小车途径规划[D].天津大学,.
[13]吕闪,金巳婷,沈巍.基于STM32循迹避障智能小车设计[J].计算机与数字工程,,45(3):
549-552.
[14]朱丹峰,葛主冉,林晓雷.基于Android平台无线遥控智能小车[J].电子器件,,36(3):
408-412.
[15]俞文武,程恒文,金天宝,等.基于STM32智能跟踪小车设计[J].山东工业技术,(8):
294-296.
[16]李娜,杨春鹤,王泽昊,等.浅谈基于STM32单片机智能车设计过程[J].数码世界,(11):
90-91.
附录
#include
sbitkey1=P3^3;
sbitkey2=P3^4;
chara;
intflag=0;
sbitlefta=P0^0;
sbitleftb=P0^1;
sbitrighta=P0^2;
sbitrightb=P0^3;
sbitoutl=P0^6;
sbitoutr=P0^5;
intn;
voiddelay(intn)
{
inti,j;
for(i=0;ifor(j=0;j<113;j++);
}
voidget_up()//迈进
{
lefta=1;
leftb=0;
righta=1;
rightb=0;
}
voidget_down()//后退
{
lefta=0;
leftb=1;
righta=0;
rightb=1;
}
voidget_left()//左转
{
lefta=0;
leftb=1;
righta=1;
rightb=0;
}
voidget_right()//右转
{
lefta=1;
leftb=0;
righta=0;
rightb=1;
}
voidget_up_left()//迈进左转
{
//timer_intconfiguration();
intx=50;
lefta=1;
righta=1;
rightb=0;
while(x--){
leftb=0;
delay(50);
leftb=1;
delay(50);
}
}
voidget_up_right()//迈进右转
{
//timer_intconfiguration();
intx=50;
lefta=1;
leftb=0;
righta=1;
while(x--){
rightb=0;
delay(50);
rightb=1;
delay(50);
}
}
voidget_down_left()//后退左转
{
//timer_intconfiguration();
intx=50;
lefta=0;
leftb=1;
righta=0;
while(x--){
rightb=1;
delay(50);
rightb=0;
delay(50);
}
}
voidget_down_right()//后退右转
{
//timer_intconfiguration();
intx=50;
lefta=0;
righta=0;
rightb=1;
while(x--){
leftb=1;
delay(50);
leftb=0;
delay(50);
}
}
voidstop()
{
lefta=0;
leftb=0;
righta=0;
rightb=0;
}
voidset_com(){//串口中断置位
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0X50;
ES=1;
EA=1;
TR1=1;
//ET1=1;
}
voidfasong()interrupt4//串口中断服务函数
{
if(RI){
flag=1;
a=SBUF;
RI=0;
}
}
voidbluetooth()//蓝牙控制函数
{
set_com();//启动串口中断
while
(1){
if(flag){//如果接受完数据就开始判断接受到数据
switch(a){
case0:
stop();break;
case1:
get_up();break;
case2:
get_down();break;
case3:
get_left();break;
case4:
get_right();break;
case5:
get_up_left();break;
case6:
get_up_right();break;
case7:
get_down_left();break;
case8:
get_down_right();break;
default:
break;
}
flag=0;
}}}
voidxunij()//红外线循迹函数
{
while
(1)
{
if(outl==1&&outr==1)//判断红外模块输出端口电平
{
get_up();
delay(4);
}
elseif(outl==1&&outr==0)
{
get_left();
delay(4);
}
elseif(outl==0&&outr==1)
{
get_right();
delay(4);
}
elseif(outl==0&&outr==0)
{
stop();
}
}
}
voidmain()
{
while
(1){
if(key1==0)//如果按下key1,执行蓝牙控制
{
delay(20);
if(key1==0)
bluetooth();
}
if(key2==0)//如果按下key2,执行红外线循迹
{
delay(20);
if(key2==0)
xunij();
}
}}