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 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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务