AGV小车指装备有电磁或光学等自动导引装置 能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车,工业应用中不需驾驶员的搬运车,以可充电之蓄电池为其动力来源。一般可通过电脑来控制其行进路线以及行为,或利用电磁轨道(electromagnetic path-following system)来设立其行进路线,电磁轨道黏贴於地板上,无人搬运车则依靠电磁轨道所带来的讯息进行移动与动作。

本项目设计的AGV小车可以非常方便地与其它不同的物流系统实现自动连接,例如AS/RS(自动化立体仓库/存入取出系统)、自动积放链、各种缓冲站、升降机和机器人等;从而实现在工作站之间对物料进行跟踪;按计划输送物料并有执行检查记录;对输送进行确认;与生产线和库存管理系统进行网络在线连接以向工厂或车间管理系统提供实时物流信息。在AGV运输物料过程中,由于AGV按固定规划路径行驶,不易与其它加工设备或其他障碍物碰撞,很少甚至没有导致产品或生产设备的损坏。AGV小车通过安装地面电缆、磁导航带或其他不构成障碍的地面导引物引导,方便。小车中AGVS系统具有极高的可靠性。AGVS是由若干台AGV小车组成,当一台AGV损坏无法工作时,其它AGV的生产效率不受影响并可以保持高度的系统可调度性。AGV小车采用蓄电池作为动力来源,既节约能源又保护环境。AGV小车的充电和驱动系统耗能少,能源利用率高,并且AGV工作噪音低对制造和仓储环境没有不良影响。

项目实施过程,通过分组分工及各研发阶段分期实施完成。柯昌权同学在导师指导下负责整体规划和过程实施;张清同学主要进行市场调研和数据分析,确定AGV小车设计功能和成本核算;杜永康、谢延同同学基于机电一体化技术专业知识,完成AGV小车硬件结构搭建;团体进行基于自动化传感检测技术和智能控制算法,完成AGV小车软件程序设计,以及AGV小车测试和改进。

具体内容:第一阶段对AGV进行结构框架设计,包括传感器位置安装;第二阶段对AGV小车进行程序编程,包括实现AGV功能应用各类传感器的程序逻辑结构框架设计、AGV前进与后退等状态的编写,以及整体程序的调试;第三阶段对AGV小车整体功能进行试验,对故障修理、程序微调及改善等。

 

智能AGV小车的设计与实现

[摘要] AGV(Automated Guided Vehicle)即自动导引运输车,是指装备有电磁或光学等传感器的自动导引装置,它能够沿着规定好的路径行驶,并且具有安全保护以及各种移载功能装置的运输车。

AGV由计算机,电控设备,导航设备等控制,它的自动化程度高,目前已经广泛的应用工业、军事、交通运输、电子等领域。AGV属于轮式移动机器人(WMR――Wheeled Mobile Robot)的范畴。自第一辆AGV于1953年诞生以来,AGV技术不断发展并趋向成熟。在欧、美等发达国家应用也最为广泛。由于AGV技术门槛较低,在我国已有多家企业生产此类产品,并逐渐应用于各行各业。

本项目根据控制系统设计要求,选定以STM32单片机作为CPU进行控制系统设计。本文分析研究了AGV硬件设计基本要求及并给出实现方案,软件设计方面采用嵌入式系统的设计方案,采用无刷直流电机作动力驱动以及 电机驱动器PID参数调整方案。

首先,介绍AGV小车车体结构设计基本要求及方案,本项目设计作品为前轮转向,后轮独立驱动的四轮式设计结构。

其次,本项目将AGV自动引导小车控制硬件设计组成,主要内容有:供电系统设计方案、控制电路原理图设计方法、各类传感器设计原理方法。

最后,介绍AGV软件设计方法,主要内容为利用定时器中断、串口中断、I/O口数据传输、定时器定时等方法实现AGV自动控制功能。

关键词:AGV,STM32单片机,磁导航设计,PWM。

 

 

 

 

 

 

 

 

 

 

第一章绪论

1.1  AGV小车的背景和发展

AGV小车一直以来都作为为物料搬运使用。世界上第一辆AGV由Barrett电子公司于1953年在美国开发成功,并且其具有一个以真空管为基础的控制器。上世纪五十年代末到六十年代初期时,已有多种类型的牵引式AGV作用于工厂和仓库。

在上世纪六十年代和七十年代AGV技术则主要在欧洲得到发展。当时的导引技术主要依靠地面控制器开关埋在地下的导线产生的电磁频率指引AGV沿着规划路径行驶。到了20世纪八十年代,发展中心又转移到美国,无线式引导技术被引入到AGV系统中,例如激光和惯性进行导引。

自20世纪80年代以来,AGV系统已经逐步发展成为生产物流系统中最大的专业分支之一,并趋向产业化发展,成为现代化企业不可缺少的自动化装备之一。

1.2  自动引导小车(AGV)定义和特点

AGV(Automatic Guided Vehicle),即自动导引车,根据美国物流协会定义,AGV是指装备有电磁或光学传感器等自动导引装置,并且能够沿着规划好的导引路径行驶,且具有小车编程和停车选择装置、安全保护以及各种移载或装卸物料功能的轮式运输车。AGV是以电池为动力来源、车体装有非接触导向装置,具备独立寻址系统的无人驾驶自动运输车。

AGVS(Automatic Guided Vehicle System)即自动导引车系统,它由AGV小车、上位机管理系统、路径导引系统、通信系统、小车停靠工位以及充电工位等组成。AGVS的上位机管理系统通过通信系统与系统内的AGV小车通信,控制和制定AGV小车作业调度和计划,并优化AGV的作业过程和控制AGV的运行路线、实时监控AGV的运行状态,使AGV在计算机的管制下有条不紊地作业,并通过物流系统软件而集成于整个工厂与车间的生产监控和管理系统中。自动导引车系统(AGVS)易于和其他自动化系统集成,并且容易扩展。

