您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页智能小车课程设计报告书

智能小车课程设计报告书

来源:爱go旅游网
※※※※※※※※※

2015 级学生 课程设计材料

※※※※※※※※※

课程设计报告书

课题名称

智能小车蓝牙操控和循迹的实现

姓 学 学 专 指导教师

名 号 院 业

2019 年 2 月 15 日

1设计目的

通过设计进一步掌握 51单片机的应用 , 特别是在嵌入式系统中的应用。 进一 步学习 51单片机在系统中的控制功能, 能够合理设计单片机的外围电路 , 并使之 与单片机构成整个系统。

2 功能要求

智能小车作为现代的新发明, 是以后的发展方向, 他可以按照预先设定的模 式在一个环境里自动运作, 不需要人为的管理, 可应用于科学勘探等等用途; 并 且能实现显示时间、速度、里程,具有自动寻迹、寻光、避障等功能,可程控行 驶速度、准确定位停车,远程传输图像、按键控制加速,减速,刹停,左转和右 转、实时显示运行状态等功能。

3 总体设计方案

在现有玩具电动车的基础上, 加了四个按键, 实现对电动车的运行轨迹的启 动,并将按键的状态传送至单片机进行处理, 然后由单片机根据所检测的各种按 键状态实现对电动车的智能控制。 这种方案能实现对电动车的运动状态进行实时 控制,控制灵活、可靠,精度高,可满足对系统的各项要求。 本设计采用 ATC51 单片机。以 ATC51 为控制核心,利用按键的动作,控制电动小汽车的状态。 加装光电、红外线、超声波传感器,实现对电动车的速度、位置、运行状况的实 时测量,并将测量数据传送至单片机进行处理, 然后由单片机根据所检测的各种 数据实现对电动小车的智能控制,如图 1 所示。简易智能电动车采用 ATC51 单片机进行智能控制。 开始由手动启动小车, 并复位初始化, 当到达规定的起始 黑线,由小车底部的红外光电传感器检测到第一条黑线后, 通过单片机控制小车 开始记数、显示、调速 。在

[2]

白纸所做轨迹道路中,小车通过超声波传感器正前 方检测和光电传感器左右侧检测, 由单片机控制实现系统的自动避障功能。 在电 动车进驶过程中,采用双极式 H 型 PWM 脉宽调制技术,以控制小车调速;并 采用动态共阴显示行驶时间和里程。 小车通过光电传感装置实现驶向光源并通过 循迹保持小车在白纸范围内行驶。 当小车到达终点第二次检测到黑线时, 单片机 控制小车停车。

图 1 总体设计框架图

4 硬件电路选取与设计

(1) 硬件电路选取

1. 控制器模块选取

我们采用 ATC51单片机作为主控制器, ATC51是一种带 4K 字节闪烁 可编程可擦除只读存储器 (FPEROM的) 低电压,高性能 CMOS位8 微处理器, 俗称单 片机。该器件采用 ATMEL高密度非易失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。由于将多功能 8 位 CPU和闪烁存储器组合在 单个芯片中, ATMEL的 ATC51是一种高效微控制器,为很多嵌入式控制系统提 供了一种灵活性高且价廉的方案。

2. 电机模块选取

采用普通直流电机。 直流电机运转平稳, 精度有一定的保证。 直流电机控 制的精度虽然没有步进电机那样高, 但完全可以满足本题目的要求。 通过单片机 的 PWM输出同样可以控制直流电机的旋转速度, 实现电动车的速度控制。 并且直 流电机相对于步进电机价格经济。

3. 电机驱动器模块选取

采用电机驱动芯片 L298N。 L298N 为单块集成电路,高电压,高电流, 四通道驱动, 可直接的对电机进行控制, 无须隔离电路。 通过单片机的 I/O 输入 改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,非常方便,亦 能满足直流减速电机的大电流要求。 调试时在依照芯片手册, 用程序输入对应的 码值,能够实现对应的动作。

4. 电源模块选取

在本系统中,需要用到的电源有单片机的 5V, L298N芯片的电源 5V 和电 机的电源 12V。所以需要对电源的提供必须正确和稳定可靠。用 9V 的锂电池串 联 2 节 5 号普通电池给前、后轮电机供电,然后使用 7805 稳压管来把高电压稳 成 5V 分别给单片机和电机驱动芯片供电。因此为了方便,这里我们采用

源给电机供电,再用 7805 转换成 5V电源给单片机使用。

