《基于51单片机的红外避障自动车的实现》技术报告
基于单片机的智能避障小车设计(C51语言编程)【开题报告】

开题报告电气工程及其自动化基于单片机的智能避障小车设计(C51语言编程)一、课题研究意义及现状随着电子技术的飞速发展,电子产品也越来越智能化和微型化。
世界玩具市场也因此越来越向电子化发展。
根据美国玩具协会调查统计,近年来全球的玩具市场越来越大,但是全球玩具市场的结构却发生了比较巨大的变换。
传统玩具的市场份额也在逐年的减少,智能电子玩具的市场份额则越来越多。
美国电子玩具工业的发展在21世纪出现了一个最大的变革,那就是科技(尤其是互联网)在玩具中的应用。
这种改变给玩具工业带来了无限机遇和挑战,美国的玩具市场由1996年的227亿美元到2005年的230亿美元。
并且在这些玩具中75%是装有电子设备的高科技玩具,电子玩具的兴起代表着玩具发展的“新时代”的开始。
因此,传统玩具中的益智玩具销售将领先。
给传统的洋娃娃、毛绒玩具安装上IC,将成一种潮流,机器人玩具过去由于生产成本高,外表缺吸引力,导致发展缓慢,随着生产成本的降低,外形的改进,教育性机器人玩具可能放异彩。
我们已经有理由相信:电子玩具的兴起代表着玩具发展的“新时代”的开始,电子玩具多彩的艺术表现形式是吸引孩子们到百货店挑选玩具的兴趣所在。
这些数据的表明,高新电子玩具已经成为玩具市场的主流。
在这些电子玩具中,智能小车是一个非常热门的玩具产品,智能小车,也称轮式机器人,是一种以汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多学科的科技创意性设计,一般主要由路径识别、速度采集、角度控制及车速控制等模块组成。
我国是世界最大的玩具制造国和出口国,但是我国的玩具大部分都是以低廉的劳动力以及传统玩具来取得的,在高新技术以及玩具的附加值上不能与其他国家相比,随着当今智能玩具的发展,国内的玩具结构必须要做出改变,我们必须利用科技创新来提高玩具的附加值。
因此,高科技含量的电子互动式玩具必须是中国未来发展的趋势。
本次课题准备设计一种能够实时采集传感器信号、智能分析外部环境以及自动实现方向控制等功能的智能小车。
基于51单片机的红外避障+超声波避障程序