应用AGV小车具有很多特点:

1)AGV可以非常方便地与其它不同的物流系统实现自动连接,例如AS/RS(自动化立体仓库/存入取出系统)、自动积放链、各种缓冲站、升降机和机器人等;从而实现在工作站之间对物料进行跟踪;按计划输送物料并有执行检查记录;对输送进行确认;与生产线和库存管理系统进行网络在线连接以向工厂或车间管理系统提供实时物流信息。

2)采用AGV后,可以大大减少人工检取或堆置物料的人力劳动力输出,同时操作人员可以直接的减少为跟踪物料而进行大量的报表工作,进而加快劳动生产率。另外,可以直接取消或者减少非直接劳动力如物料仓库会计员、运货车调度员以及发料员的工作。

3)在AGV运输物料过程中,由于AGV按固定规划路径行驶,不易与其它加工设备或其他障碍物碰撞,很少甚至没有导致产品或生产设备的损坏。

4)AGV的最初投入可能较高,但绝大多数购置AGV的使用者均证明,2到3年间内均能收回AGV的投资成本。

5)AGV通过安装地面电缆、磁导航带或其他不构成障碍的地面导引物引导,方便。

6)AGVS系统具有极高的可靠性。AGVS由若干台AGV小车组成,当一台AGV损坏无法工作时,其它AGV的生产效率不受影响并可以保持高度的系统可调度性。

7)AGV采用蓄电池作为动力来源,既节约能源又保护环境。AGV小车的充电和驱动系统耗能少,能源利用率高,并且AGV工作噪音低对制造和仓储环境没有不良影响。

1.3  自动引导小车(AGV)引导方式

AGV技术是生产过程自动化先进性的重要体现,AGV之所以能够实现无人驾驶,导航和导引对其起到了至关重要的作用,而AGV的导航引导方式是决定AGV能否进一步应用于复杂、恶劣环境的关键因素。随着技术的发展,目前能够用于实际运行AGV的导航/导引技术主要有:电磁引导方式、磁带导引、光学导引、激光导航、惯性导航、视觉导航、GPS导航等。本项目采用了磁带引导。

技术名称 成熟度 技术难度 成本 应用 先进性 前景
电磁导引 成熟 较广 一般 较好
光学导引 成熟 中低 较广 一般 较好
磁带导引 成熟 广 一般 很好
超声定位 较成熟 一般 一般
激光定位 较成熟 广 较先进
视觉导引 较成熟 很先进

表 1-1 AGV常用引导应用现状比较

1.3.1  磁带导引(Magnetic Tape Guidance)

磁导引方式与电磁导引相近,用铁氧(磁体)体料粉与合成橡胶组成的磁带替代在地面下埋设金属线,通过磁感应信号实现导引,其特点是灵活性比较好,改变或扩充路径容易,磁带铺设简单,适用于小型或临时设备,但此导引方式易受环路周围磁性和金属物质的影响,容易受到机械损伤,因此,此导引方式受外界影响较大。

磁导航方式被认为是一项非常有应用前景的技术,主要通过磁传感器测量路径上的磁场强度信号来获取AGV自身相对于磁导引带之间的位置偏差,从而实现车辆的姿态控制及导航。磁导航具有很高的测量精度及良好的重复性,磁导航不受光线变化及路面污损破坏等影响,在应用运行过程中,磁传感系统具有很高的可靠性和鲁棒性。磁条铺设成本低,维护费用低,使用寿命长,且增减、变更路径容易。

1.4  AGV的应用现状

由于AGV具有地上系统简单、机能集中、易施工和系统构成等优点,被广泛地应用在汽车制造、港口货运、机械加工、发电厂、电子产品装配、电子行业、造纸行业等诸多行业。AGV的运输速度及负载能力远高于人力运输,速度可达每分钟百米,负载能力可从几千克到几十吨,相比人类而言它具备非常高的实用价值。可以看出,AGV无人自动引导小车是一种非常有发展前途的物料运输装备,它在柔性装配系统(FAS)和柔性制造系统(FMS)中更是一种最有效的物料运输设备。

随着电子技术和自动控制技术的快速发展,AGV的功能以及其导航技术也在不断进步,并朝着性能优越、自由度更高、廉价、超大型化和微型化方向发展。AGV的应用领域也在不断扩展,从起初只是用作于工厂内的物料运输,到现在己经不仅仅局限于工厂或车间之内,而是已经在饭店、医院、办公室、物流和超市等诸多行业成功的运用,并且取得了很好的运用效果。

AGV主要应用在制造业领域,在重型机械运输以及部分非制造行业中也有运用。AGV在制造业中的运用主要有物料装配、物料分发和物料加工制方面。其中在装配作业中AGV的运用量最大,并且AGV也是汽车制造工业的应用大户。美国通用汽车公司的汽车装配线有90%应用了AGV,在西欧国家更是有57%的运用中的AGV被应用于汽车装配。

随着电子行业技术的快速发展,电子工业领域中的AGV运用潜力越来越大。由于消费者需求加大,市场对生产系统的需求增加, FMS(柔性制造系统)作为灵活的生产方式满足了市场变化的要求,而将AGV用作中小批量元件的运输更是适应了这一需求,并且AGV可以根据不同运用场合需要进行输送路径的编程,从而达到指定运输任务。这在超净电子行业净化室中,AGV代替人工作业更是发挥了巨大的优势。

而在重型机械制造行业中,AGV主要用来运输中大型物料和重型物料。而设计功率较大并配置重型物件移栽装置的AGV便可用来代替人工装卸运输中的大量劳动力输出,更是增加了生产过程中的安全性。

AGV运用在非制造业中也越来越普遍。例如医疗部门、邮政部门、食品生产、餐厅点菜等。并且AGV可以代替人类,在具有核辐射危险的地方,用于核材料的搬运。

