遥控小车运动系统设计流程图
无线遥控玩具小车设计与制作
“发明杯”大学生创新大赛作品题目: 无线遥控玩具小车设计与制作目录摘要 (1)引言 (3)1 方案设计与论证 (4)1.1 直流调速系统 (4)1.2 防碰撞系统 (5)1.3 显示系统 (5)2 硬件设计 (5)2.1 小车系统框图 (5)2.2 单片机最小系统设计 (6)2.3 电机驱动电路设计 (7)2.4 遥控发射接收电路设计 (9)2.4.1 无线发送电路 (10)2.4.2 无线接收电路 (11)2.5 检测系统设计 (11)2.5.1 速度检测设计 (11)2.5.2 防跌落系统设计 (12)2.5.3 防碰撞系统设计 (13)2.6 显示电路设计 (13)2.7 单片机I/O口的分配 (14)2.8 电源设计 (14)2.9 小车车体设计 (14)3 软件设计 (15)3.1 主程序设计 (15)3.2 PWM子程序设计 (17)3.3 遥控子程序 (18)3.4 防跌落、碰撞子程序 (20)3.5 显示子程序 (21)4 结果分析及结论 (22)5 谢辞 (23)6 参考文献 (23)附件1 程序清单 (24)附件2 硬件电路图 (33)附件3 电路PCB图 (34)无线遥控玩具小车设计与制作摘要:80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评,该课题的基本思想是设计一台能够遥控行走并自动回退防止跌落的机器小车。
遥控接收端以80C51 单片机为控制核心,其中数据的发射和接收部分通过无线通讯模块完成。
可通过发射端来控制小车的直流电机实现无极调速, 遥控小车进行转向, 并能在液晶上显示出小车的实时速度值。
小车还能自动检测落差较大的落差,遇到楼梯等低处会自动回避,以防止小车由高处摔落。
关键词:80C51单片机、PWM调速、遥控小车引言在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
基于单片机遥控小车的设计
基于单片机遥控小车的设计摘要随着电子业的发展,自动化已不再是一个新鲜的话题,无人驾驶的遥控小汽车也必将进入实用阶段,智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。
智能电动车就是其中的一个体现。
本系统模拟基于51单片机的遥控小车的设计。
89C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。
这里介绍的是如何用89C51单片机来实现无线遥控小车的毕业设计,该设计是结合实际应用而确定的设计类课题。
本系统以设计题目的要求为目的,采用89C51单片机为控制核心,采用L298N对小车电机的控制,利用以PT2262/PT2272芯片的无线遥控模块装置,本次设计基于完备的软硬件系统,很好的实现了电动小汽车的前后行进,特定路径的行驶,以及停车。
整个系统的电路结构简单,可靠性能高。
实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析关键词:单片机;无线控制技术;PWM调速;L298N;PT2262/2272。
The Design of Remote Control CarBased On MCUAbstractAlong with the development of electronic, automation is not a fresh word any more, and no-man controlled cars will be realized. The new invention of modern intelligence, is a future of development, he can follow the pattern set in advance in an environment where automatic operation, no human's management, used in scientific exploration and so on. Smart electric car is one of expression. That system is based on the design of 51 MCU controlled car. 89C51 MCU is eight-figure microcontroller, which receives high praise from the users because of its easy use and versatility. This graduation design introduces how 89C51 MCU realize the remote control of the car, a combination of the practical application and design. This system designs for the purpose of the topic request, using 89C51 MCU as control core, the car motor control by L298N,and wireless remote control which chip PT2262/2272 device, with the electric car, driving, and the particular path park. The whole system of the circuit structure is simple and reliable. This paper introduces the hardware design method of the system and the analysis of the test results.Keyword: MCU; Wireless Remote Control; PWM speed adjusting;L298N;PT2262/2272目录1 前言 (4)2 方案设计与论证 (6)2.1直流调速系统 (6)2.2无线控制系统 (7)2.3系统原理图 (8)3 硬件设计与实现 (10)3.189C51单片机硬件结构 (10)3.1.1 一个8位的微处理器(CPU) (11)3.1.2 存储器 (11)3.1.3 I/O接口 (12)3.1.4 定时器/计数器 (12)3.1.5 五个中断源的中断控制系统 (12)3.1.6振荡器及定时电路 (13)3.289C51单片机引脚及其功能 (13)3.2.1 电源引脚Vcc和Vss (14)3.2.2 时钟电路引脚XTAL1和XTAL2 (14)3.2.3 控制信号引脚RST,ALE,/PSEN和/EA (15)3.2.4 输入/输出端口P0,P1,P2和P3 (15)3.3系统运动控制部分设计 (16)3.3.1 电机选型 (16)3.3.2 L298N驱动电机 (17)3.4无线电发射接收模块介绍 (20)3.551单片机的最小应用系统设计 (24)3.6PWM调速系统 (26)4 软件设计 (29)5 测试数据、测试结果分析及结论 (31)致谢...................................................... 错误!未定义书签。
JK出品单片机自制遥控小车设计(附程序和部分电路)
遥控车报告------JK出品车名:JK一号机学院:机电学院(JK)队员:李凯陈琦庄彬宾明摘要本课题设计的遥控玩具车主要有三大模块组成:无线发射模块、无线接收模块和驱动模块。
我们的设计以mega16芯片为核心,无线遥控发射/接收模块为apc220,驱动芯片为L298N。
驱动电动机正反转的电路连接无线遥控接收电路构成一个驱动模块驱动电动机的前进、后退、左转和右转和各种微调控制。
经过实践证明,我们的设计可以很好的实现题目给出的要求,并且在其要求上我们又进一步进行了完善,是设计具有更好的实用和参考价值。
关键字:mega16芯片L298N芯片apc220无线发射/接收1、总体设计方案简介遥控玩具车是根据无线信号传送原理来控制小车的前进后退和左右转向的。
一般,遥控玩具车都是有两组操纵控制按钮,一组是控制小车的前进(加速)和后退,另一组是控制小车的左右转向的。
在我们的设计中,我们是采用四个按钮开关(或摇杆电位器)来分别控制小车的前进、后退、和左右转向的。
此设计的遥控玩具车是以单片机mega16的uart异步通信模块控制apc220发出信号;另一块配套的apc220接收信号并传输给另一块mega16;L298N驱动芯片用来实现电动机的正反转。
动作的电路。
(附:选择apc220作为通信模块的原因)整体方案比较:红外线传输方向性强、传输距离短,蓝牙模块信号较稳定,但是传输距离短。
相比之下,APC220整体信号稳定,传输距离远且不受方向限制,抗干扰和灵活度有较大优势。
2、系统电路设计1、无线发送和接收模块电路图(1)控制发射按钮及部分必要外围电路 (2)无线通信电路(发射及接收) 测试结果分析:经测试,各模块工作正常,程序、电路和整体机构配合良好。
前轮驱动灵活,可基本代替舵机使用。
通信传输正常,传输距离可达500m ,且不受障碍物和方向的限制。
3、软件系统框图(1)发送模块软件框图 (2)接收模块软件框图3、核心程序代码(1)发送部分程序代码 #include <iom16v.h> #include <macros.h>#define uchar unsigned char #define uint unsigned int#define mclkchar key_down(void) //检验按键是否按下{DDRA=0X00;PORTA=0X0F;return (PINA&0X0F)==0X0F ? 0:1;}void delay(uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<1141;j++);}void uart_init(uint baud){UCSRB=0x00;UCSRA=0x00; //控制寄存器清零UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);//选择UCSRC,异步模式,禁止// 校验,1位停止位,8位数据位UBRRL=(mclk/16/baud-1)%256;UBRRH=(mclk/16/baud-1)/256; //设置波特率UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);//接收、发送使能,接收中断使能SREG=BIT(7); //全局中断开放DDRD|=0X02; //配置TX为输出(很重要)}void uart_sendB(uchar data){while(!(UCSRA&(BIT(UDRE)))) ;UDR=data;while(!(UCSRA&(BIT(TXC))));UCSRA|=BIT(TXC);}void main(void){ uchar key;DDRD=0X02;DDRA=0X00;PORTA=0X0F;uart_init(9600);//PWM_initilize();。
运料小车控制系统设计PPT课件
.
9
四、步的概念
3、步的动作
步的动作分为存储型、非存储型两种: 存储型:指那些需要在若干个步中都应为“ON”的动作,
在顺序功能图中,可以根据需要用置位指令S来将置 “ON”,用复位指令R来复位 。 非存储型:指那些只在步处于活动步时才为“ON”的动 作,当步转为非活动步时,动作也被复位,在顺序功能 图中,直接用线圈输出。步与它的非存储型动作“共存 亡” 。
.
6
三、顺序设计法简介
顺序控制:按照生产工艺和时间的顺序,在各个信号的作用下,根据 内部状态和时间的顺序,在生产过程中各个执行机构自动地有序的进 行操作,如前述小车运料系统工作过程可表示为图5.2。
初始状态
SB按下 I0.0·I0.2
工序1
Q0.0 前行
SQ2
I0.1 装料 定时8s
工序2
Q0.4 T37
流程图中有分支,系统会根据转换条件的不同选择不同的分支。
图b)中,当I0.0为ON时,功能图由步S1.0转到步S1.1,当I0.1
为ON时,功能图由步S1.0转到步S1.4,I0.0和I0.1不能同时为
1,选择序列的结束称为合并,图中两个分支在步S1.3前合并。
图 c)是选择性分支的一种特殊情况,即某一条分支上没有
T39
定时2s
T40
定时2s
T41
图5.9彩灯显示系统顺序功能图
.
17
图5.10 彩灯系统梯形图程序
//首次扫描位使 能初始步S0.0 //初始步S0.0开始
//按下启动按钮(I0.0)且各彩灯均为OFF时,程序 从步S0.0切换到步S0.1:第一盏灯亮状态
智能小车系统设计流程图
(3)单片机控制部分
控制部分采用了主从结构,主控制器负责黑线检测,金属检测,电机驱动等工作。从控制器负责显示,路程计算,速度计算,运行时间计算等工作。主从之间采用波特率为19200的串行通信。具体电路见1-5。
2:系统的软件设计
(1)路面检测程序流程图见1-6。外部四组红外线检测传感器共用一个中断源,进入中断服务程序后查询具体是哪一路传感器遇到黑线。
4:电源选择
方案一:所有器件采用单一电源,这样供电比较简单;但是由于电动机启动瞬间电流很大,而且PWM驱动的电动机电流波动较大,会造成电压不稳定,有毛刺等干扰,严重时可能造成单片机系统掉电,缺点十分明显。
方案二:双电源供电。将电动机驱动电源与单片机以及其周边电路电源完全隔离,利用光电耦合器传输信号。这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统稳定性。
1-3
我们采用了200HZ的周期信号控制,通过对其占空比的调整,对车速进行调节。最小脉宽为0.2ms速度分为5档,可以满足车速调整的精度要求。同时可以控制电动机的转向。
(2)路面黑线检测模块的电路设计与实现,具体电路见1-4,为了检测路面黑线,在车的前部安装了四个反射式红外传感器,分成左右两组,由传感器先后通过黑线的顺序可以知道小车现在跑道的位置,以便跑回原跑道。
1-6
(2)显示程序由主控CPU发送开始标志,slave mcu开始打开计数器开始计时间。当master mcu每检测到霍尔元件翻转一次便向slave mcu发送一个标志,slave mcu便累加一次计算之后送去显示。速度检测我们采用单位时间内计算共有多少个脉冲计算后即可得到速度值。
三测试结果及误差分析
我们认为本设计的稳定性更为重要,故采用方案二。
基于PLC的小车自动往返运动控制系统 2.
第一章概述1完成本次循环工作后,停止在最初位置。
其运动路线示意图如下图1-1所示。
如图1-1 小车运动路线示意图第二章硬件设计2.1 主电路图如图2-1为小车循环控制的主电路原理图。
该电路图利用两个接触器的主触点KM1、KM2分别接至电机的三相电源进线中,其中相对电源的任意两相对调,即可实现电机的正反转,也可达到小车左右运行的目的。
假设接通KM1为正转(小车右行),则接通KM2为反转(小车左行)。
图2-1小车循环控制的主电路原理2.2 I/O地址分配如表2-1为小车循环运动PLC控制的I/O分配表。
在运行过程中,这些I/O口分别起到了控制各阶段的输入和输出的作用,并且也使小车的控制过程更清晰明了,动作与结果显示更加方便直接。
表2-12.3 I/O接线图如图2-2为小车循环运动PLC控制的I/O接线图。
在进行调试过程时,在PLC模块上,当I0.0有输入信号,即按下SQ1;当I0.1有输入信号,也即按下SQ2,以此类推,I/O接线图就是把实际的开关信号变成调试时的输入信号。
同理,输出信号也是利用PLC模块把小车的实际运动用Q0.0、Q0.1的状态表现出来。
图2-2小车循环运动PLC控制的I/O接线图2.4 元件列表如表2-2为小车循环运动PLC控制的元件列表。
在本次设计中就是利用这些元件,用若干导线连接起来组成了我们需要的原理图、I/O接线图。
表2-2第三章软件设计3.1 程序流程图如图3-1为小车循环运动PLC控制的程序流程图。
小车在一个周期内的运动由4段组成。
设小车最初在左端,当按下启动按钮,则小车自动循环地工作,若按下停止按钮,则小车完成本次循环工作后,停止在最初位置。
首先小车位于初始位置,按下SB1启动后,小车向右行驶;当碰到行程开关SQ4,小车转向,向左行驶;碰到行程开关SQ2,小车再一次转向,向右行驶;碰到行程开关SQ3,小车又向左行驶,直到再次碰到SQ1,然后开始依次循环以上过程。
若不按下停止按钮SB2则小车一直进行循环运动,若此时按下停止按钮SB2,小车又碰到行程开关SQ1,则小车回到初始位置。
智能小车控制系统设计实现
关键词:智能小车;控制系统;设计和实现1智能小车控制系统概述智能小车控制系统是一个综合、复杂的系统,其既有多种技术,也含有嵌入式的软件设备和硬件设备、图像识别、自动控制和电力传动、机械结构等技术知识,智能小车的控制系统主要是围绕嵌入式控制系统进行的,将其作为操控的中心,并借助计算机系统,最终完成自动造作和控制的过程[1]。
智能小车的控制系统流程图见图1所示。
2智能小车的设计和实现2.1智能小车的硬件设计硬件设计是保证智能小车平稳运行的必要条件,它关系着控制系统的精度和稳定性,因此在设计时需要用在模块化设计思想,该研究是通过采取硬件系统K60芯片作为核心控制器,并通过图像采集模块和电机、舵机驱动模块、测速模块、电源模块等组成硬件设计系统图,见图2。
首先,电源电路设计,该设计时智能小车的动力来源,为小车运行提供不断的电力,一般采取7.3V、容量为2000mAh的可充电型的镍铬电池作为电源,但是其不能直接为控制器传输电力,需要在转变电路后才可以进行传输。
转变电路可以保证控制器直接对电池内的电压进行调节,保证不同模块可以正常工作和运行,智能小车主要是依靠控制电力和电机驱动进行转变的。
其次是K60最小系统板,在设计时需要将K60的管脚部分做成最小系统的单独电路板,这样可以简化电路板的设计,促使调试更加顺利,K60系统板主要由K60芯片、复位电路、时钟电路、JTAG下载电路、电源滤波电路组成。
再其次是电机驱动电路,该电路是在集成芯片的驱动下进行的,可以为控制器更其他模块提供较大的电流最终集成电机驱动芯片,但是要特别注意这部分因为在电机驱动过程中有较大的分功率,会导致小车在进行调试时因为过大的电流导致小车电路发生堵塞现象,而使小车电路被烧毁,因此需要设计者避免这种现象,可以将驱动电路做成驱动板[2]。
最后是舵机接口电路。
在智能小车设计中,舵机主要保证小车可以顺利转向,因此舵机的运行电压、转向动作、转向速度都是需要考虑的因素,一般选择舵机时主要选择Futaba3010,选择供电电压为6V。
智能小车系统设计(循迹,超声波,遥控)
<<计算机控制技术综合训练>>任务书年季学期附录:电信学院课程设计报告要求1、设计题目;2、目录;3、本设计的基本原理;4、简要说明本设计内容、用途及特点;5、本设计达到的性能指标;6、设计方案的选择;7、写出各部分设计过程、工作原理、元器件选择;8、绘制图纸(手绘2号图纸);9、设计参考文献;10、附录;11、设计总结体会;12、设计说明书不得少于10000字。
智能小车运行图经过调试,小车完美实现了如下功能1.小车具有无线遥控功能,小车可完成前进、后退、左转、右转等动作,并且可以正确显示当前的速度及行进位移。
2.小车具有循迹及避障功能,实现了舵机转动下的超声波壁障功能,并且可以正确有序显示小车位移、速度及与前方障碍物距离。
3.与其它组的小车模型配合可以完成交替领跑任务。
4.小车所有模式切换均由遥控器控制。
流程图硬件原理图附件一:智能小车系统程序#include <AT89x51.H>#include <intrins.h>sbit AA=P3^0;sbit DD=P3^1;sbit BB=P3^2;sbit CC=P2^2;sbit LCM_RW=P2^4; //定义LCD引脚sbit LCM_RS=P2^3;#define RX P2_0#define TX P2_1#define LCM_E P2_5#define Sevro_moto_pwm P2_7 //接舵机信号端输入PWM信号调节速度#define LCM_Data P0#define Busy 0x80 //用于检测LCM状态字中的Busy标识#define Left_1_led P3_7 //P3_7接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1#define XUNJI_left_led P3_6 //P3_6接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2#define XUNJI_right_led P3_5 //P3_5接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3#define Right_2_led P3_4 //P3_4接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4#define Left_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //左边两个电机向前走#define Left_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //左边两个电机向后转#define Left_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //左边两个电机停转#define Right_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //右边两个电机向前走#define Right_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //右边两个电机向后走#define Right_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //右边两个电机停转void LCMInit(void); //LCD初始化函数void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);//LCD显示一个字符函数void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);//LCD显示一个字符串函数void Delay5Ms(void); //延时5毫秒函数void Delay400Ms(void); //延时400毫秒函数void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM); //LCD1602写数据函数void WriteCommandLCM(unsigned char WCLCM,BuysC);//LCD写命令函数unsigned char ReadStatusLCM(void);unsigned char code Range[] ="V= cm/s S= . m"; //LCD1602显示格式unsigned char code welcome[] ="=== Welcome === ";unsigned char code key[]="Press any key...";unsigned char code ASCII[13] = "0123456789.-M";unsigned char code table[]="Distance:000.0cm";unsigned char code table1[]="YAO KONG MO SHI ";unsigned char code table2[]="=XUN JI MO SHI= ";unsigned char pwm_val_left = 0;//变量定义unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号unsigned int CH0=0; //循迹模式标志unsigned int CH1=0; //超声波模式标志unsigned int t=0; //速度基准变量unsigned int timer=0; //延时基准变量unsigned int time=0;unsigned int pwm=250;unsigned int count1=0; //计左电机码盘脉冲值unsigned char timer1=0; //扫描时间变量unsigned long S1=0;unsigned long S2=0;unsigned long S3=0;unsigned long S4=0;unsigned long S=0;unsigned long V=0; //定义其速度unsigned long SS=0;unsigned char disbuff[4]= { 0,0,0,0,};unsigned char disbuff1[4]={ 0,0,0,0,};void WriteDataLCM(unsigned char WDLCM) //写数据{ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太高可以在这后加小的延时LCM_E = 0; //延时LCM_E = 1;}void WriteCommandLCM(unsigned char WCLCM,BuysC) //写指令,BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;}unsigned char ReadStatusLCM(void) //读状态{LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy); //检测忙信号return(LCM_Data);}void LCMInit(void) //LCM初始化{LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示WriteCommandLCM(0x01,1); //显示清屏WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0c,1); // 显示开及光标设置}//按指定位置显示一个字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCM(X, 1); //发命令字WriteDataLCM(DData); //发数据}//按指定位置显示一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData){unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>0x19) //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]);//显示单个字符ListLength++;X++;}}}//5ms延时void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}//400ms延时void Delay400Ms(void){unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);};}/********************************************************/ void Conut(void) //超声波距离计算函数{while(!RX); //当RX为零时等待TR0=1; //开启计数while(RX); //当RX为零时等待TR0=0;time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.7)/10+10;disbuff1[0]=V%10;disbuff1[1]=V/10;DisplayListChar(0, 0, Range);DisplayOneChar(2, 0, ASCII[disbuff1[1]]);DisplayOneChar(3, 0, ASCII[disbuff1[0]]);disbuff1[0]=SS/10%10;disbuff1[1]=SS/100%10;disbuff1[2]=SS/1000;DisplayOneChar(11, 0, ASCII[disbuff1[2]]);DisplayOneChar(12, 0, ASCII[disbuff1[1]]);DisplayOneChar(13, 1, ASCII[10]);DisplayOneChar(14, 0, ASCII[disbuff1[0]]);disbuff[0]=S%10;disbuff[1]=S/10%10;disbuff[2]=S/100%10;disbuff[3]=S/1000;DisplayOneChar(9, 1, ASCII[disbuff[3]]);DisplayOneChar(10, 1, ASCII[disbuff[2]]);DisplayOneChar(11, 1, ASCII[disbuff[1]]);DisplayOneChar(12, 1, ASCII[10]);DisplayOneChar(13, 1, ASCII[disbuff[0]]);}/********************************************************/ void Conut0(void) //循迹模式显示{disbuff1[0]=V%10;disbuff1[1]=V/10;DisplayListChar(0, 0, Range);DisplayOneChar(2, 0, ASCII[disbuff1[1]]);DisplayOneChar(3, 0, ASCII[disbuff1[0]]);disbuff1[0]=SS/10%10;disbuff1[1]=SS/100%10;disbuff1[2]=SS/1000;DisplayOneChar(11, 0, ASCII[disbuff1[2]]);DisplayOneChar(12, 0, ASCII[disbuff1[1]]);DisplayOneChar(13, 0, ASCII[10]);DisplayOneChar(14, 0, ASCII[disbuff1[0]]);}/********************************************************/ void StartModule() //启动模块{TX=1; //启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;}/********************************************************/ /*void delayms(unsigned int ms){unsigned char i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}}*/void Timer_Count(void) //超声波高电平脉冲宽度计算函数{TR0=1; //开启计数while(RX); //当RX为1计数并等待TR0=0; //关闭计数Conut(); //计算}/******************************************************************** ****///前速前进void run(void){Left_moto_go ; //左电机往前走Right_moto_go ; //右电机往前走}/******************************************************************** ****///前速后退void backrun(void){Left_moto_back ; //左电机往前走Right_moto_back ; //右电机往前走}/******************************************************************** ****///左转void leftrun(void){Left_moto_back ; //左电机往前走Right_moto_go ; //右电机往前走}/******************************************************************** ****///右转void rightrun(void){Left_moto_go ; //左电机往前走Right_moto_back ; //右电机往前走}/******************************************************************** ****///STOPvoid stoprun(void){Left_moto_Stop ; //左电机停走Right_moto_Stop ; //右电机停走}/******************************************************************** ****/void COMM( void ){V=0;push_val_left=5; //舵机向左转90度timer=0;while(timer<=4000); //延时400MS让舵机转到其位置 4000StartModule(); //启动超声波测距Conut(); //计算距离S2=S;push_val_left=23; //舵机向右转90度timer=0;while(timer<=4000); //延时400MS让舵机转到其位置StartModule(); //启动超声波测距Conut(); //计算距离S4=S;push_val_left=14; //舵机归中timer=0;while(timer<=4000); //延时400MS让舵机转到其位置StartModule(); //启动超声波测距Conut(); //计算距离S1=S;if((S2<300)||(S4<300)) //只要左右各有距离小于,30CM小车后退 {backrun(); //后退timer=0;while(timer<=1000);}if(S2>S4){rightrun(); //车的左边比车的右边距离小右转 timer=0;while(timer<=800);}else{leftrun(); //车的左边比车的右边距离大左转timer=0;while(timer<=800);}}/****************************************************/void pwm_Servomoto(void){if(pwm_val_left<=push_val_left)Sevro_moto_pwm=1;else Sevro_moto_pwm=0;if (pwm_val_left>=100)pwm_val_left=0;}/***************************************************////*TIMER1中断服务子函数产生PWM信号*/void time1()interrupt 3 using 2{TH1=(65536-100)/256; //100US定时TL1=(65536-100)%256;timer++; //定时器100US为准。
小车往返运动控制设计
1.总体要求:对每一课题必须绘制运行工序图,设计的PLC控制系统包括:PLC I/O分配、控制线路图设计、梯形图设计;将设计的PLC程序利用手持式编程器送入PLC 并调试通过,符合课题提出的控制要求后,提交现场验收。
实验报告书在提交上述内容的基础上,还要讨论调试心得。
2.实验课题课题一:小车往返运动控制小车往返运动情况参如图1。
SQ2SQ3SQ1图 1初态:小车启动前位于导轨的中部(如图1中位置),运行要求如下:1)按启动按钮SB1,小车前进,到SQ1处后小车后退;2)小车后退至SQ2处停车,延时5S后第二次前进,到SQ3处后再次后退;3)后退至SQ2处停车。
要求:设计PLC控制系统,必须采用基本逻辑指令编程。
流程图:电气控制线接线图:梯形图:指令表:LD X1 LD X3 LD X4 LD X5OR Y0 OR Y1 OR M0 OR M1OR T0 OR X5 MPS ANI X1LDI X3 ANI X4 OUT T0 OUT M1OR M0 ANI Y0 K50 ENDANB OUT Y1 MPPANI X5 ANI X1ANI M1 OUT M0ANI Y1OUT Y0课题二:三台电机顺序控制三台电机顺序控制要求如下:M1运行10S 后停止,M2自行启动;M2运行5S 后停止,M3自行启动;M3运行5S后停止,M1重新自行启动运行,如此反复三次后所有电机停止运行。
要求:设计PLC控制系统,必须采用基本逻辑指令编程。
流程图:电气控制线路图:接线图:梯形图:指令表:LD M8002 LD T0 LD T1 RST C0 OR Y1 OR Y2 LD X1 MPS MPSRST C0 OUT T1 OUT T2 LD X1 K50 K50 OR T2 MPP MPPOR Y0 ANI T1 ANI T2 MPS OUT Y1 OUT Y2 OUT T0 LD T2 K100 OUT C0 MPP K3ANI C0 ENDANI T0 OUT Y0课题三:小车装卸料控制小车装卸料过程情况参图2。
电子设计大赛运动小车追踪系统运作设计方案
电子设计大赛运动小车追踪系统运作设计方案1.系统方案设计1.1 设计任务(1)制作遥控电动小车,具有遥控前进、转向、倒车功能,可实时显示小车当前运动速度,并无线传输至遥控器端显示,速度误差小于10%,小车速度大于 0.1 米/ 秒。
(2)制作小车位置跟踪节点,可实时测量小车与已知点距离及速度,测量误差小于 10%。
(3) 增加小车运动位置跟踪节点,可在平面进行位置定位,示意图如下 , 定位误差小于 10%。
(4)将各小车位置跟踪节点数据传输至遥控器并进行实时位置显示。
2.方案论证与选择2.1单片机的选定方案一:采用型号为AT89C52 的单片机作为主控制器,使用霍尔传感器进行测量的直流电机转速测量系统。
AT89C52 是带 4K 字节闪烁可编程擦除只读存储器的低电压、高性能 CMOS8位微处理器。
它将多功能 8 位 CPU和闪烁存储器组合在单个芯片中,为许多控制提供了灵活性高且价格低廉的方案[3] 。
方案二:采用单片机 C8051F060 作为主控制器,使用霍尔传感器进行测量的直流电机转速测量系统。
C8051F060 系列单片机是美国 CYGNAL 公司推出的一种与 51 系列单片机核兼容的单片机[4]。
C8051F060 作为新一代 8051 单片机,具有功能强大、体积小、工作稳定等特点,适用于复杂控制系统。
因此选择方案一。
AT89C52是美国 ATMEL公司生产的低电压,高性能 CMOS8位单片机。
片含8kbytes 的可反复擦写的只读程序存储器( PEROM)和 256bytes 的随机存储数据存储器( ROM),器件采用 ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及 8052 产品引脚兼容,片置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强大的 AT89C52单片机适合于许多较为复杂的控制应用场合。
3.系统功能模块的划分按照设计要求,系统可以分为以下几个基本功能模块:电源模块、红外发射模块、键盘模块、红外接收模块、电机驱动模块以及辅助模块,超声波定位模块等。
遥控电动小车装置的设计制作
遥控电动小车装置的设计制作山东水利职业学院王海港密善龙陈奎杰专家点评:本文涉及一台遥控电动小车控制系统的设计与制作。
该系统以89C52单片机为核心控制器,包含主控制器模块、电机驱动模块、液晶显示模块、键盘模块、测距模块、蓝牙通信模块、电源模块等。
通过手持无线遥控器,能控制小车前进、转向、倒退、精确转弯、自动定位等功能,实现题目所要求的任务。
本文系统方案及器件选型描述详尽,但报告结构不完整,缺乏理论分析计算和测试方案与数据,需要继续完善。
评阅人:青岛大学电工电子实验教学中心杨艳副教授摘要:本系统以89C52单片机为核心控制器,包含了主控制器模块、电机驱动模块、液晶显示模块、键盘模块、测距模块、蓝牙通信模块、电源模块等。
进而设计制作出一台具有自动运行的智能小车控制系统。
本系统以两个步进电机作为驱动,通过各类传感器件来采集各类信息,通过2.4GHz蓝牙通信模块实现小车在手持无线遥控器的控制下前进、转向、倒退、小车精确转弯、自动定位等功能,实现所要求的任务。
本智能小车系统具有很高的灵敏度和精确度,操控简单、便捷。
关键词:89C52单片机;电机驱动;蓝牙通信一、 总体方案论证1.1 设计要求1.1.1基本要求(1)电动小车能在无线遥控器的控制下前进、转向、倒退,遥控距离不少于5m 。
(2) 电动小车能在无线遥控器的控制下从指定的A 点到达指定的B 点,要求电动小车达到B 点的时间尽量短,在B 点的定位误差不大于10%。
(3)手持无线遥控器能在120cm*120cm 的范围内,实时显示电动小车位置的X 、Y 坐标值(坐标原点可自定义),即电动小车能将其位置的坐标值实时传送至手持无线遥控器。
要求定位误差不大于10%,显示刷新时间不大于0.5秒。
1.2 系统总体框图本设计要求能够实现电动小车在手持无线遥控器的控制下前进、转向、倒退等功能,而且能够将其位置的坐标值实时传送至手持无线遥控器。
考虑这些要求我们决定用步进电机和单片机等组成核心电路。
基于51单片机红外遥控小车制作报告(原创)PPT课件
若电刷A是正电位,B是负电位,在N极范围内的导体ab中的电流是从
a流向b,在S极范围内的导体cd中的电流是从c流向d。载流导体在磁
场中要受到电磁力的作用,因此ab与cd两导体都受到电磁力的作用。
根据磁场方向和导体中的电流方向,利用电机左手定则判断,ab边受
力的方向是向左的,而cd边则是向右的。由于磁场是均匀的,导体中
•
3.易于控制,可靠性高。
•
4.调速时的能量损耗较小。
•
所以,在调速要求高的场所,如轧钢机、轮船推进器、电机、电
气铁道牵引、高炉送料、造纸、纺织、拖动、吊车、挖掘机械、卷扬
机拖动等方面,直流电机均得到广泛的应用。
• 二、直流电机的基本工作原理
•
直流电机工作原理:当电刷A,B接在电压为U的直流电源上时,
• 2 遥控发射器及其编码
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不 同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为 0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二制的“0”;以 脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的 “1”,其波形如图2 所示。
路方便地控制三极管的开关。
• 图所示就是基于这种考虑的改进电路,它在基本H桥电路的基础上增加 了4个与门和2个非门。4个与门同一个“使能”导通信号相接,这样, 用这一个信号就能控制 整个电路的开关。而2个非门通过提供一种方向 输人,可以保证任何时候在H桥的同侧腿上都只有一个三极管能导通。 (与本节前面的示意图一样,图所示也不是一个完整的电路图,特别是 图中与门和三极管直接连接是不能正常工作的。)
① 脉冲信号输出接,直接接单片机的IO 口。 ② GND 接系统的地线(0V); ③ Vcc 接系统的电源正极(+5V);
单片机无线遥控小车设计PPT课件
•{
•
int j;
•
for(j=n;j>0;j--)
•
Hardware_delay_1ms();
•}
• int P3_5state(void)
•{
• return (P3&0x20)?1:0; //返回P1_2的状态
•}
• int main(void)
第12页/共32页
• 说明:
• 保持机器人与串口线的连接;
相应的反应。
第17页/共32页
• 2.2.3 小车的循迹程序
• #include <uart.h>
• #define LD1 P1_2; //左左检测灯
• #define LD2 P1_3; //中左检测灯
• #define RD1 P3_5; //中右检测灯
• #define RD2 P3_6; //右右检测灯
• sbit LD2=P1^3;
//中左检测灯
• sbit RD1=P1^4;
//中右检测灯
• sbit RD2=P1^5;
//右右检测灯
• sbit LeftIR=P3^5; //左边红外接收连接到P3_5
• sbit RightIR=P3^6; //右边红外接收连接到P3_6
• sbit LeftLaunch=P2^3; //左边红外发射连接到P2_3
第2页/共32页
1.2智能小车硬件模块 智能小车主要机构——从侧面观察各板的排列。
各个模块附图如下:
第3页/共32页
红外避障模块
第4页/共32页
红外循迹模块
第5页/共32页
遥控发射端
第6页/共32页
无线遥控接收端
51单片机智能小车前后左右综合运动程序源代码、电路原理图和电路器件表
51单片机智能小车前后左右综合运动程序源代码、电路原理图、电路器件表我们控制智能小车运动时:要让智能小车前进只需要让智能小车的4个轮子以同样的速度向前转动;要让智能小车后退只需要让智能小车的4个轮子以同样的速度向后转动;要让智能小车向左转只需要智能小车右侧的2个轮子以同样的速度向前转动而左侧的2个轮子停止转动;要让智能小车向右转只需要智能小车左侧的2个轮子以同样的速度向前转动而右侧的2个轮子停止转动;要让智能小车顺时针转只需要智能小车左侧的2个轮子以同样的速度向前转动而右侧的2个轮子以同样的速度向后转动;要让智能小车逆时针转只需要智能小车右侧的2个轮子以同样的速度向前转动而右侧的2个轮子以同样的速度向后转动。
要让智能小车停车只需要智能小车左侧和右侧的轮子都停止转动。
相关函数如下:void CAR_FORWARD(void){ZUO_MOTOR_ZZ();YOU_MOTOR_ZZ();} //小车前进void CAR_BACK(void){ZUO_MOTOR_FZ();YOU_MOTOR_FZ();} //小车后退void CAR_LEFT(void){ZUO_MOTOR_TZ();YOU_MOTOR_ZZ();} //小车左转void CAR_RIGHT(void){ZUO_MOTOR_ZZ();YOU_MOTOR_TZ();} //小车右转void CAR_CLOCKWISE(void){ZUO_MOTOR_ZZ();YOU_MOTOR_FZ();} //小车顺时针转void CAR_ANTICLOCKWISE(void){ZUO_MOTOR_FZ();YOU_MOTOR_ZZ();} //小车逆时针转void CAR_STOP(void){ZUO_MOTOR_TZ();YOU_MOTOR_TZ();} //小车停止void ZUO_MOTOR_ZZ(void){U6_L293D_In1_In3=1;U6_L293D_In2_In4=0;}//左侧电机正转void ZUO_MOTOR_TZ(void){U6_L293D_In1_In3=0;U6_L293D_In2_In4=0;}//左侧电机停转void ZUO_MOTOR_FZ(void){U6_L293D_In1_In3=0;U6_L293D_In2_In4=1;}//左侧电机反转void YOU_MOTOR_ZZ(void){U7_L293D_In1_In3=0;U7_L293D_In2_In4=1;}//右侧电机正转void YOU_MOTOR_TZ(void){U7_L293D_In1_In3=0;U7_L293D_In2_In4=0;}//右侧电机停转void YOU_MOTOR_FZ(void){U7_L293D_In1_In3=1;U7_L293D_In2_In4=0;}//右侧电机反转接下来,我们看主函数相关的语句,如下:void main(void){while(1){。
HJD-4实验教学装置PLC控制系统设计运动小车PLC控制系统设计
目录1 课程设计题目及要求 (1)1.1 设计题目 (1)1.2 控制要求 (1)1.3 系统总体方案设计 (1)2 PLC工作原理 (3)2.1 PLC工作原理及扫描工作方式 (3)2.2 FX2N-48MR型PLC (3)3 控制系统设计 (5)3.1 控制系统设计 (5)3.2 PLC (I/O) 分配 (5)3.3 程序设计 (6)4 监控界面设计 (8)4.1 组态软件介绍 (8)4.2 监控界面开发过程 (9)5 运行调试 (16)5.1 调试过程 (16)5.2 调试中出现的问题及解决方法 (16)5.3 结果分析 (17)6 总结 (18)7 参考文献 (19)8 附录 (20)1 课程设计题目及要求1.1设计题目运动小车PLC控制系统设计1.2 控制要求(1)运动小车要求自动/手动两种控制方式(2)自动控制方式:根据上位机的监控界面,按下启动按钮,小车慢速左行(右行),当到达左限位(右限位)时,小车延时1秒后,向相反的方向高速运行,当到达限位时,再换向慢速运行,运行到中间位置,小车停止运行。
小车运行到任意位置,可随时停车。
电机采用双速电机。
(3)手动控制方式:根据上位机的监控界面,按下控制按钮,可选择小车左右行;运行中可任意换向;运行中高速/低速转。
1.3 系统总体方案设计(1)控制要求分析小车具有手动和自动两种控制模式,自动运行时,小车慢速左行(右行),当到达左限位(右限位)时,小车延时1秒后,向相反的方向高速运行,当到达限位时,再换向慢速运行,运行到中间位置,小车停止运行。
手动运行时,小车在运行中可以任意转换高、低速,左、右行。
(2)确定输入输出设备实验采用组态软件设计的监控界面控制输入,通过FX2N-48MR型PLC输出信号控制接触器触头的开关,来控制小车的方向、速度。
电机采用双速电机。
(3)I/O分配确定I/O分配,画出硬件接线图(4)PLC程序设计本实验采用顺序控制设计方法设计PLC程序(5)监控界面设计用力控组态软件设计小车监控界面,控制小车的运行状态,制作出小车实时动画效果。
多功能智能小车的控制系统设计
感Байду номын сангаас观看
2、2传感器数据处理
传感器可以感知周围环境并传递给控制器处理。本设计采用中断处理的方式 读取传感器的数据,并通过算法实现障碍物的检测和避障。
2、3电机控制
电机驱动电路需要实现电机的正反转和速度控制。本设计通过STM32单片机 的PWM信号输出控制电机的速度,并通过控制信号的逻辑组合实现电机的正反转。
1、4电源系统
电源系统是智能小车的能量来源,它需要提供稳定的电压以保障系统的正常 运行。本设计采用锂电池作为电源,并通过稳压芯片实现电源的稳定输出。
二、软件设计
2、1控制逻辑
智能小车的控制逻辑是软件设计的核心,它包括前进、后退、左转、右转、 停止等操作。本设计采用STM32单片机的C语言开发环境进行编程,实现各种操作 的控制逻辑。
1、传感器技术:传感器是智能小车的“眼睛”,它能够感知周围环境,为 小车提供准确的导航和障碍物信息。激光雷达、摄像头、超声波传感器等是常用 的传感器类型。
2、芯片技术:芯片作为智能小车的“大脑”,负责处理传感器采集的数据, 并发出控制指令,实现小车的自动驾驶。高性能的芯片能够提高数据处理速度和 准确性。
智能小车可以分为多种类型,包括无人驾驶小车、搬运型小车和巡检型小车 等。这些智能小车都具有以下功能:
1、自动驾驶:智能小车采用传感器、算法和导航系统等技术实现自动驾驶, 根据设定路径自动行驶,无需人工干预。
2、货物运输:智能小车可用于货物运输,将货物从一个地方自动运输到另 一个地方,提高物流效率。
三、控制系统软件设计
1、导航与定位:通过GPS和IMU(惯性测量单元)进行定位,通过路径规划 算法确定小车的行驶路径。
2、障碍物识别与避障:通过摄像头和图像处理算法识别障碍物,通过控制 算法(如PID控制器)控制小车避开障碍物。
智能小车系统设计流程图
B时间误差:我们采用单片机内部计数器检测时间,精度较高但受外部显示位数限制无法完全显示!
四结束语
从本次设计大赛的汽车自动控制中体会到,要对高速行驶中的汽车实施控制并不是一个简单的自动控制问题,它涉及到了机械学、力学、光学、电磁学等方面的知识,并与单片机相互配合,利用了单片机的强大功能实现了带速度反馈的闭环速度控制系统、智能转向系统、防止车轮打滑等功能。从最终测试结果来看,本系统具有较强的环境适应能力,很好的完成了题目的要求!
1-4
(3)单片机控制部分
控制部分采用了主从结构,主控制器负责黑线检测,金属检测,电机驱动等工作。从控制器负责显示,路程计算,速度计算,运行时间计算等工作。主从之间采用波特率为19200的串行通信。具体电路见1-5。
2:系统的软件设计
(1)路面检测程序流程图见1-6。外部四组红外线检测传感器共用一个中断源,进入中断服务程序后查询具体是哪一路传感器遇到黑线。
次数
1
2
3
4
显示距离
713
721
724
718
1-8
C运行时间测试
测量运行一次的时间数据见表1-9
实际时间
7.4
7.3
7.3
8.2
显示时间
7
7
7
8
1-9
(3)误差分析
A速度、路程误差:由于我们采用的霍尔元件检测速度和路程,轮圈直径太小不方便加装过多的磁铁,这是导致速度路程误差的主要原因!另外小车运行过程中路程是一随机状态误差再所难免!
基于单片机控制的智能自动往返小汽车设计
基于单片机控制的智能自动往返小汽车设计随着现代科技的发展和自动化水平的提高,智能小汽车作为生活中的常用工具,人们对其智能性、可靠性等提出了越来越高的要求,因此需要对智能小汽车进行优化设计. 本文对硬件系统和主要功能模块进行了规划,设计了一个基于单片机控制的自动往返小汽车系统,以STC89C52 单片机为核心器件,可实现电动小汽车的速度控制、自动停车、往返控制等功能,从而满足人们对小汽车智能化功能的要求.1 系统总体设计系统设计以单片机STC89C52 芯片为核心控制部件,LG9110 作为电机驱动芯片,利用传感器检测技术原理、AD 画图、KEIL 软件编程,将程序烧录到单片机中,实现各个子模块的功能. 此外,系统采用红外探测法来检测实时路况信息,并通过PWM 调制自动调节电机转速. 系统总体设计框图如图1 所示.图1 系统总体设计框图2 系统硬件设计系统硬件模块设计主要包含电机驱动模块、路况检测模块、智能防撞报警模块、寻迹模块等.2.1 电机驱动模块电机驱动模块是目前遥控小车普遍采用的驱动模块[3]. 直流电机有两个控制端,通过设置输入电平值来改变电机的运转,单片机通过控制引脚电平的高低来控制直流电机的转速. 由于单片机自身管脚输出的高电平电压很小,不足以驱动电机进而带动整个小车运行,因此最适合小车驱动的是运用电机驱动芯片来完成,我们采用的是电机驱动芯片LG9110.2.2 路况检测模块该模块使用红外探测法. 由于黑线和白纸对光线的反射系数不同,故可根据接收到反射光的强弱来判断路面情况和前方是否存在障碍物. 红外发射管发射红外信号,经路面反射后传给红外接收管进行判断处理. 上电后,红外发射管导通,向地面以及前方发射红外信号,当遇到白色路面时,红外信号经白色路面进行漫反射,这时红外接收探头刚好接收到红外信号,探头导通,将低电平送给单片机进行判断处理.2.3 智能防撞报警模块智能小车能够自动识别前方的障碍物,如果有障碍物则调节小车的运动轨迹来避开障碍物,同时在遇到障碍物时,能够报警提示.2.4 寻迹模块所谓寻迹,就是在一条有弯曲黑线的白纸跑道上,利用红外线在不同颜色的物理表面具有不同的反射性质的特点来改变小车的运行轨迹. 小车在行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,而当红外光遇到黑色地面时,不产生反射. 如果小车右边稍微跑出黑色跑道,发出的红外光就会遇到白色地面而产生漫反射,这时旁边的黑色接收探头接收到反射信号后会导通. 探头接收到红外信号,会产生一个低电平,送给单片机处理,使小车进行左转操作;同理,当小车左边跑出黑线时,左侧探头识别之后给小车低电平,提示小车右转,这样就完成了小车的自动寻迹功能.3 系统软件设计在系统软件设计时,我们将所有的模块程序嵌入到单片机中,这种嵌入式设计主要是为了便于控制,且不占用CPU 资源,因为寻迹模块以及避障模块等都同时用到了实时检测扫描,这样不仅占CPU,而且多个程序同时运行还会产生冲突. 系统程序设计流程图如图2 所示.软件设计主要子模块介绍:(1) 红外解码的实现红外解码是实现小车的自动寻迹功能的前提条件,因此单片机的红外解码是贯穿整个程序设计的主线,在整个系统中起着重要作用.(2) 电机驱动从实际情况来说,在整个系统中,电机的驱动在小车运行中占据主导地位,是很重要的一部分,同时也是小车在接收到控制命令之后单片机的最终输出部分,是所有模块在执行控制命令时的外在表现.图2 系统程序设计流程(3) 小车寻迹寻迹的基本原理:黑白跑道对红外光的反射不同. 所以通过编写扫描单片机管脚值的程序,来实现相应功能. 小车寻迹模块的程序流程如图3 所示.(4) 小车防撞报警开启小车防撞功能时,主程序调用防撞报警子函数,当道路前方遇到障碍物时,小车内部的防撞函数将调用电机驱动子函数来调节小车的运行轨迹,避免小车撞击障碍物,同时报警提示.图3 寻迹程序流程图4 系统功能实现4.1 硬件作品(1) 对基于单片机控制的自动往返小汽车主要的STC89C52 核心主控模块、电机驱动模块、显示模块、避障模块进行组装,确保接线无误,完成实物的制作. 硬件作品如图4 所示.(2) 接通电源,整个小车处于启动状态,由于小车头部下方的红外探头未接收到自身发出的红外光,小车不运动,处于静止状态. 启动状态如图5 所示.图4 作品实物图5 小车启动状态(3) 在接通电源的状态下,将手放在左红外探头的下方,红外探头发出的红外光由于碰到手指发生漫反射而被探头接收,从而驱动电机驱动模块,左电机处于运行状态,左轮向前转动. 同理,右轮向前转动. 运动状态如图6 所示.图6 小车运动状态4.2 功能实现本系统实现的主要功能如下:(1)实现小汽车自动往返;(2)当小汽车偏离行驶轨道时,会及时转向,返回跑道;(3)当检测到障碍物时,能自动报警.STC89C52 芯片可以发挥数据处理与实时控制的功能,提高整个系统灵敏度. 当要驱动自动小车前进时,可以通过寻迹模块返回给单片机的信号,使单片机做出相应的控制判断,进而控制电机驱动模块,同时还需要进行PID 算法的测试,精准地控制自动小车在黑线上实现前进、后退和转向,从而实现小车自动往返.4.3 系统实现效果评价对系统功能进行了分析、拓展和延伸,其根本目的是为了实现小汽车的智能化. 通过系统调试,本设计可实现小汽车的自动寻迹和报警功能,且系统设计稳定. 实验结果与理论分析吻合较好,表明该设备在技术上有一定智能性和可靠性.5 总结本文采用的是以STC89C52 为核心的单片机,LG9110 为电机驱动芯片,利用传感器检测技术,结合硬件AD 画图及软件KEIL 的编译与烧录[5],使单片机控制的小汽车能自动寻迹、防撞报警,从而实现小车的自动往返功能. 本设计最大的特色:无需有线或者无线遥控来控制小车的往返,只需要装上电源,其他功能都可以由单片机来实现,消除了一般玩具小车需无线或有线控制的弊端,是未来玩具小车发展的趋势;同时也可以推广至公交车,实现无人驾驶,降低安全事故的发生,既环保又安全,因此具有一定的应用价值.。