基于51单⽚机的红外避障+超声波避障程序最近在学习关于51单⽚机控制智能⼩车,学习了很多⼤佬优秀的代码和思路受到了⼀些启发,决定按⾃⼰的逻辑尝试⼀下关于红外避障+超声波避障的程序经过实际测试,当PWM在50%左右,效果还⾏,但当全速前进时效果不是很理想代码还有待改进,有些地⽅逻辑⽐较混乱,单纯只是为了能跑通,有待优化先记录⼀下,毕竟也花了不少时间来写和调试#include<reg52.H>#include "test2.h"#include <stdlib.h>sbit P22 = P2^2;sbit P23 = P2^3;sbit P24 = P2^4;sbit TRIG = P2^1;sbit ECHO = P2^0;sbit left_zhangai = P3^4;sbit right_zhangai = P3^5;unsigned char flag = 0;unsigned char i;unsigned int out_TH0, out_TL0, distance;void left_bizhang(){for (i = 0; i < 30; i++) //90 = 90{car_left_backward();}}void right_bizhang(){for (i = 0; i < 30; i++) //90 = 90{car_right_backward();}}void all_bizhang(){for (i = 0; i < 30; i++) //90 = 90{car_right_backward();}}void back_bizhang(){for (i = 0; i < 10; i++)car_straight_backward();for (i = 0; i < 10; i++)car_left_backward();}void init_time(){TMOD = 0x11; //启动0 1两个定时器TH0 = 0;TL0 = 0;TR0 = 0;TR1 = 0;TH1 = 238;TL1 = 0;TF0 = 0; //中断溢出标志位TF1 = 1;ET0 = 1;ET1 = 1;EA = 1;}void run(){P22 = 1;P24 = 1;left_zhangai = 1;right_zhangai = 1;TRIG = 0; // 先给控制端初始化为0car_straight_forward_per50();distance = 100;while(1){/////////////////////////////label:if (left_zhangai == 1&&right_zhangai == 1){car_straight_forward_per50();}else{if (left_zhangai == 0&&right_zhangai == 0) {all_bizhang();}if (right_zhangai == 0&&left_zhangai == 1) {right_bizhang();}if (left_zhangai == 0&&right_zhangai == 1) {left_bizhang();}}init_time(); //初始化定时器flag = 0; //置溢出标志位为0//控制⼝发⼀个10US 以上的⾼电平TRIG = 1;TR1 = 1; //启动定时器1delay_10um(2);TRIG = 0;//等待接收端出现⾼电平while(!ECHO){if (TH1 == 0){distance = 200;goto label;}};TR0 = 1; //启动计时器开始计时while(ECHO){if (TH1 == 0){distance = 200;goto label;}}; //等待⾼电平结束TR0 = 0; //关闭低电平out_TH0 = TH0; //取定时器的值out_TL0 = TL0;distance = (TH0*256 + TL0)*1.7/100;if (flag == 1){flag = 0;}else if (distance >= 200){car_straight_forward_per50();}else if (distance <= 10){back_bizhang();}else if (distance <= 20){all_bizhang();}///////////////////////////////////////// }}void timer0() interrupt 1//中断函数{flag=1; //溢出标志位置1}。
基于51单片机的循迹避障小车的设计ppt课件

主要模块的选择
A
主控器
B
传感器
C
驱动电机
D
电机驱动
51单片机
红外对管ST188+多集 成模块E18-D50NK
直流电机
(供电单元采用多节电池串联供电)
编辑版pppt
功率三极管
9
第三 部分
第三部分 硬件部分设计
主控器AT89C51 复位电路和时钟电路 传感器模块
编辑版pppt
10
主控器AT89C51
基于51单片机的 循迹避障小车的设计
编辑版pppt
1
目录
第一部分 研究背景
第二部分 系统方案
第三部分 硬件部分设计
第四部分 调试制作
编辑版pppt
2
第一 部分
第一部分 研究背景
研究现状 研究意义 主要内容
编辑版pppt
3
研究现状
在世界经济多元化的环境下,很
多国家都在积极开展研究和开发智能 车。在二十世纪高新技术不断发展的 时代,移动机器人是成为机器人技术 的一个重要分支。
编辑版pppt
循迹示意图 红外光电传感器ST188结构与实物图
15
避障模块
本设计避障模块拟选用的是集成模块E18-D50NK,该传感器是一种红外光电 管。这是一种集发射与接收于一体的光电式传感器,其检测距离可以根据我们的
需要进行调节。
此传感器探测距离远,抗干扰性强,且价格低廉,容易使用,已在机器人行业
中得到广泛应用,是我们避障功能设计的最佳选择。该传感器实物图如图:
该传感器原理:前方无障碍输出高电
平(1),有障碍输出口(黄色)电平会 从高电平变成低电平(0),工作原理已 经标在图上。背面图有一个电位器可
基于51单片机的循迹避障小车的设计