1.4.1  国外AGV的应用现状

在世界范围内,随着市场需求的增长,近几年先进制造技术、工厂物流自动化有了很大发展。AGV技术的发展,则进一步促成了先进的柔性生产线、自动化物流系统的实现。国外发达国家中日本、美国、德国、意大利、瑞典AGV产品种类齐全,技术先进,处于领先地位。

国内外在先进的加工制造生产线上采用柔性加工系统(FMS),在装配生产线上使用柔性装配系统(FAS)技术,在仓库存取输送线上使用自动化柔性物流系统技术, 进而增加了制造生产线和物流系统的柔性, 加快了生产效率, 适应了生产多品种产品的市场需求。

1.4.2  国内AGV的应用现状

目前,由于国内汽车行业的快速发展,其对配套生产厂家的产品质量及产量要求不断提高,特别是装配制造业。基于这种情况对柔性装配系统的需求正在不断提高。

1.5  本项目的研究内容及AGV的关键技术

1.5.1  项目主要研究的内容

本项目旨在设计一款实用的AGV车开发平台,为保证AGV车的导航准确性、快速纠正性,以及本设计作品中所有的软件和硬件开发研究,将主要涉及以下几个方面:

1)AGVS配送系统相关研究

2)AGV车体机械结构设计

3)AGV控制器硬件设计。将对控制器与各传感器进行模块化设计。

4)AGV软件设计。涉及传感器检测程序、无刷直流电机驱动程序等。

5)项目设计任务作系统实验调试,保证AGV车运行性能。

1.5.2  AGV的关键技术

设计为一款既具有实用价值同时利于后期拓展开发的AGV小车平台,AGV将在手动开机情况下,自主抵达发出信息的各个工位,并进行任务将物料搬运抵达至目标工位,其中将主要包括如下几个关键问题:

  • AGV如何实时判断当前周围环境的障碍物并及时躲避
  • AGV如何与工位进行位置数据通信以及物料数据通讯。
  • AGV如何择优选择运行路径并抵达目标工位。
  • AGV如何获取当前位置信息并确定当前行径方向。

5)AGV如何适当的在直道弯道加减速度并始终在路径上行走。

这些问题是对于实时性要求较高的AGV所必需解决的问题,将对应到AGV的传感器技术、定位技术、路径规划策略和运动控制技术。对于AGV而言,及时响应系统下达的任务指令,并安全、准确、无物料丢损、无碰撞的完成指令任务,是AGV最基本的功能。而在各种复杂环境中,有效的完成任务,将很大程度上取决于AGV车自身的导航与环境识别能力,而这样一个自主式程度高的AGV系统一直都为很多AGV研究者重视,而这样的一种AGV也具有更广阔的应用前景。

 

 

第二章  AGV总体结构设计

2.1  AGVS(Automatic Guided Vehicle System)配送系统组成

AGV自动导引小车配送系统由带辅助装卸装置的AGV车、在线自动充电系统、地面导航系统、周边工位及仓库输送系统、AGV控制台(调度计算机)和网络通讯系统等构成,部分系统工作任务如下:

1)AGV(Automatic Guided Vehicle)

带辅助装卸装置的AGV小车,完成系统指定从各个工位的之间输送任务。

2)在线自动充电系统

为了保证AGV小车全天候运行任务的可靠性,系统会采用大电流快速充电的方式为AGV蓄电池充电。AGV小车的充电过程是由电量不足情况下向控制台发送电量不足信息,并由控制台下达允许指令后方可执行充电程序。

3)地面导航系统

地面导航系统主要由磁导航带或激光反光板等地面路径指示标志构成,使得AGV在规定的路径下运行运输任务。

4)周边输送系统

周边输送系统主要是AGV的自动上下货工位所处的位置,这些设备在与AGV进行装卸货物的过程,会在对应系统监控下实现动作的互锁和协调配合,保证物料运输的生产安全性。

5)AGV控制台(调度计算机)

控制台是AGV小车的上位机管理系统,是所有处在本系统内的AGV小车的调度管理中心。此系统负责与监控计算机交换物料及AGV运行数据信息,分配系统下各个AGV的运行任务,解决多台AGV之间的协调问题。同时将AGV系统的物料搬运完成度等状态反馈给中心控制管理系统。

6)通讯系统

通讯系统由AGV控制台和各AGV之间组成无线局域网(此通讯系统频率采用开放的2.4GHz频道,覆盖范围500米内)并进行信息交换。控制台通过多个无线接入点组合通信,从而覆盖整个AGV工作区域,使得AGV在远距离跨越区域时实现信息连接。

各系统之间的具体关系如图2-1所示。

2.2 AGV车身结构及运动学分析

2.2.1 AGV车身硬件结构性能指标

1、车身额定载重量:即自动导引搬运车所能承载货物的最大重量。通常AGV的载重量范围在50kg到20000kg,多以中小型吨位。本设计的AGV车的载重量在60KG左右,最大载重量70KG,并可以调整车身部件增加载重量。

2、车体尺寸 :车体尺寸是指车体的长、宽、高外形尺寸。本设计作品车体数据为650mm*330mm*250mm。

3、导航精度 :指AGV行走时的精度,本设计作品精度±10 mm。

4、停位精度 :指AGV到达目的工位处并准备自动移载物料时时所处的实际位置与程序设定的位置之间的偏差值(mm)。停位精度确定移载方式的主要依据,不同的装卸方式要求不同的停位精度。本设计作品停位精度为。

5、最小转弯半径:是指AGV在空载低速行驶、偏转程度最大时,瞬时转向中心到AGV纵向中心线的距离。它是确定车辆弯道路径运行所需空间的重要参数。本项目作品最小转弯半径。

6、运行速度:指自动导引搬运车在额定载重量下行驶时所能达到的最大速度。它是确定车辆作业周期和搬运效率的重要参数。本设计作品运行速度0-200m/min。