12V电

(2) 硬件设计

小车采用四轮驱动, 一侧的前后两个车轮共用一个电机驱动, 另外两个前 后轮共用一个驱动,调节左右车轮转速从而达到控制转向的目的。

图 2 硬件控制模块图

1. 控制模块设计

根据设计的小车性能, 使用控制系统来控制电机的状态, 按键来操作, 从而

使小车可以进行加速、减速、刹停、左转和右转的运行。设计的控制模块电路图 图 3 ATC51单片机的 P0 通过控制总线来连接锁存器 74LS373以及计数器 8253, 以此来控制 L298N驱动芯片的工作方式, PWM和1 PWM来2 控制电机的工作状态。 ATC51的 P2口通过控制总线与显示器连接。

图 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 控制第 -一个电机的方向, 输入的: PWM控1 制第-一个电机的速度 ;P1.2 、P1.3 控制第二个电机的方向,输 出的 PWM2控制第二个电机地说速度。

由于电机的正常的工作时对电源的干挠很大, 只用一组电源时, 会影响单片 机的正常工作,所以选用双电源供电。 d1,Q1是一对红外发射接收对管, 与 LM324 构成光右转电传感的检测电路。可实现对小车的加速,减速,刹停,并可通过两 个电机的不同转速实现左转和。

可以用表表示为

4. 电源模块

采用电脑 USB, 5V、2A输出或者用充电宝的 5V、1A或 2A输出都可以 结构图如下:

图 6 按键控制图

5 软件设计

1. 流程图设计

图 7 主程序流程图

2. 小车运行设计 若要求小车直走,这需要给 4个电机正转命令。根据 L298N芯片手册,这 里将P1=0xfa。

3. 小车调速设计

若要求车调速,只需用 PWM来控制L298N的ENA和ENB就可以对小车进行调 速。这里我使用定时器 T0的工作方式 2自动重装。并赋初值

TH0=0xf6 ;TL0=0xf6 ;

6 系统测试与结果分析

基于单片机技术的智能小车蓝牙控制与循迹系统的实验样机图如图 8 所示, 用 1 台 *** 型直流稳压充电宝提供 +5V 的电压,经过多次调试我们发现两个问题。 如下:

1. 转向时间需要慢慢调,时间长,旋转弧度大;时间短,旋转弧度小。 2. 直行时,由于每个电机的性能不一样,导致两侧占空比一样时,小车

会 存在转弯,这样需要微调占空比。

图 8 实验样机图

7 使用说明

现在智能小车、机器人得到很多人的关注和追捧,因而市面上智能小车的控 制板,价格都很昂贵,硬件自己动手的机率小,基本都是成品模块,所以我们在 学习电子时应该先硬件后软件 , 这样你很快就能学会电子。

在使用智能小车的过程中,你需要了解一些 C语言的知识、单片机的知识, 掌握了这些你才能更快速、更有效的控制我们的智能小车。

8 设计总结

经过此次的项目经验, 我们学会了学以致用, 能够将自己在课堂上学习到的 东西能够在项目中加以利用,正所谓知行统一。首先我们复习 C语言对

51单片 机进行编程使我们能够准确的控制到单片机, 然后再将单片机连接

到小车上去组 成此次项目的成品——智能小车。 由于小车上有装了蓝牙模板、 红外感应模块等, 我们又能摸索学习蓝牙模块的一系列知识, 对于我们是一次长知识的经历同时也 是一次能够接受的挑战。 参考文献

[1]陆蕊 . 基于单片机的智能小车系统的设计 [J]. 电子世界 , 2017(8):166-166.

