温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
简单
路径
规划
轮式
移动
机器人
系统
基于简单路径规划的避障轮式移动机器人系统
——直流电动机驱动子系统设计
1. 系统概述
本设计的目的是设计一种基于简单路径规划的避障轮式移动机器人,完成在简单环境下的避障跟踪任务。通过超声测距系统,测量小车与障碍物之间的距离。小车由两个直流电机分别对两轮进行驱动;同时,通过电子罗盘系统,通过主控单片机的控制,进行姿态调整;通过光电测速系统测量小车行进速度,并反响给主控单片机,从而实时改变小车速度。
2. 设计方案
本设计的移动机器人按照其功能可分为四个子系统〔图1〕:直流电动机驱动子系统、电子罗盘子系统、光电测速子系统和超声测距子系统。
其中,直流电动机驱动子系统采用集成电路驱动器L293D控制机器人左右两个直流电动机,电动机可以正转也可以反转,L293D的使能信号和方向控制信号由型号为AT89C52的51系列单片机的并行I/O口使能或驱动。电机的调速采用脉宽调制( PWM )方式进行,PWM信号时序由单片机定时器〔可用T0、T1和T2〕产生。
电子罗盘子系统选用电子罗盘、电子指南针相关检测地磁的数字罗盘芯片,提取地磁偏转信号,经A/D转换或其它变换转换为二轴地磁偏角数字量采用串行传输方式传送给主控单片机。
光电测速子系统选用红外对管并配合安装于车轮上的光电码盘检测车轮转动的角位移,并与单片机定时器配合计算出机器人小车移动的线速度和加速度,并将其传送给主控单片机。
超声测距子系统选用超声换能装置,并采用带锁相环的音频译码集成芯片LM567,将小车距离障碍物的距离检测出来,并将其传送给主控单片机。
避障轮式移动机器人
超声测距子系统
光电测速子系统
电子罗盘子系统
直流电机驱动子系统
图1. 系统结构
由于移动机器人系统设计比拟复杂,软硬件任务结合紧密,必须综合考虑软硬件资源,合理分配整个设计过程。以下列图2说明了整个系统的设计工作流程。
图2. 系统设计工作流程
这里,我选取直流电机驱动子系统作为详细设计局部。
3. 直流电机驱动子系统的详细设计
3.1 硬件选择
3.1.1 AT89C52
单片机是整个小车系统的核心,控制所有模块,本系统采用型号为AT89C52〔图3〕的51系列单片机。
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器〔RAM〕,器件采用ATMEL 公司的高密度、非易失性存储技术生产,与标准MCS-51 指令系统及8052产品引脚兼容,片内置通用8位中央处理器〔CPU〕和Flash 存储单元,功能强大AT89C52 单片机适合于许多较为复杂控制应用场合。
其主要性能参数:
·与MCS-51产品指令和引脚完全兼容;
·8k字节可重擦写Flash闪速存储器;
·1000次擦写周期;
·全静态操作:0Hz-24MHz;
·三级加密程序存储器;
·256×8字节内部RAM;
·32个可编程I/O口线;
·3个16位定时/计数器;
·8个中断源;
·可编程串行UART通道;
·低功耗空闲和掉电模式.
AT89C52提供以下标准功能:8k字节Flash 闪速存储器,256字节内部RAM,32 个I/O 口线,3 个16 位定时/计数器,一个6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
图3 AT89C52引脚排列图
3.1.2 L293D
本设计采用的是双轮差速控制方式,每个车轮分别由一个直流电机单独控制,移动机器人的速度和转向的控制主要是通过对这两个电机的控制来实现的。我们采用集成电路驱动器L293D控制机器人左右两个直流电动机。
L293D是美国德州仪器生产的一款电机控制器件,该器件具有4个大电流半H驱动结构,这种结构可以在4.5 V~36 V电压的下提供高达600 mA的电流。该器件主要用于驱动感性负载,如继电器、螺线管、直流或者双极性步进电机等。
L293D具有如下特性:
·每个电机可提供高达600 mA的驱动电流;
·每个驱动提供高达1.2 A的脉冲电流;
·宽电压范围4.5 V~36 V;
·隔离的逻辑电平电源;
·热耗少;
·内部ESD保护;
·抗噪性能好.
L293D的引脚排列如图4所示
图4. L293D引脚排列图
引脚2、7、10、15为控制信号输入端,用于控制电机的工作状态。而引脚3、6、11、14为电机控制输出端,用于直接控制电机的动作。
该器件的所有输入与TTL兼容,其输出采用达林顿晶体管接收器和伪达林顿源构成的“图腾柱〞驱动电路。电机驱动使能由引脚1控制电机1,引脚9控制电机2。当EN引脚置为高电平,与之相对应的电机就处于使能状态,从而激活电机控制输出。
与VS 端口隔离的VSS 端口可提供逻辑输入,以减小电源功耗。L293D可以工作在0℃~70℃的范围内。
3.2 硬件设计
硬件设计电路如图5所示。
图5. 电机控制驱动电路
采用2个桥式电路的芯片L293D直接控制2个电机。L293D是驱动二相和四相步进电机的专用芯片,即内含2个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动36V、2A以下的电机。L293D可驱动2个电机,3、6和11、14脚之间分别接2个电动机。2、7、10、15脚接输入控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机停转。单片机输出2组PWM波,每1组PWM波用来控制1个电机的速度。另外2个I/O口可以控制电机的正反转。控制方法与控制电路都比拟简单。即2、7脚控制第1个电机的方向,输入的ENA控制第1个电机的速度;10、15脚控制第2个电机的方向,输入的ENB控制第2个电机的速度。
单片机P1口对L293D的控制如下表所示:
表1. P1口对L293D控制信号
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
电机运动
x
x
x
x
0
0
停止
0
1
0
1
1
1
前进
1
0
1
0
1
1
后退
1
0
0
1
1
1
左转
0
1
1
0
1
1
右转
脉冲宽度调制(Pulse Width Modulation-PWM)控制,通常配合桥式驱动电路实现直流电机调速,非常简单,且调速范围大。它的原理就是脉冲宽度调制将输出信号的根本周期固定,通过调整根本周期内高电平工作周期的大小来控制输出功率。电机的转速和电机两端电压成正比例,而电机两端的电压与控制波形的占空比成正比,因此电机的速度与占空比成正比,占空比越大,电机转得越快,当占空比到达1时,电机转速最大。在实际制作过程中采用软件模拟PWM输出调制的方法,控制信号的频率不需太高,一般在1.5 kHz以下为宜。本设计最终采用的信号频率为1 kHz,在小车正常直线行进过程中,使能端直接接高电平,电机全速转动。在转弯时才进行占空比调制,占空比的大小决定了小车转向的快慢,占空比太小时,电机几乎不转,转向最快,但有可能使小车摇摆不定;占空比太大时,2电机转速差很小,小车将转向很慢。
3.3 软件设计
主控单片机AT89C52主要用于接收控制信号并执行相应操作。主要包括小车的停止、前进、后退、左转、右转等。以下列图5给出了移动机器人主控软件设计流程。
系统初始化
扫描控制信号
判断控制信号类型
前进
停止
右转
左转
后退
图5. 主控软件流程图
以下给出单片机通过L293D控制电机的接口程序代码:
.public_F_MotoRun
_F_MotoRun:.proc
push bp to[sp];
bp=sp+3;
r1=[bp+1];
r3=0xf3ff;
[P_IOA_Dir]=r3;
[P_IOA_Attrib]=r3;
r4=0xffff;
[P_IOA_Data]=r4;
run:cmp r1,0;
jnz left;
//IOB3 input1 IOB4 input2 IOB5 input3 IOB6 input4 IOB0 En1
IOB1 En2
r2=0x002b;
//0000 0000 0010 1011
r1=[P_IOB_Data];
r1=r1|r2;
r2=0xffaf;
//1111 1111 1010 1111
r1=r1&r2;
[P_IOB_Data]=r1;
jmp finish;
left:cmp r1,1;
jnz right;
r2=0x000b;
//0000 0000 0000 1011
r1=[P_IOB_Data];
r1=r1|r2;
r2=0xff8f;
//1111 1111 1000 1111
r1=r1&r2;
[P_IOB_Data]=r1;
jmp finish;
right:cmp r1,2;
jnz stop;
r2=0x0023;
//0000 0000 0010 0011
r1=[P_IOB_Data];
r1=r1|r2;
r2=0xffa7;
//1111 1111 1010 0111
r1=r1&r2;
[P_IOB_Data]=r1;
jmp finish;
stop:r1=0x0000;//0000 0000 0000 0000
[P_TimerA_Ctrl]=r1;
[P_TimerB_Ctrl]=r1;
r2=0xff87;//1111 1111 1000 0111
r1=[P_IOB_Data];
r1=r1&r2;
[P_IOB_Data]=r1;
finish:
pop bp from[sp];
call_ClearWatchDog
retf
.endp
4. 结束语
经过一个学期的学习,从对移动机器人一无所知到有所了解,再到对其整体构架和内部组成有了一定的了解,这个过程是艰辛的,也是快乐的。本设计中,主要对移动机器人的直流电机驱动进行设计,其中包括软硬件的设计。由于是第一次接触到这个领域,其中肯定存在许多的缺点和缺乏,还望指正,谢谢!
参考文献
[1] 金文俊. 自主移动机器人的定位与运动控制. 浙江工业大学硕士学位论文,2023.
[2] 张拓. 基于AT89S52单片机的智能循迹机器人的设计[J]. 工业安全与环保,2023, 34 (11): 36-38.
[3] 肖 伟,武 强, 闫秀桃,刘 根. L293D在护士移动机器人主控电路板设计中的应用[J]. 国外电子元器件, 2023, 11: 64-66.
[4] AT89C52, L293D芯片资料.
[5] 21ic
附录
PCB原理图