7、导引方式:采用磁导航方式。

8、控制方式:按钮开关、计算机遥控、工位调度控制器。

9、电源:36V15AH锂电池组。

10、安全装置:故障报警、急停按钮、远程非接触防碰防碰装置。

11、驱动方式:直流伺服驱动。

12、驱动形式:后置双轮驱动
13、通讯方式:AGV控制台与AGV间采用无线局域网通讯交换信息。

14、信息显示终端:AGV上带有显示信息液晶触摸屏幕

2.2.2 AGV车身设计

本项目采用四轮布置结构,前轮由数字舵机控制的一组差数转向组件来实现AGV小车转向,后轮由两组无刷直流电机独立驱动。传动系统如图2-2所示。

 

 

 

 

 

 

 

AGV的车架结构采用2525铝合金材料制作而成,既符合了AGV小车的载重设计要求同时也在外观上符合了审美。车架三视图设计如图2-3所示,图2-4为小车车架实物。

 

 

本项目设计的AGV小车转向结构采用数字舵机控制转向组件,达到AGV小车的转向功能,具体转向部件设计细节如下图所示。

 

项目设计的AGV小车机身结构考虑了作为AGV开发平台的拓展性,因而在外形以及结构形状设计上充分考虑了后期的改造方便性,并且始终兼顾了它的实用性能,最终小车的机身设计实物图如图2-8所示。

 

2.2.3 AGV驱动电机选型

AGV小车的主要功能是作为物料运输用途,因此要特别考虑小车的负载驱动能力(电机功率参数),同时要需要考虑在小车运行过程中的停车精度问题,因此选择一款既具备高低速运行情况下力矩良好同时精度有高的驱动电机极为重要。因此项目将通过以下参数计算选择电机型号。

1、计算小车最大负载时拉力(F)值,图2-9为小车受力分析。

 

 

 

 

小车自身重量

最大负载重量

滚动摩擦力f值得大小在零与静摩擦力之间,即

则小车牵引力为 :

2、本项目中小车驱动轮尺寸为6寸,半径约为9.9cm,换算得出负荷力矩为:

为了使得AGV具备适当的爬坡能力,使小车在爬坡过程中仍具备较大力矩,经过爬过过程的小车受力计算(如图2-10所示),本设计中提高了电机输出扭距参数要求使之达到5.9的力矩。

 

 

 

 

 

    3、小车设计最大速度为200m/min,驱动轮半径为9.9cm

则,轮子周长 :

得出电机输出轴转速为 :

4、根据电机功率计算公式,得出 :

经过上面的详细参数计算,选择的是一款型号为Z5BLD250-24A-30S的无刷直流电机,通过1:7.5减速箱减速,可以达到空载转速400r/min,力矩达到5.97N·m,满足了AGV设计的要求。表2-1为电机性能参数。

型号 Z5BLD250-24A-30S
额定电压 24V
额定功率 250W
额定电流 13.0A±10%
额定转速 3000RPN±10%
额定力矩 0.796
空载电流  
空载转速 3600RPN±10%
电机寿命 5000h
电气强度 660V/S
绝缘等级 B
防护等级 IP20
使用环境温度  

 

 

 

 

 

第三章  AGV硬件设计

本项目设计的AGV是采用次导航技术,其系统技术构成如图3-1所示。其中主要包括:供电单元、主控单元、驱动单元、安全感应系统、导向系统、站点识别单元、通讯单元、车体。其中供电单元、主控单元、驱动单元、导向系统是本章节叙述核心。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.1 AGV小车供电系统

AGV的供电系统用以给主控单元、导向系统、驱动单元等设备提供电能,是AGV小车的连续工作、稳定工作、安全工作的重要保证。AGV小车的电压采集模块通过 A/D 转换,实时采集当前AGV电池的电量,将电压数据反馈给AGV主控制器。控制器通过监控当前电压及时调整AGV的工作任务。当控制器监测到当前电池电压值即将低于正常工作电压时,则将需要充电的信息反馈调度计算机,同时AGV小车显示屏报警显示电量不足,并在完成当前任务后自行回到充电站充电,充电完成后,解除报警信号,发送上位机当前充电完成信号,并接受上位机调度任务。

3.1.1 AGV电池选配

AGV电池一般采用镍镉蓄电池、镍氢蓄电池、锂电池、铅酸蓄电池。

本项目选择的是一款36V15AH的高能锂电池,体积小,能量大,非常适合作为本文设计AGV小车的动力电源。如图3-2是本车电池实物图。电池采用DC充电接口,T型供电插口。锂电池拥有高能量密度,与高容量镍镉电池相比,体积能量是其1.5倍,能量密度是其2倍,高电压,平均使用电压为3.7V,是镍镉电池和镍氢电池的3倍,使用是电压稳定而且高容量,在温度-20度-60度使用时,充放电寿命长,经过500次放电后其电源容量至少还有70%以上。由于锂电池具备了能量密度高电压高,工作稳定的特点,通常使用在航模等大电流放电设备上。

 

 

 

3.1.2 供电电路设计

为了增加AGV供电可靠性,保证电路设计的安全性,本项目中的电路采用电源一键启动,增设急停按钮,电压显示器,电源指示灯。以下是电路设计图。

1)电源充电及电源部分电气图,图3-3

 

2)电机驱动器供电接线图,图3-4

3.2 控制器选型与设计

3.2.1 STM32F4简介

STM32F4是由意法半导体(ST)推出的以基于ARM Cortex-M4为内核的高性能微控制器,其采用了90nm的NVM工艺和ART技术(自适应实时存储器加速器,Adaptive Real-Time Memory Accelerator)。ART技术可实现程序零等待执行,提升程序执行效率,将M4架构的性能发挥到了极致,使得CPU最大可以运行于168MHZ。STM32F4系列的微控制集成了单周器DSP指令和FPU(浮点单元),提升计算能力,实现了一些复杂的计算和控制。