清华大学本科生毕业论文题目: 基于51单片机的循迹避障小车的设计专业班级:电子信息工程2012级02班学号:学生姓名:指导教师:论文完成日期: 年月郑重声明本人的毕业论文是在指导老师的指导下独立撰写并完成的。
毕业论文没有剽窃、抄袭、造假等违反学术道德、学术规范和侵权行为,如果有此现象发生,本人愿意承担由此产生的各种后果,直至法律责任;并可通过网络接受公众的查询。
特此郑重声明。
毕业论文作者(签名):年月日目录1 绪论 (3)1.1 课题研究的背景 (3)1.2 课题研究的意义 (5)1.3 课题研究的主要内容 (6)2 系统方案确定及主要元件的选择 (7)2.1 系统方案确定 (7)2.2 主要模块的选择 (7)3 系统硬件部分设计 (11)3.1 主控器AT89C51 (11)3.2 复位电路 (13)3.3 时钟电路 (13)3.4 寻迹模块 (14)3.5 避障模块 (15)3.6 H桥电机驱动 (16)3.7 电源模块 (17)4 系统软件部分设计 (19)4.1 系统使用的软件简介 (19)4.2 软件调试平台 (19)4.3 系统程序流程设计 (21)5 系统仿真实现 (26)6 调试结果分析 (27)结束语 (28)附录 (29)附录1 元件清单 (29)附录2 程序代码 (29)参考文献 (33)致谢 (34)基于51单片机的循迹避障小车的设计专业:电子信息工程班级:**班作者:*** 指导老师:***摘要智能作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。
本设计通过实时检测各个模块传感器的输入信号,利用红外对管检测黑线实现寻迹,通过光电传感器实现避障,采用存储空间较大的AT89C51作为主控制芯片,小车电机驱动采用L298N芯片,根据内置的程序分别控制小车左右两个直流电机运转,实现小车自动识别路线,能较有效的控制其在碰上障碍物时能转弯角度及寻迹行驶。
基于51单片机的红外遥控小车设计和制作

基于51单片机的红外遥控小车设计和制作红外遥控小车设计和制作是一个有趣且实用的项目。
本文将介绍一个基于51单片机的红外遥控小车的设计方案和制作过程。
设计方案:1.硬件设计:-采用STC89C52单片机作为控制核心,具有良好的性能和稳定性。
-红外接收器模块:用于接收红外信号并将其转换为电信号。
-直流电机:用于驱动小车的轮子,实现前进、后退、转弯等动作。
-驱动电路:将单片机的输出信号转换为合适的电流和电压来驱动电机。
-电源:使用锂电池作为电源,提供所需的电能。
2.软件设计:-红外信号解码:将接收到的红外信号进行解码,并判断是前进、后退、转弯等命令。
-控制逻辑:根据解码结果产生相应的电信号,驱动电机实现小车的相应动作。
-响应机制:处理红外信号的时延和干扰,避免误操作或信号丢失。
制作过程:1.连接电路:-将STC89C52单片机与电源、红外接收器模块和驱动电路连接。
确保连接正确、稳定。
-连接直流电机和驱动电路,通过电路板或者线缆进行连接,确保电机可以正确驱动。
2.烧录程序:- 使用Keil C编译器编写控制程序,并将程序通过编程器烧录到STC89C52单片机中。
3.完善控制逻辑:-在控制程序中添加红外信号解码和控制逻辑代码,使小车能够根据接收到的红外信号做出相应动作。
4.调试和测试:-将红外遥控器对准红外接收器模块,发送不同的红外信号,确保小车能够正确接收和处理信号。
-确保小车能够根据接收到的信号做出正确的动作,如前进、后退、转弯等。
5.完善功能:-可以根据实际需求添加其他功能,如声控、避障、图像识别等,提升小车的智能性和功能性。
通过以上设计和制作过程,一个基于51单片机的红外遥控小车就可以完成。
这个小车可以通过红外遥控器进行远程控制,并实现前进、后退、转弯等动作。
它可以在室内或者室外进行运行,并具有一定的智能性和便携性。
这个项目不仅可以培养学生的动手能力和创造力,还可以加深对电子电路和嵌入式系统的理解和掌握。
基于单片机的自动避障小车设计

