




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
舞蹈机器人步进电机驱动电路和程序设计摘 要:介绍了舞蹈机器人步进电机驱动电路和程序设计。电路采用 74373 锁存,74LS244和 ULN2003 作电压和电流驱动,单片机 AT89C52 作工作脉冲序列信号发生器。程序设计基于中断服务和总线分时复用方式,实时更新各个电机的速度和方向。关键词:单片机,中断服务,速度累加计数器,归一化速度 在机器人舞蹈时,我们用一个单片机控制多个步进电机指挥跳舞机器人的双肩、双肘和双脚伴着音乐做出各种协调舒缓充满感情的动作。电路采用 74373 锁存,74LS244 和 ULN2003 作电压和电流驱动,单片机(Atc52)作脉冲序列信号发生器。程序设计基于中断服务和总线分时利用方式,实时更新各个电机的速度、方向。整个舞蹈由运动数据所决定的一截截动作无缝连接而成。1 步进电机简介 步进电机根据内部线圈个数不同分为二相制、三相制、四相制等。本文以四相制为例介绍其内部结构。图 1 为四相五线制步进电机内部结构示意图。2 四相五线制步进电机的驱动电路 电路主要由单片机工作外围电路、信号锁存和放大电路组成。我们利用了单片机的 I/O 端口,通过 74373 锁存,由 74LS244 驱动,ULN2003 对信号进行放大。8 个电机共用 4bit I/O 端口作为数据总线,向电机传送步进脉冲。每个电机分配 1bit 的 I/O 端口用作 74373 锁存信号,锁存步进电机四相脉冲,经 ULN2003 放大到 12V 驱动电机运转。电路原理图(部分)如图 2 所示。(1)Intel 8051 系列单片机是一种 8 位的嵌入式控制器,可寻址 64K 字节,共有 32 个可编程双向 I/O 口,分别称为 P0P3。该系列单片机上集成 8K 的 ROM,128 字节 RAM 可供使用。(2)74LS244 为三态控制芯片,目的是使单片机足以驱动 ULN2003。ULN2003 是常用的达林顿管阵列,工作电压是 12V,可以提供足够的电流以驱动步进电机。关于这些芯片的详细介绍可参见它们各自的数据手册。(3)74373 是电平控制锁存器,它可使多个步进电机共用一组数据总线。我们用 P1.0P1.7作为 8 个电机的锁存信号输出端,见表 1。 这是一种基于总线分时复用的方式,以动态扫描的方式来发送控制信号,这和高级操作系统里的多任务进程调度的思想一致。这种方法明显的好处是节省 I/O 口,使系统可以控制更多的步进电机。本电路设计为控制 8 个。 3 程序设计 传统的步进电机驱动程序利用简单的条件循环来发送脉冲序列,但当电机数目发生变化时,编程繁杂,冗余代码较多,难以做到信号占空比一致,进而产生“抖动”现象。下面提出一种基于中断服务方式,面向舞蹈动作,可实时改变各个电机速度和方向(每 200ms 可改变一次)的程序设计方法。 31 速度归一化和线性关系 我们将速度量化成一个-128127 内可变的数,正号代表正转,负号代表返转,称之归一化速度(-128127 为一个字节)。给每个电机分配一个速度累加计数器 speed_tickersi(I=0,1,2,7 分别代表 8 个电机),初始值为 0,每个中断触发周期内给该累加计数器加上从舞步信息数组 dancedata 中读取的速度值 speedsi,当计数器值大于或等于预设的阈值MAX_SPEED_TICKER=600 时,则发送脉冲序列中的下一个(正转)或上一个(反转)给步进电机,这取决于速度的符号(参考 3.2 节)。同时,将该电机的累加计数器 speed_tickersi恢复为0。给出的速度值 speedi越大,则累加达到或超过阈值 MAX_SPEED_TICKER 的时间就越短,那么向步进电机发送脉冲的频率就越高,速度也就越快。 归一化速度值设为 num(-128127),电机实际旋转速度设为 V,那么 V 和 num 之间满足关系式: (1)当 num 是阈值 600 的约数时, 其中,x代表不超过 x 的最大整数。 (3)V 0是一个速度常数,即当归一化速度值 num=120 的时候对应的电机实际速度。 (4)num 和速度 V 近似线性关系,Vnum。正是因为有了这种函数关系,我们在舞蹈动作控制中,可以轻松实现速度在 大范围内变化。 32 速度正负实现方式 (1)在程序中,数组 steps8用于存放步进电机的脉冲序列。 (2)设置指针 cur_step8指向 8 个电机当前处在脉冲序列 step8中的位置。易知:0=stepi=7,其中,i 分别代表 8 个电机。(3)设置指针移动变量 delta=0。delta=1,指针向后移动一步,电机正转;delta=-1,指针向前移动一步,电机反转;delta=0,指针不移动,电机不发生转动。 33 程序具体步骤 331 初始化计时器 InitTimer,然后空循环,进入等中断阶段。 332 中断触发后,程序进入服务程序。 (1)执行函数 SetAllSpeeds,函数根据提供的速度值 speedi依次判断是否给各个电机发送脉冲,实现电机以特定的速度和方向旋转。SetAllSpeeds 具体算法流程见图 3。 (2)从定义的数组 dancedata 中读取新的速度信息,每 200ms 一次。 (3)将系统在调用中断处理函数时关闭的计时器重新打开 InitTimer。 (4)中断处理函数结束返回。 注意:第一,(1)和(2)不可交换,这是为了保证步进电机每步延时的均匀性;第二,内部中断间隔时间 1ms 内,8051 是否能够将中断服务程序中所有的代码执行完全?答案是肯定的。参考图 4,我们对整个中断服务程序进行了统计,它所要执行的指令数在 200300 之间变化,时钟间隔设置为 1ms,选用 12MHz 晶振,执行这些指令需要耗时约 500600s1ms,因此,中断处理完全可以在一个计时器周期内执行完毕。 34 舞蹈编排 在舞蹈编排中,我们面向的是动作,因此,必须关心三要素:快慢、方向和幅度。在程序中,舞步信息数组格式如下: 每组数据含有 8 个字节,分别代表 8 个电机的归一化速度 num,这点在 3.1 节中已经做了详细分析。程序每 200ms 读一次数据,换句话说,每组数据的有效期只有 200ms。我们分析表 2 一组数据代表的含义。 (1)组数为 25,这隐含了动作的时间信息。因为每组数据的有效期为 200ms,所以,25 组数据的执行时间为:200ms25=5000ms (2)左脚和右脚(轮式)的归一化速度相等,方向相反。根据公式(1)可以知道 V=0.5V0 所以,机器人以 0.5V0的速度原地转圈 5000ms。 (3)其它关节的归一化速度 num=0,说明其它关节均无动作。 35 可视化辅助程序简介 我们发现一个简单的动作竞需要 5 组数据,5 分钟的舞蹈需要 组数据(需占用 1.5K 存储空间,AT89C52 足够)。如果人工填写这些数据,将十分困难。因此在实际的运用中,我们用 C+Builder 编写了机器人模拟程序,采用图形界面,预一化速度和时间信息,写入 data.h,只要将其作为头文件,电机驱动程序将自动读取。 4 电路和程序特点总结 (1)一块单片机控制多个步进电机,总线分时复用。 (2)程序基于中断服务,电机工作稳定可靠。 (3)提出归一化速度,实现了速度 V 大范围可变。 (4)数据更新每 200ms 一次,可以轻松控制各个电机实时加速、减速、爆发,从而使舞蹈更人性化、感情化。这也正是我们允许数据量大的原因。 (5)辅助程序实现编程可视化。 文末是中国科大首届机器人舞蹈比赛中用到的程序实例。 参考文献 1 顾天柱,陈巳康.C51 交叉编译系统.上海:复旦大学出版社,1990,8 2 胡汉才.单片机原理及系统设计.北京:清华大学出版社,2002跳舞机器人的实现源程序一个典型的 A 型电机的加速过程 amotor.asm 程序清单:;该程序用来驱动 A 型电机左右各转 120 度DRIVE: MOV 81H,#40H ;避免堆栈指针的影响,81H 为 SP 的物理地址ACALL INIT ;调用初始化子程序MOV DPTR,#004FH ;DPTR 指向数据表MOV R0,05H ;开始为向右转,05H 为 R5 的物理地址TURN: CLR AMOVC A,A+DPTR ;取脉冲数MOV R3,A ;R3 存每阶段的脉冲数STEP: MOV A,#0FHMOVC A,A+DPTR ;取该阶段的延时数MOV R4,A ;延时数存 R4 中CJNE R0,#00H,NEXT ;状态字指针 R0 到尽头MOV R0,05H ;指针复位NEXT: MOV 80H,R0 ;输出脉冲,89H 为 P2 口的物理地址MOV 90H,R0MOV 0A0H,R0MOV 0B0H,R0INC R0 ;指针下移ACALL DELAY ;延时DJNZ R3,STEP ;该阶段循环INC DPTRDJNZ R2,TURN ;执行下一阶段DEC R6MOV A,R6JZ STOP ;总步数结束MOV R7,#40REST: MOV R4,#0FFH ;正转 120 度,休息ACALL DELAYDJNZ R7,RESTMOV R2,#0FH ;加速阶段数复位MOV DPTR,#004FH ;DPTR 复位CJNE R5,#20H,RIGHT ;R5 存正反状态字LEFT: MOV R5,#25HMOV R0,05HSJMP TURNRIGHT: MOV R5,#20HMOV R0,05HSJMP TURNSTOP: SJMP STOP ;停机;ORG 004FHPULETAB: DB 9,10,11,12,14,15,16,17DB 18,19,108,108,108,108,108TIMETAB: DB 55,50,45,42,36,33,31,29DB 27,26,24,24,24,24,24DELAY1: MOV 08H,#34 ;DELAY1 为延时 0.1MS 的标准子程序LOOP1: NOPDJNZ 08H,LOOP1RETDELAY: ACALL DELAY1DJNZ R4,DELAYRETINIT: MOV 20H,#33H ;INIT 为初始化子程序MOV 21H,#66HMOV 22H,#0CCHMOV 23H,#99HMOV 24H,#00H ;20H24H 存右转状态字MOV 25H,#33HMOV 26H,#99HMOV 27H,#0CCHMOV 28H,#66HMOV 29H,#00H ;25H29H 存左转状态字MOV R5,#20H ;R5 暂存状态地址MOV R6,#14H ;前进 10 大步MOV R2,#0FH ;阶段数RETEND以上就是一个典型的电机加速驱动过程,其主要的思想是:通过有规律的变化的延时程序来控制送往步进电机的脉冲的快慢,从而使电机得到逐渐加快的脉冲激励,稳定的实现加速过程,而不会出现因为脉冲的陡然加快而抖动的现象。完整的机器人舞蹈动作程序比这段程序复杂的多,要牵涉到多个电机的协调动作以及舞动动作的配合与连贯,其中主要的是 DRIVE 子程序,限于篇幅,在此不能一一列出,完整的驱动程序可与笔者联系。 (email:)1张建民.机电一体化系统设计.北京:北京理工大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材库房拆除方案
- 消防材料库存管理方案
- 车间承包经营与品牌形象策划合同模板
- 玻璃幕墙工程劳务分包合同含材料供应
- 出租车公司驾驶员健康体检协议书
- 精密制造厂房租赁服务全面合作协议
- 肺炎的护理与治疗
- 车辆保险代理权转让及保险产品创新合作协议
- 普工应聘考试题及答案
- 天津工商面试题及答案
- 钢板仓施工方案
- DBJ50-112-2016 现浇混凝土桥梁梁柱式模板支撑架安全技术规范
- 北京福赛尔V6891、V6851控制器(联动型)的调试
- 中航信离港系统培训(3)
- 第九章 解析空中三角测量基础
- 汽车维修安全生产管理制度大全
- 晋江市劳动合同书
- 苏州园区时尚舞台二期项目(简介)
- 中国银行_境外汇款申请书样板(最新版)-带中行行标
- EVA交联度实验操作规程
- 压力管道安装竣工资料--特检所版式
评论
0/150
提交评论