作为Cortex M3市场的最大占有者,STM32F4主要优势如下:

1、内核更加先进。STM32F1采用的是Cortex M3内核,不带FPU和DSP指令集,然而STM32F4采用CortexM4内核,带FPU和DSP指令集,优势明显。

2、STM32F4有更多的资源,高达1M字节的片上闪存,拥有多达192KB的片内SRAM,增设了摄像头接口(DCMI)、加密处理器(CRYP)、USB高(480Mbit/s)速OTG功能、32位真随机数发生器(RNG)、OTP 存储器等。

3、增强了外设功能。对于相同的外设部分,STM32F4 具有更快的ADC模数转换速度、具备更低的ADC/DAC工作电压、32 位定时器、带日历功能的实时时钟(RTC)、 IO复用功能大大增强、4K字节的电池备份SRAM以及更快的USART 和SPI通信速度。

4、更高的性能。STM32F4 最高运行频率可达168Mhz,可运行达到210DMIPS的处理能力,而STM32F1只能达到 72Mhz;STM32F4 拥有ART自适应实时加速器,可以达到相当于FLASH零等待周期的性能,可实现单周期内相乘和相加指令,采用单周期的SIMD指令,可实现同时多个数据参与运算,STM32F1则需要等待周期; STM32F4的FSMC采用32位多重AHB总线矩阵,相比STM32F1的总线访问速度明显提高。

5、更低的功耗。 STM32F40x 的功耗为: 238uA/MHZ,其中低功耗版本的 STM32F401 更是低到: 140uA/ MHZ, 而 STM32F1 则高达 421uA/ MHZ。

3.2.2 STM32F407ZGT6硬件资源介绍

STM32F407ZGT6芯片集成FPU和DSP指令,并具有192KB的SRAM、1024KB FLASH、12个16 位定时器、2个32位定时器、 2个DMA控制器(共16个通道)、2个全双工I2S、2个12位DAC、6个串口、2个USB(支持 HOST /SLAVE)、2个CAN、3个IIC、3个SPI、3个12位ADC、1个RTC(带日历功能)、1个SDIO 接口、1个FSMC 接口、1个 10/100M 以太网 MAC 控制器、1个摄像头接口、1个硬件随机数生成器、以及112个通用IO口等。

3.3.开发板最小系统

STM32最小系统主要包括:电源电路、外部晶振电路、外部时钟电路、复位电路、下载电路,如图3-5为开发板最小系统部分电路原理图。

 

 

 

 

 

 

 

 

3.4磁导引传感器控制与设计

3.4.1 传感器控制原理

导向单元的作用是让AGV小车根据规定路径行驶,本项目采用的是磁导航传感器,安装在AGV 车体前方的底部,磁导航传感器利用其内置的8个采样点,能够检测出磁条上方一定程度的微弱磁场,每一个采样点都有一路信号对应输出,当采样点采集到磁场信号时,该路信号就会输出低电平,而没有采集到磁场信号的信号输出则为高电平。AGV运行时,磁导航传感器内部垂直于磁条上方的连续 1-3 个采样点会输出信号,依靠输出的这几路信号,可以判断磁条相对于磁导航传感器的偏离位置,当AGV的行驶与导引轨迹一致时,由于此时磁导航传感器正好处于磁条轨迹的上方,传感器正中间的检测元件测得的磁感应强度最大,因而中间的霍尔开关传感器输出低电平信号,控制器 I/O口采集到这几路信号,比较发现当前AGV 处于路径中间,控制器将不对该输出信号进行处理,AGV保持原行驶轨迹;当AGV偏离磁条轨迹时,由于检测到最大磁感应强度的霍尔开关传感器不再处于磁导航传感器的中间,传感器将该低电平信号输出至控制器,控制器 I/O 口采集到这几路低电平信号,比较发现当前AGV位置与路径位置有所偏差,据此AGV控制系统自动做出调整,控制电机驱动器,使电机差速纠偏,确保AGV 沿磁条前进。磁导航原理图如下图3-6所示。

 

 

3.4.2 导航工作控制

AGV的地面磁导航系统是AGV在运行过程中所能达到的路径,主要由以下几部分构成:运行路径导航线、地标导航线和弯道导航线。采用磁导航的方法,运行路径导航线由宽30mm、厚度为1mm的磁性橡胶磁带铺设而成,根据路径的具体要求可以进行适当的裁剪。地标导航线由长150mm、宽50mm、厚度为1mm的磁性橡胶铺设而成,在地图上地标是各个站点的标志。弯道导航线由路径导航线和地标导航线构成,如下图3-7所示:

AGV在弯道的运行分成下述几个步骤:

1)找到地标。

2)按一定的转弯半径,AGV靠码盘的位置编程来完成圆弧的轨迹。

3)以此,AGV寻找导航线,按导航线的路径行走。

磁导航传感器是AGV的眼睛,决定了AGV的运行稳定性。本项目选择的是LS-06型AGV磁导航传感器,该传感器主要应用于磁条导航方式的自动导引车AGV,自动手推车AGC,无轨移动货架,物流拣选等行业。该磁导航传感器采用6路采样点输出,该系列磁导航传感器采用8路采样点输出,与日本名电舍的ME-9006AM-1性能相同,温漂,磁饱和等性能指标均优于进口产品

磁条导航方式的自动导引车AGV,沿着地面铺设的磁条行驶。LS-06型AGV磁导航传感器,安装在AGV车体前方的底部,距离磁条表面20-40mm,磁条宽度为30-50mm,厚度1mm.LS-06型AGV磁导航传感器利用其内部间隔10mm平均排布的8个采样点,能够检测出磁条上方100gauss以下的微弱磁场,每一个采样点都有一路信号对应输出。AGV运行时,磁导航传感器内部垂直于磁条上方的连续2-3个采样点会输出信号。依靠6路通道中输出的2-3路信号,可以判断磁条相对于LS-06型AGV磁导航传感器的偏离位置, AGV会自动作出调整( PID),确保沿磁条前行。

