3.7 货架的设计与制作
货架如图3.10 所示。
210mm110mm所示,1为货架,2为货物,货架分为两层,货物由塑料泡沫切成。
3.8 本章小结
本章概括地介绍了“轮式自动定位抓捕器”方案相关的单片机STC89C52RC的引脚及基本参数,具体说明了直流电机及其驱动芯片的工作原理及控制方法,并设计了红外传感器的基本原理和接线方式,分析了各硬件电路的工作原理,陈述了提升架与货架的设计和制作过程;另外经过大量考察设计并制作轮式自动定位抓捕器的硬件行进布局图。为系统的联合调试奠定了坚实的理论基础。
290mm
80mm60mm50mm70mm95mm1图3.10 货架设计图
216
第4章 轮式自动抓捕器系统的软件设计
本章主要从软件方面论述轮式自动定位抓捕器系统的设计与实现方法。包括系统运行的主程序、循迹子程序、提升与抓捕子程序、测距子程序、以及显示子程序。通过流程图以及部分程序详细地描述了小车路面检测、提上与抓捕、测距以及显示的设计原理及实现方法
4.1主程序的设计
本设计采用STC公司的STC89C52芯片作为主控芯片,实现对轮式自动定位抓捕器的控制,主要用到的技术是利用定时器向I/O输出PWM波形来控制减速电机以及舵机。
设计的轮式自动抓捕器系统的主程序流程图如图4.1所示。
开始初始化小车前进是是否偏离道路否否纠偏控制是否找到货架A是抓取货物是否偏离道路否否是纠偏控制是否找到货架B是放置货物返回起点结束 图4.1 轮式自动抓捕器系统的主程序流程图
17
系统上电,程序开始执行。首先对硬件进行初始化,然后LCD12864显示作品相关信息,接着电机工作,驱动小车向前行驶。在前进过程中采用查询方式不断对各I/O口进行扫描,以获取各传感器采集到的路面现状的信息,根据扫描得到的信息,调用相应的子程序,实现相应的功能要求。使小车保持在既定轨迹上,并进行抓取或放置货物。在小车前进过程中寻迹模块发挥作用,实时检测小车是行驶在既定轨迹上,如果小车前进方向偏离出既定轨迹,则调用纠偏子程序使小车寻回到既定轨迹,如果没有偏离轨迹,则直行前进并检测是否找到货架,此时,超声波传感器发挥作用。如果检测到货架,则进行抓取或者放置货物。抓取和放置货物时,提升机以及舵机模块发挥作用。当抓手放置完货物后,小车自行掉头并循迹返回起点。
4.2 直流电机驱动模块软件设计 4.2.1电机的工作原理
直流电机的原理如图4.2所示。直流电动机中固定有半圆形永磁体,产生磁场。转子上有线圈,当给线圈两端加上直流电源时,有电流从“+”极流入,经过线圈从“-”极 流出,绕组线圈受到电磁力的作用,根据左手定则可知,电磁力的所形成的转矩方向为逆时针方向。绕组线圈所受力的大小可根据电磁力定律F=BIL得到。当绕组线圈转到与磁场平行时,由于惯性就在继续旋转,两边电刷将分别和另一个换向片接触,直流电流方向反向。此时绕组线圈所受力的方向可根据左手定则判定,他们产生的转矩仍然使得转子逆时针方向转动。因而电动机能保持一个方向转动。
简而言之,直流电动机的工作原理便是:外加的电源是直流的,但由于电刷和换向片的作用,在线圈中流过的电流是交流的,其产生的转矩的方向却是不变的。
图4.2 直流电机原理图
4.2.2 L298N车轮驱动模块软件设计
1. 小车左右转和L298N的关系
18
本设计采用L298N电机驱动芯片对带动轮子的两个电机进行驱动,L298N的引脚图如图4.3所示。
current sensing boutput 4output 3intput 4enable binput 3logic supply voltage vssgndinput 2enable ainput 1supply voltage vooutput 2output 1current senseng aL298N图4.3 L298N引脚图
一块L298N可以直接驱动两台直流电机,分别为M1和M2。引脚enable a(ENA),enable b(ENB)可用于输入PWM脉宽调制信号对电机进行调速控制(如果无须调速可将两引脚接5V,使电机工作在最高速状态,即将短接帽短接,此时控制方法与L9110H一样)。实现电机正反转就更容易了,输入信号端input1(IN1)接高电平输入端input2(IN2)接低电平,电机M1正转。(如果信号端IN1接低电平, IN2接高电平,电机M1反转。)控制另一台电机是同样的方式,输入信号端input3(IN3)接高电平,输入端input4(IN4)接低电平,电机M2正转。(反之则反转),PWM信号端ENA控制M1调速,ENB控制M2调速。
由以上分析可知,L298N芯片接收到单片机信号后,控制左轮电机M1和右轮电机M2正反转,从而控制小车运行状态,其具体控制见表4.1。
表4.1 L298N控制小车运行状态表
IN1 d 1 0 1 0
IN2 d 1 0 0 1
IN3 d 1 0 1 0
IN4 d 1 0 0 1
ENA 0 1 1 1 1 ENB 小车状态
停止 0
停止 1
停止 1
直行 1
后退 1
1 0 1 1 1 1 慢速右转
1 0 0 1 1 1 快速右转 1 1 1 0 1 1 慢速左转 0 1 1 0 1 1 快速左转 2. PWM信号控制电机转速
由于本设计所选直流电机转矩较大,电机全速前进时速度过快,导致小车容易冲出既定轨迹,再也循不回来。因此考虑使用PWM脉宽调制信号对电机进行调速控制。
程序设计中利用定时器0产生1ms定时,并产生中断,在定时器0中断处理子程序
19
中对L298N的两个控制端分别输送PWM调制信号以控制车轮转速。具体方法通过程序来说明。
void Timer0(void) interrupt 1 using 1 { }
由以上程序可以看出,当Cnt(Cnt1)的小于left(right)时,控制端ENA(ENB)输出高电平;当Cnt(Cnt1)的大于left(right)时,控制端ENA(ENB)输出低电平;当Cnt(Cnt1)等于CYCLE时,则给Cnt(Cnt1)赋值为0,如此循环往复。如果left、right两个变量中的值改变时,便会影响两轮控制端的高电平时间,从而控制两轮转速。此外,转速还受到控制循环周期的变量CYCLE的影响,CYCLE值越大,则转速越慢,反之转速越快。
3. 控制小车动作的算法与流程图
控制小车前进的算法是编写程序的依据,是轮式自动定位抓捕器完成各动作任务的关键。本设计的设计算法主要体现在电机驱动的实现。
轮式自动抓捕器运动过程的基本动作有:前进、后退、左转、右转、掉头、停车等。本系统使用两侧电机驱动,只要改变两侧电机的转动方向,就可以实现这些基本动作。小车的基本动作情况与电机控制的逻辑关系见表4.1。
在主程序中,主要采用调用子程序的方式并根据路面的情况改变运动状态来实现寻迹。控制小车动作的子程序流程图如图4.3所示。
当调用到控制小车动作子程序时,首先子程序首先控制运动平台停止,然后根据形参所传递的参数进行判断,当形参为0时,则运动平台继续保持停止状态;当形参为1时,则控制两轮同速正转,运动平台前进,当形参为2时,则控制两轮同速反转,运动
20
static unsigned char Cnt,Cnt1;
TH0=(65536-1000)/256; //定时1mS TL0=(65536-1000)%6; if(left==CYCLE) else
if(Cnt==left)
Cnt=CYCLE; //左轮占空比为100%的情况
Cnt++; //每中断一次,自加1
ENA = 0; //高电平时间到,控制端跳变为低电平
if(Cnt == CYCLE) { ENA = 1; Cnt=0; } //低电平时间到
if(right==CYCLE) Cnt1=CYCLE; //右轮控制方法同左轮一样 else
Cnt1++;
ENB = 0; //高电平时间到
if(Cnt1==right)
if(Cnt1 == CYCLE) { ENB = 1; Cnt1=0;} //低电平时间到