[2 陈梦婷,胡白燕,黄璨.基于单片机的智能循迹避障小车的设计与实现 [J].智能机器人, 2016: 47-51.

[3] 陈海宴 .51 单片机原理及应用 [M]. 北京:北京航空航天大学出版社 .2010:62-65.

[4] 高枫 .基于 ARM 的智能寻迹小车的设计与实现 [D].山西:中北大学 ,2012.6.

[5] 陈海洋,李东京 .基于单片机的智能循迹避障机器人小车设计 [J].科技风, 2014(20):99.

[6]

循迹避障智能小车系统的设计 ( 6x) .

钱栢霆,李娟 .基于单片机的[J].电子制作, 2015

[7] 寸巧萍 .基于 Mega16单片机的智能小车循迹避障设计方案

[8] . 电子技术与软件工程, 2015 ( 18): 258.

[9] 顾群,蒲双雷 .基于单片机的智能小车避障循迹系统设计 [J].数字技术与应用, 2012( 5): 23.

[10] 蔡莉莎 , 曾维鹏 . 基于人工智能路径规划系统的智能小车的设计与实现 [J]. 电子世界 , 2016(18):112-113.

[11] 朱思敏 . 自循迹智能小车控制系统的设计与实现 [D]. 浙江工业大学 , 2013.

[12] 徐少朋 . 基于 Android 开发的智能小车路径规划 [D]. 天津大学 , 2014.

[13] 吕闪, 金巳婷, 沈巍. 基于 STM32 的循迹避障智能小车的设计 [J]. 计算机与数字工程 , 2017, 45(3):9-552.

[14] 朱丹峰 , 葛主冉 , 林晓雷 . 基于 Android 平台的无线遥控智能小车 [J]. 电子器件 , 2013, 36(3):408-412.

[15] 俞文武 , 程恒文 , 金天宝 ,等. 基于 STM32 的智能跟踪小车的设计 [J]. 山东工业技术 , 2017(8):294-296.

[16] 李娜 , 杨春鹤 , 王泽昊 ,等. 浅谈基于 STM32 单片机的智能车设计过程 [J]. 数码世界 , 2016(11):90-91.

附录

#include sbit key1=P3^3; sbit key2=P3^4; char a; int flag=0; sbit lefta=P0^0;

sbit leftb=P0^1; sbit righta=P0^2;

sbit rightb=P0^3; sbit outl=P0^6; sbit outr=P0^5; int n; void delay(int n)

{

int i,j; for(i=0;i}

void get_up() //

{

lefta=1;

leftb=0;

righta=1; rightb=0; } void get_down()

// { lefta=0;

leftb=1; righta=0;

rightb=1;

} void get_left() // {

lefta=0; leftb=1;

前进 后退

左转

righta=1; rightb=0;

}

void get_right() // 右转

{

lefta=1; leftb=0; righta=0; rightb=1;

}

void get_up_left() // 前进左转

{

//timer_intconfiguration(); int x=50;

lefta=1; righta=1; rightb=0; while(x--){

leftb=0; delay(50); leftb=1; delay(50); }

}

void get_up_right() //

前进右转

{

//timer_intconfiguration(); int x=50; lefta=1; leftb=0; righta=1;

while(x--){

rightb=0; delay(50); rightb=1; delay(50); }

}

void get_down_left() //

{

后退左转

//timer_intconfiguration(); int x=50;

lefta=0; leftb=1; righta=0;

while(x--){

rightb=1; delay(50); rightb=0;

delay(50); }

}

void get_down_right() // 后退右转

{

//timer_intconfiguration(); int x=50; lefta=0;

righta=0; rightb=1;

while(x--){

leftb=1; delay(50); leftb=0; delay(50); } }

void stop()

{

lefta=0; leftb=0; righta=0; rightb=0;

}

void set_com(){ //

串口中断置位TMOD=0x20;

TH1=0xfd; TL1=0xfd; SCON=0X50; ES=1; EA=1; TR1=1; //ET1=1; }

void fasong() interrupt 4 // 串口中断服务函数

{

if(RI){

flag=1; a=SBUF;

RI=0; }

}

蓝牙控制函数

void bluetooth() //

{

开启串口中断

set_com(); //

如果接受完数据就开始判断接受到的

if(flag) { // 数据

switch(a){

case 0:stop();break;

case 1:get_up();break; case 2:get_down();break; case 3:get_left();break; case 4:get_right();break; case 5:get_up_left();break; case 6:get_up_right();break; case 7:get_down_left();break;

case 8:get_down_right();break; default:break;

while(1){

}

flag=0;

}} } void xunij() // 红外线循迹函数

{

while(1) {

if(outl==1&&outr==1) // 判断红外模块输出端口的电平 {

get_up(); delay(4); }

else if(outl==1&&outr==0) {

get_left(); delay(4); }

else if(outl==0&&outr==1) {

get_right(); delay(4); }

else if(outl==0&&outr==0) { stop();

}

void main()

{

while(1){

if(key1== 0) // 如果按下 key1, 执行蓝牙控制 { delay(20); if(key1==0)

bluetooth(); }

if(key2== 0) // 如果按下 key2, 执行红外线循迹delay(20); if(key2==0)

xunij(); } }}

{

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务