下表为本作品中磁导航传感器的技术参数。

名称 内容
检测距离 30±20mm
检测极性 N极和S极
红灯N极
绿灯S极
检测点数量 6(20mm等距)
输出极限 耐压:DC60V
单路输出电流:50mA
总输出电流:300mA
相应时间 10mS
保存温度范围 -40—+80

 

 

3.4.3 传感器接线

下图为传感器输出端口定义(图3-8和图3-9),表3-2为传感器接线表)。

 

 

 

 

 

管教名称 内容
1 SW1 第1位输出
2 SW2 第2位输出
3 NC
4 SW4 第4位输出
5 SW5 第5位输出
6 NC
7 SW6 第6位输出
8 SW7 第7位输出
9 OV
10 10-30VDC

 

 

3.5超声波避障传感器

3.5.1 AGV小车接近装置及报警、停车工作方式

AGV小车的接近检测装置一般有红外区域扫描、激光测距扫描和超声探测三种方式,用来检测AGV运行方向是否存在障碍物。采用光电传感器安装在磁导航 AGV 车体正前方中部距离地面150mm 处,该传感器拥有两级 I/O 输出,二级检测区域分为左中右三个区域,分别能在 0-3m 内调节,当该级监测区域内检测出障碍物时,该检测单元对应的输出电路输出低电平信号,AGV 控制器接收到该低电平信号后立即控制驱动电机减速,同时发出警告信号并反馈给地面控制中心,通知前方障碍物离开,直到障碍解除才恢复正常速度行驶;一级临近检测区域较二级监测区域短,但两侧检测范围较二级检测区域大,同样具有左中右三个监测区域,分别能够在 0~1m 内调节,当该级监测区域内检测出障碍物时,该路对应的输出电路输出低电平信号,AGV 控制器接收到该低电平信号后立即发出急停指令同时报警并通知地面控制中心,直至障碍物解除。

警示装置包括警示灯和警示蜂鸣器,用以提醒应用现场的人们及时发现正在靠近的AGV 并采取相应的措施。

停车按钮用于 AGV 的受控停车,该按钮按下之后 AGV 应当安全可靠地停止运行,并且该方式停车能够通过人工操作简单快速地使 AGV 恢复运行,该按钮用以保证 AGV 周围的临时工作人员的安全,采用停车按钮停车方式可以不切断 AGV 的驱动电源。磁导航 AGV 在地面控制中心、AGV 车用遥控器和 AGV 车身侧面等三处均设置停车按钮,方便操作人员采取停车措施。

紧急停车按钮用以在紧急情况下中断 AGV 的运行,为便于紧急情况下操作,磁导航 AGV 在地面控制中心、AGV 车用遥控器和 AGV 车身两侧设置红色的急停按钮。当紧急停车按钮按下后,AGV 切断一切设备的动力供给,启动制动器并报警,在排除紧急停车原因之前 AGV 维持停止状态。

3.5.2 超声波传感器原理

超声波传感器主要包括发射器和接收器两大部分,由于超声波在空气中传播的速度为已知(340m/s),我们只需要计算出从发射到接收之间的时间差就可以算出距离。具体的作法是超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2)。

本项目选用的是HC-SR04型传感器(图3-10实物图),左边为接收头,右边为发射头,共引出分个引脚,一个电源正极(5V),一个电源地,Trig为触发信号触发控制端,Echo为回响信号端。下面介绍一个超声波传感器的时序图。

 

 

 

通过时序图可知,在使用时,触发控制端Trig,首先必须给一个10us以上的高电平,然后等待发射头声波信号输出,一旦有信号输出,回响信号端会产生高电平,此时开始计时。随后声波信号一直在空气中传播,遇到障碍物会反射回来,当反射回来的信号到达接收头时,此时回想信号端会由高电平变为低电平,停止计时。此时我们就可以算出检测的距离S=340*(t1-t2)/2 ( t1为开始计时时间,t2为停止计时时间,注意距离为一边的距离,所以时间应该除以2)。

3.6 电机驱动器控制和接线

本项目选用的是一款BLCD型号的高性能,多功能,低成本的带霍尔传感器的直流无刷电机驱动器。驱动器选用全数字式设计可实现多种输入控制方式,拥有极高的调速比,噪声低,软硬件保护功能完善,可以通过串口通信实现与上位机连接并进行电机的PID参数调整,保护参数调整,电机参数调整,加减速时间等参数设置,同时可以进行IO输入状态,模拟量输入,告警状态及母线电压监视。

下图是电机驱动器参数列表

 

 

3.6.1 无刷直流电机驱动器控制方案

无刷直流电机(brushless direct current motor ,BLDCM)转子采用永磁铁激磁,电机功率密度高控制简单,调速性能良好,因此在无刷直流电机在交流传动中受到了广泛应用。对于本项目AGV对电机的控制要求,采用了闭环控制,与开环控制相比,采用闭环速度控制系统的机械特性有很大优越性。闭环控制系统的机械特性与开环相比,其整体性能大大提高;理想空载转速相同时,闭环系统的静差率S(额定负载时电机转速降落与理想空载转速之比)要小很多;当要求的静差率S相同时,那么对比开环系统,则闭环调速系统的调速范围可以大大提高。无刷直流电机的闭环速度控制方案如下图所示。

项目驱动器闭环调节方案采用比例积分微分控制(简称PID控制),其输出结果为输入结果的比例、积分和微分的函数。PID调节器的控制结构比较简单,参数容易调整,可以不必求出被控对象的数学模型,因此PID调节器受到了广泛的应用。

3.6.2 无刷直流电机转速检测

本项目使用的无刷电机采用了霍尔传感器,使得电机的实际转速可通过测量转子位置信号得到,在电机转动过程中,通过霍尔传感器发出的信号可以得到如图3-6所示的周期信号。

 

 

 

 