基于单片机的自动避障小车设计一、本文概述随着科技的发展和的日益普及,自动避障小车作为智能机器人的重要应用领域之一,其设计与实现具有重要意义。
本文旨在探讨基于单片机的自动避障小车设计,包括硬件平台的选择、传感器的配置、控制算法的实现以及整体系统的集成。
本文将首先介绍自动避障小车的背景和研究意义,阐述其在实际应用中的价值和潜力。
接着,详细分析单片机的选型依据,以及如何利用单片机实现小车的避障功能。
在此基础上,本文将深入探讨传感器的选取和配置,包括超声波传感器、红外传感器等,以及如何通过传感器获取环境信息,为避障决策提供数据支持。
本文还将介绍控制算法的设计与实现,包括基于模糊控制、神经网络等先进控制算法的应用,以提高小车的避障性能和稳定性。
本文将总结整个设计过程,展示自动避障小车的实物样机,并对其性能进行评估和展望。
通过本文的研究,旨在为读者提供一个全面、深入的自动避障小车设计方案,为推动相关领域的发展提供有益参考。
二、系统总体设计在自动避障小车的设计中,我们采用了单片机作为核心控制器,利用其强大的数据处理能力和灵活的编程特性,实现了小车的自动避障功能。
整个系统由硬件部分和软件部分组成,其中硬件部分包括单片机、电机驱动模块、避障传感器等,软件部分则包括控制算法和程序逻辑。
硬件设计方面,我们选择了具有高性价比的STC89C52RC单片机作为核心控制器,该单片机具有高速、低功耗、大容量等特点,非常适合用于自动避障小车的控制。
电机驱动模块采用了L298N电机驱动芯片,该芯片具有驱动能力强、稳定性好等优点,能够有效地驱动小车的直流电机。
避障传感器则选用了超声波传感器,通过测量超声波发射和接收的时间差,可以计算出小车与障碍物之间的距离,为避障控制提供数据支持。
软件设计方面,我们采用了模块化编程的思想,将整个控制程序划分为多个模块,包括初始化模块、电机控制模块、避障控制模块等。
在初始化模块中,我们对单片机的各个端口进行了初始化设置,包括IO口、定时器、中断等。
基于51单片机红外无线遥控智能小车控制设计

基于51单片机红外无线遥控智能小车控制设计摘要:本文利用51单片机设计了一款具有红外无线遥控功能的智能小车控制系统。
该系统基于红外技术,实现了对智能小车的远程控制。
通过建立遥控信号传输模型和小车控制模块,实现了智能小车的实时运动控制,包括前进、后退、左转、右转等操作。
本文详细介绍了系统设计方案、硬件设计和软件设计,通过实验验证,证明该系统能够稳定地实现智能小车的远程控制,具有一定的应用价值和推广前景。
关键词:51单片机;红外无线遥控;智能小车控制;遥控信号传输模型Abstract:In this paper, a smart car control system with infrared wireless remote control function based on 51 single-chip microcomputer is designed. The system is based on infrared technology, which realizes the remote control of the smart car. By establishing the remote control signal transmission model and the car control module, real-time motion control of the smart car, including forward, backward, turning left and turning right, is realized. This paper introduces the system design scheme, hardware design and software design in detail. Through experiments, it is proved that the system can stably realize the remote control of the smart car, and has certain application value and promotion prospects.Keywords:51 single-chip microcomputer; infrared wireless remote control; smart car control; remote control signaltransmission model1. 引言智能小车控制系统是一种目前比较受关注的智能化系统,在智能出行和智慧交通中有着广泛的应用。
基于51单片机的避障小车程序