由图3-6可知,电机旋转一周便可得到两个周期方波,每一相霍尔传感器产生2个周期的方波,则周期与电机转速成正比,如此便可利用霍尔传感器发出的信号得到电机的实际转速。为尽可能缩短每次速度的采样时间,同时为了测得每项霍尔传感器的正脉冲的宽度,则可计算电机的实际转速。

3.6.3 驱动器接线

3.6.3.1接口定义与连接图,图3-15

 

 

 

 

1)引脚列表及相关名称,表3-3。

端子引脚号 引脚名 定义说明
1 GND 信号地
2 ALM 报警输出(开漏)电流应限制在20mA内
3 X1 多段速输入1
4 PG 霍尔信号异或输出(开漏)电流应限制在20mA内
5 X2 多段速输入2
6 5V 5V电源输出,输出电流应小于20Ma(内部为线性电源,过大电流会导致过热)
7 X3 多段速输入3
8 SV 模拟信号输入
9 FR 方向控制信号
10 GND 信号地
11 EN 使能信号,低电平有效
12 BK 刹车信号,高电平刹车,正常应接GND

 

2)通讯接口

本项目驱动器采用串行通信方式与计算机连接。接口为RS232电平。物理接口采用RJ12-6PIN的电话插座,引脚排列如图3-17所示,引脚对于说明见表3-4。

 

 

 

端子引脚号 引脚名 定义说明
1 NC 常开/空
2 TXD MCU数据发送端
3 VCC 5V电源
4 RXD MCU数据接收端
5 GND 接地
6 NC 常开/空

 

 

3)驱动器典型接线连接图,图3-18所示。图3-19、连接时驱动器U、V、W端口分别对应电机黄绿蓝相线,HA、HB、HC霍尔信号端口分别对应电机黄绿蓝霍尔信号线。

 

 

 

 

第四章  AGV控制软件设计

4.1  AGV系统程序流程图设计

STM32微控制器采用中断方式接受外部传感器数据,然而,在串行偶尔会出现帧数据丢失的现象,为了防止产生一直等待,项目使用了看门狗定时器进行监视。在串口初始化时放在了系统初始化中,这里给出了串行接受通信程序流程图(图4-1),微控制器的串口发送程序比较容易,通常采用查询方式进行发送,此处就不载列出。

本项目要用到定时器/计数器 0 间隔时间读取霍尔传感器转速脉冲数中断,串行接受、发送中断。未使用的中断,在相应的程序中的中断地址写入复位指令。

本项目作品的开机初始化过程进行IO口舒适化、定时器/计数器初始化、各类模块数据参数的初始化以及电机转速初始化、PID参数初始化等。给出了程序初始化流程图图4-2和系统软件主要流程图4-3。

图4-2 主控程序初始化流程图

 

4.2  驱动器控制程序设计

根据3.5.3节的电机控制算法,根据本文AGV小车的部分程序设计,这里给出了PID整定输出产生PWM波main程序。

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************

* File Name          : main.c

* Author             : MCD Application Team

* Version            : V2.0.1

* Date               : 06/13/2008

* Description        : Main program body

********************************************************************************

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.

* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,

* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE

* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING

* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*******************************************************************************/

 

/* Includes ——————————————————————*/

#include “System_init.h”

#include “Adjust.h”

/* Private typedef ———————————————————–*/

/* Private define ————————————————————*/

/* Private macro ————————————————————-*/

/* Private variables ———————————————————*/

extern vu16 ADCConvertedValue;

extern unsigned char Flag_1mS;

extern unsigned char Flag_100mS;

extern unsigned char Flag_1S;

extern int U_Set;

extern u16 CCR1_Val;

/* Private function prototypes ———————————————–*/