基于51单片机的避障小车程序程序中有我写的注释,看不懂程序的话,可以参考。
#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit IN1=P2^1;//左电机输入端1sbit IN2=P2^2;//左电机输入端2sbit IN3=P2^3;//右电机输入端1sbit IN4=P2^4;//右电机输入端2sbit ENA=P2^0;//右电机使能控制端sbit ENB=P2^5;//左电机使能控制端sbit TX=P1^0;//超声波发送控制端sbit RX=P1^1;//超声波接收控制端uint time=0,ERROR;//用于存放定时器时间值uint PWM1,PWM2,num1=0,num2=0;uint s=0;//用于存放距离的值uchar tt=0;void Delay20us()//@11.0592MHz 延时20us{unsigned char i;_nop_();_nop_();_nop_();i = 52;while (--i);}void forwardg()//前进函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1=15;PWM2=18;}void stopg()//停止函数{IN1=1;IN2=1;IN3=1;IN4=1;PWM1=0;PWM2=0;}void count()//测距函数{tt=200;if(tt==200)//20ms超声波发送一次{tt=0;TX=1;//超声波发送端Delay20us();//延时20usTX=0;//超声波发送端ERROR=50000;//while(RX==0&&ERROR>0)//判断是否有接收&&等待时常{ERROR--;//等待时长}if(RX==1)//超声波有接收RX=1{TR0=1;//开始计时while(RX&&!TF0);//接收完毕(RX=0)或者超出量程结束语句TR0=0;//停止计时if(TF0==1)//如果溢出(超出量程){TF0=0;//置溢出标志位为0s=999;//直行控制}else{time=TH0*256+TL0;TH0=0;TL0=0;s=(time*1.7)/100;//距离计算公式}}else{s=999;}}}void time0init()//定时器0初始化{TMOD|=0x01;//设置定时器0为工作方式1TH0=0;TL0=0;//定时器赋初值}void time1init()//定时器1初始化{ET1=1;//开定时器中断TR1=1;//开定时器1中断TH1=0xFF;//定时器赋初值TL1=0xA3;TMOD|=0x10;//设置定时器1为工作方式1}void time1() interrupt 3//定时计数器1中断{TH1=0xFF;TL1=0xA3;//赋初值tt++;num1++;num2++;if(num1>=100) //PWM的周期为100*0.1=10ms num1=0;if(num2>=100)num2=0;if(num1<PWM1)ENA=1;//打开右电机使能控制端if(num2<PWM2)ENB=1;if(num1>=PWM1)ENA=0;//关闭右电机使能控制端if(num2>=PWM2)ENB=0;}void main(){time0init();time1init();EA=1;//开总中断while(1){count();//调用距离计算函数if(s>=6)//大于等于6厘米前进{forwardg();}else{stopg();}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《基于51单片机的红外避障自动车的实现》技术报告摘要本小组所设计一个带有红外传感器的小车,基本能实现自动避障的功能。
本小车以STC89C52为其主控单元,以俩个直流减速电机为驱动电机提供基本动力,并依据差速原理实现转向,用红外传感器进行探测,使用分离元件组成的电路去驱动电机,使用PWM波实现变速功能。
小车分为五个模块:STC89C52主控模块,传感模块,电源模块,电机驱动模块,测速模块。
关键词:89C52 红外避障自动车题目:《基于51单片机的红外避障自动车的实现》下面是一些基本资料:——————————————小车参数——————————————障碍检测方式红外探测(探测模块功耗7mA)车模几何尺寸(mm)149 x 102 x 59测障精度前方:75 cm 左右:25cm车模轮距(mm)120电源系统 4 x 1.5 v干电池4 x 1.2 v充电电池及其稳压输出电机直流减速电机,1~12V工作电压,传动比:71.2:1主控芯片STC89C52MCU其他芯片LM7806 LM7805 STC11F01等—————————————小组资料———————————————小组成员:姓名班级善长项目负责模块王太杰0804211班擅长于硬件焊接技术强硬件知识充足红外探测部分驱动调试孙学军0904211班擅长于编程C语言功底扎实思路开阔程序驱动部分程序调试李相华0804211班查阅资料能力强善于方案选择和优化电源部分小组优势:硬件与程序搭配协调,每人负责各自模块,只提供最终模块接口,使对方不必关注自己模块内部结构,只需将接口连接完成即可,减少了每人负责的内容,提高了效率。
————————————制作流程与时间—————————————2010年5月1日小组成员对各模块电路进行了选择、优化,并进行了电路搭建、焊接,各模块调试,确定模块交互接口;主控程序思路成型,并编写了测试程序,对软硬件进行了测试。
最后各模块交互,整体调试,主程序确定及细节敲定。
2010年5月2日:模块交互,整体调试,主控程序细节修改;经布局后各硬件模块转移至车体,最终焊接,整车成型。
主控程序下载,调试,最终成功。
—————————————技术资料——————————————设计思路:为节省电机数量和电路复杂程度,红外避障小车(以下简称小车)采用前轮主动,后轮从动原理。
前轮采用双电机驱动,利用差速法实现车身转向。
检测部分利用红外发射管发射红外光,遇障碍物后经反射被红外接受管接收,产生电平转换,利用单片机I/O口检测红外检测模块电平输出,以此判断前方障碍物有无,检测到障碍物后,经单片机I/O口控制电机驱动电路,经由电机驱动电路输出不同电压,产生差速,实现转向,最终以达到避障的目标。
其总体方框图如图所示:STC89C52 单片机电机驱动模块传感器模块电源模块2个直流减速电机主控模块:方案一:采用凌阳公司的16位单片机,它是16位控制器,具有体积小、驱动能力强、可靠性高、功耗低、结构简单、具有语音处理、运算速度快等优点,但考虑到我们小组对这个方案采用的微处理器并不熟悉,使用起来并不是很方便,这对于硬件电路的设计和软件编程增加了难度。
我们决定不再使用此方案,考虑其他方案。
方案二:采用STC 89C52单片机作为主控制器。
STC 89C52是一个超低功耗,和标准51系列单片机相比较具有运算速度快,抗干扰能力强,支持ISP在线编程,片内含8k空间的可反复擦写1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个I/O口,2个16位可编程定时计数器。
其指令系统和传统的8051系列单片机指令系统兼容,降低了系统软件设计的难度,电路设计简单、价格低廉,在后来的实验中我们发现,STC 89C52精确度和运算速度也都完全符合我们系统的要求。
综合以上方案我们选择比较普通的更为熟悉的方案二使用STC89C52单片机为我们整个系统的控制核心。
其各个引脚如图1所示图1探测模块:方案一:用三极管驱动红外发射管和红外解收管。
在三极管的射级接俩个红外发射管,加大红外线的强度,进儿提高其探测距离。
在红外接收电路中,用电阻和红外接收管串联来调节基极的电位,当接收管接收到红外线时可以改变基极电位,进儿使三极管工作在截止或饱和状态,即调节了输出电平,实现了高低电平的转换。
其发射和接受电路如图2所示:图2优点:电路简单,搭建方便。
缺点:探测精度不高,探测距离比较近。
考虑到小车行驶时对精度的要求,我们最终放弃了这套方案。
方案二:用三极管驱动红外发射管,用LM358来实现接受电路。
发射电路和方案一基本一致,这里就不赘述了。
LM358是包含俩个运算放大器的集成器件,我们用第一个放大器来实现对探测到得信号进行放大,把第二个作为电压比较器(阈值电压Vth=1/2Vcc)。
把处理过的信号和阈值电压进行比较,实现高低电平转换,并把数字信号送给单片机,使小车做出正确动作。
器接收电路如图所示:优点:探测精度较高,并且通过滑动变阻器可以改变探测距离,可以适应不同环境进行探测。
缺点:电路较为复杂。
综合考虑,最终我们选择了方案二。
测速模块:方案一:用光电对管实现测速。
光电对管是我们所熟知的器件,用它进行测速数据准确。
我们的电机上面正好有一个光栅,用其测速实现比容易。
但最终由于电机相对光电对管来说比较小,无法很好将二者结合起来,我们不得不放弃这种方案。
方案二:用红外对管实现测速。
由探测模块中的方案一可知,此电路探测距离短,稍作改动可以实现测速。
再小车的一个轮子上贴上黑纸,并在黑纸上贴上一条白纸(黑色可以吸收绝大多数的红外线而白纸却可以反射大部分红外线),当轮子转起来时就会产生高低电平,送给单片机的计数器进行计数。
通过单位时间内的轮子转过的圈数实现了测速.。
其电路如图所示:通过实验分析可得,此方案基本可以满足我们的需要。
最终选择了此方案。
电源模块:方案一:交流供电。
实现方式:220V交流电经整流稳压获得。
优点:供电稳定,电压输出灵活。
缺点:须稳压,电源传输线较长,且可能会对车子的避障功能产生干扰。
考虑到小车行驶的灵活性和避障抗干扰性,我们抛弃了采用交流电的方案。
方案二:直流电供电。
实现方式:4接南孚电池串联获得。
优点:无需稳压即可输出稳定电压,无需使用电源线。
缺点:电压输出固定,无法获得灵活的电压输出。
考虑到避障小车工作时各模块需求电压分别为:单片机4.5~5.5V,电机1~12V,红外测障模块5V,灵活性不高,因此可实现5V、6V的电压输出对各模块供电。
因此我们最终采用直流电供电方式。
在制作调试过程中,我们采取了4节5号南孚电池,用电池盒串联。
经测量4节南孚电池串联输出为6.3V稳定电压。
针对各模块电压需求我们产生以下具体实现方案:单片机电源:单片机工作电压为4.5V~5.5V,且其对工作电压要求比较严格方案一:我们设想采取基于LM7805稳压芯片的稳压芯片输出5V恒定电压。
但是由于LM7805对输入输出两端电压要求有2~3V压降,且稳压芯片功耗较大,可能导致电源利用效率不高,故最终舍弃了这种方案。
方案二:经过在网上查阅相关经验方法,我们最终确定了一种简单易行的方法:在电源处串联一个(两个/可通过跳线帽选择)二极管实现0.7V(1.3V)压降,用来提供单片机工作电压。
如图2所示:图2 电源模块驱动电路电源:电机对电压要求不精确,但电压会影响电机功率以及速度。
方案一:采用模拟CD-DC升压电路获得较高电压供给电机驱动电路已获得较高的功率输出,提高转速。
最终考虑到电路实现的复杂性。
我们最终舍弃了这种方案。
方案二:采用专门的直流电升压芯片(比如MC34063A)以简化电路。
不过最终由于经济原因放弃了这种方案。
方案三:直接用电池串联后的电压给驱动电路供电,此方案简单易行,制作成本较低,不过电机功率不大。
最终经测试小车速度能达到我们的需求,最终采取了本种方案。
经分析电源方案的优缺点,我们得出以下方案:考虑到一次性干电池的不可利用性,我们在整车成型时采用了4节可充电电池经电池盒串联的方案,以降低后续制作成本。
考虑到电压输出端的单一性,我们考虑采用10V稳压管另做一路电源输出,为电机提供工作电压,在一定程度上可提高电机功率,提高整车运行速度。
电机驱动模块:方案一:采用电机驱动集成芯片(如L9110)来驱动电机。
优点:电路简化,双路输出,可以实现双电机的正反向转动,实现整车的前进后退。
但由于电机驱动集成芯片的价格比较高(18~30元/片),为降低制作成本,最终舍弃了采用电机驱动芯片驱动的方案。
方案二:采用分立元件模拟电路驱动。
优缺点:制作成本低,电路无法简化,稳定性较驱动芯片(如L9110)差。
经考虑避障小车的控制精度不是很高,运用分立元件模拟电路即可达到系统要求,最终采取了本种方案。
经选择我们最终采取了利用双三极管控制开关电路,利用三极管的反应灵敏性,并将其俩端接在MCU的I/O口上,可以通过控制I/O口输出0、1来控制三极管开关,以达到控制输出电压的目的。
最终驱动电路如图3所示:其控制如表所示:图3 电机驱动表1P0^0 P0^1 P0^2 P0^3 状态1 0 1 0 前进0 1 0 1 后退1 0 0 0 右转0 0 1 0 左转—————————————主控程序——————————————为了降低程序复杂性,我们分析了软件运行原理,尽量简化程序设计。
单片机我们最终选用了10个I/O口。
其中1个用来计数或测速,3个I/O口用来接收红外部分电平转换,检测障碍物,2个I/O口用来控制转向灯,另外4个I/O口端接电机驱动电路,用程序使其产生0、1脉冲数量比来控制驱动电路开关,最终实现速度差以实现转向避障。
主控程序如下:/* *****************************程序开发环境Keil uVision3语言:C编写者:王太杰时间:2010/04/04***************************** *//* *****************************主程序及注释如下:***************************** */#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit x=P2^0; //定义左侧探测器接收端sbit y=P2^1; //定义中间探测器接收端sbit z=P2^2; //定义右侧探测器接收端sbit m1=P1^0;sbit m2=P1^1; //定义左侧电机控制端sbit n1=P1^2;sbit n2=P1^3; //定义右侧电机控制端sbit l=P1^4; //定义左侧转向灯控制端sbit r=P1^5; //定义右侧转向灯控制端uint k,num;void delays(uint i) //定义一个延时1MS的延时函数{uint m,n;for(m=i;m>0;m--)for(n=110;n>0;n--);}input_num(uchar bai,uchar shi, uchar ge) //信号运算函数{uint he;he=4*bai+2*shi+ge;return(he);}void zuo_zhuan() //小车左转函数{uint i;for(i=1;i<=5;i++){m1=0;m2=0;n1=1;n2=0;l=1; //控制转向灯r=1;delays(15);m1=1;m2=0;n1=1;n2=0;l=0;r=1;delays(5);}}void you_zhuan() //小车右转函数{uint i;for(i=1;i<=5;i++){m1=1;m2=0;n1=0;n2=0;l=1;r=1;delays(15);m1=1;m2=0;n1=1;n2=0;l=1;r=0;delays(5);}}void hou_tui() //小车倒车函数{uint i;for(i=1;i<=50;i++){m1=0;m2=1;n1=0;n2=1;l=1;r=1;delays(15);m1=0;m2=1;n1=0;n2=1;l=0;r=0;delays(10);}for(i=1;i<=50;i++){m1=0;m2=0;n1=1;n2=0;l=1;r=1;delays(20);m1=1;m2=0;n1=1;n2=0;l=0;r=1;delays(5);}}void qian_jin() //小车前进函数{uint i;for(i=1;i<=5;i++){m1=1;m2=0;n1=1;n2=0;l=1;r=1;delays(20);}}uint read() //小车测速的计数函数{uchar t1,th1,th2;uint val;while(1){th1=TH0;t1=TL0;th2=TH0;if(th1==th2)break;}val=th1*256+t1;return val;}void T1_time() interrupt 3 //定义定时器1 {TH1=(65535-45872)/256;TL1=(65535-45872)%256; //定时时间为50ms k++;if(k==30){num=read();k=0;TH0=0;TL0=0; //计数器清零}}main() //主函数{uint grade;TMOD=0x15;TH0=0;TL0=0;TH1=(65535-45872)/256;TL1=(65535-45872)%256; //在定时器中装入初值EA=1;ET1=1;TR0=1;TR1=1;while(1){if(num==0)hou_tui();else if(num!=0){grade=input_num(x,y,z);switch(grade){case 2:qian_jin();break;case 0:case 4:case 6:you_zhuan();break;case 1:case 3:zuo_zhuan();break;case 5:case 7:hou_tui();break;}}}}/* *****************************程序结束,经测试程序符合硬件,功能达到预期目标。