/*******************************************************************************

* Function Name  : main

* Description    : Main program

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

int main(void)

{

unsigned char N=0;

float Pv;

#ifdef DEBUG

debug();

#endif

System_Configuration();

printf(“This is an example of PID!\n\r”);

while (1)

{

switch (N){

case 0:

if(Flag_1mS==1){

if(U_Set-ADCConvertedValue>=10||U_Set-ADCConvertedValue<=-10){

Pv=Vol(U_Set,ADCConvertedValue);

CCR1_Val=CCR1_Val+Pv/2.04;

if(CCR1_Val>=999)

CCR1_Val=999;

else if(CCR1_Val<=1)

CCR1_Val=1;

 

TIM3->CCR1=CCR1_Val;

}

Flag_1mS=0;

}

break;

case 1:

if(Flag_100mS==1){

printf(“%d,”,ADCConvertedValue);printf(“%d   “,CCR1_Val);

Flag_100mS=0;

}

break;

case 2:

if(Flag_1S==1){

//printf(“The feedback is %d\n\r”,ADCConvertedValue);

Flag_1S=0;

}

break;

default : break;

}

N++;

if(N==3){

N=0;

}

}

}

4.3 数字舵机控制程序设计

根据3.5.3节的超声波传感器原理及相关数据资料,根据本文AGV小车的部分程序设计,这里给出了超声波传感器测距程序。

//晶振=8M

//MCU=STC10F04XE

//Trig  = P1^0

//Echo  = P3^2

#include <reg52.h>     //包括一个52标准内核的头文件

#define uchar unsigned char //定义一下方便使用

#define uint  unsigned int

#define ulong unsigned long

//***********************************************

sfr  CLK_DIV = 0x97; //为STC单片机定义,系统时钟分频

//为STC单片机的IO口设置地址定义

sfr   P0M1   = 0X93;

sfr   P0M0   = 0X94;

sfr   P1M1   = 0X91;

sfr   P1M0   = 0X92;

sfr P2M1   = 0X95;

sfr P2M0   = 0X96;

//***********************************************

sbit Trig  = P1^0; //产生脉冲引脚

sbit Echo  = P3^2; //回波引脚

sbit test  = P1^1; //测试用引脚

 

uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管0-9

uint distance[4];  //测距接收缓冲区

uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i;  //自定义寄存器

bit succeed_flag;  //测量成功标志

//********函数声明

void conversion(uint temp_data);

void delay_20us();

//void pai_xu();

 

void main(void)   // 主程序

{  uint distance_data,a,b;

uchar CONT_1;

CLK_DIV=0X03; //系统时钟为1/8晶振(pdf-45页)

P0M1 = 0;   //将io口设置为推挽输出

P1M1 = 0;

P2M1 = 0;

P0M0 = 0XFF;

P1M0 = 0XFF;

P2M0 = 0XFF;

i=0;

flag=0;

test =0;

Trig=0;       //首先拉低脉冲输入引脚

TMOD=0x11;    //定时器0,定时器1,16位工作方式

TR0=1;      //启动定时器0

IT0=0;        //由高电平变低电平,触发外部中断

ET0=1;        //打开定时器0中断

//ET1=1;        //打开定时器1中断

EX0=0;        //关闭外部中断

EA=1;         //打开总中断0

 

while(1)         //程序循环

{

EA=0;

Trig=1;

delay_20us();

Trig=0;         //产生一个20us的脉冲,在Trig引脚

while(Echo==0); //等待Echo回波引脚变高电平

succeed_flag=0; //清测量成功标志

EX0=1;          //打开外部中断

TH1=0;          //定时器1清零

TL1=0;          //定时器1清零

TF1=0;          //

TR1=1;          //启动定时器1

EA=1;

 

while(TH1 < 30);//等待测量的结果,周期65.535毫秒(可用中断实现)

TR1=0;          //关闭定时器1

EX0=0;          //关闭外部中断

 

if(succeed_flag==1)

{

distance_data=outcomeH;                //测量结果的高8位

distance_data<<=8;                   //放入16位的高8位

distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据

distance_data*=12;                  //因为定时器默认为12分频

distance_data/=58;                   //微秒的单位除以58等于厘米

}                                      //为什么除以58等于厘米,  Y米=(X秒*344)/2

// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58

if(succeed_flag==0)

{

distance_data=0;                    //没有回波则清零

test = !test;                       //测试灯变化

}

 

///       distance[i]=distance_data; //将测量结果的数据放入缓冲区

///        i++;

///  if(i==3)

///      {

///        distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;

///        pai_xu();

///        distance_data=distance[1];

 

 

a=distance_data;

if(b==a) CONT_1=0;

if(b!=a) CONT_1++;

if(CONT_1>=3)

{ CONT_1=0;

b=a;

conversion(b);

}

///  i=0;

/// }

}

}

//***************************************************************

//外部中断0,用做判断回波电平

INTO_()  interrupt 0   // 外部中断是0号

{

outcomeH =TH1;    //取出定时器的值

outcomeL =TL1;    //取出定时器的值

succeed_flag=1;   //至成功测量的标志

EX0=0;            //关闭外部中断

}

//****************************************************************

//定时器0中断,用做显示

timer0() interrupt 1  // 定时器0中断是1号

{

TH0=0xfd; //写入定时器0初始值

TL0=0x77;

switch(flag)

{case 0x00:P0=ge; P2=0xfd;flag++;break;

case 0x01:P0=shi;P2=0xfe;flag++;break;

case 0x02:P0=bai;P2=0xfb;flag=0;break;

}

}

//*****************************************************************

/*

//定时器1中断,用做超声波测距计时

timer1() interrupt 3  // 定时器0中断是1号

{

TH1=0;

TL1=0;

}

*/

//******************************************************************

//显示数据转换程序

void conversion(uint temp_data)

{

uchar ge_data,shi_data,bai_data ;

bai_data=temp_data/100 ;

temp_data=temp_data%100;   //取余运算

shi_data=temp_data/10 ;

temp_data=temp_data%10;   //取余运算

ge_data=temp_data;

 

bai_data=SEG7[bai_data];

shi_data=SEG7[shi_data];

ge_data =SEG7[ge_data];

 

EA=0;

bai = bai_data;

shi = shi_data;

ge  = ge_data ;

EA=1;

}

//******************************************************************

void delay_20us()

{  uchar bt ;

for(bt=0;bt<100;bt++);

}

 

第五章 总结与展望

5.1 总结

自动导引小车(Automated Guided Vehicle,简称AGV)是一种以电池为动力,装有非接触式导向装置的无人驾驶自动运输车。其主要功能是:在计算机控制下,通过复杂的路径将物料按一定的停位精度输送到指定的位置上。

本作品设计的为一款既具有实用价值同时利于后期拓展开发的AGV小车平台,选定以STM32单片机作为CPU进行控制系统设计,可以在功能可靠性保证的前提下,既降低成本,又增加本设计作品的拓展性。本项目采用磁导航方式,磁导航方式被认为是一项非常有应用前景的技术,具有很高的测量精度及良好的重复性,磁导航不受光线变化及路面污损破坏等影响,在应用运行过程中,磁传感系统具有很高的可靠性和鲁棒性。

5.2 展望

    本项目采用的自主导航方式为磁导航方式,技术成熟,设计较为简单,成本也较低,但是作为AGV设计人员,我们希望AGV的导航方式更加先进,自主导航能力更加强,为此,在后期的开发中,会采取视觉导航方式,利用视觉摄像头实现图像数据采集并进行图像中各类物体物理数据分析,这一方式会提高软件开发的成本,但是同时会大大减少硬件传感器的成本,视觉导航技术发展的越来越快(例如OPENCV),相信日后装载到AGV的视觉导航技术也会逐步实现。

本项目设计的AGV小车在机械结构上,相对较重,专向组件的转向半径较大,需要在车身机械结构上减轻重量,减小转弯半径。