舞蹈机器人步进电机驱动电路和程序设计
所有的代码执行完全?答案是肯定的。参考图4,我们对整个中断服务程序进行了统计,它所要执行的指令数在 200~300之间变化,时钟间隔设置为1ms,选用12MHz晶振,执行这些指令需要耗时约500~600μs1ms,因此,中断处理完全可以在一个计时器周期内执行完毕。
3.4 舞蹈编排
在舞蹈编排中,我们面向的是动作,因此,必须关心三要素:快慢、方向和幅度。在程序中,舞步信息数组格式如下:
每组数据含有8个字节,分别代表8个电机的归一化速度num,这点在3.1节中已经做了详细分析。程序每200ms读一次数据,换句话说,每组数据的有效期只有200ms。我们分析表2一组数据代表的含义。
(1)组数为25,这隐含了动作的时间信息。因为每组数据的有效期为200ms,所以,25组数据的执行时间为:200ms×25=5000ms
(2)左脚和右脚(轮式)的归一化速度相等,方向相反。根据公式(1)可以知道
V=0.5×V0
所以,机器人以0.5V0的速度原地转圈5000ms。
(3)其它关节的归一化速度num=0,说明其它关节均无动作。
3.5 可视化辅助程序简介
我们发现一个简单的动作竞需要5组数据,5分钟的舞蹈需要
组数据(需占用1.5K存储空间,AT89C52足够)。如果人工填写这些数据,将十分困难。因此在实际的运用中,我们用C+Builder编写了机器人模拟程序,采用图形界面,预一化速度和时间信息,写入data.h,只要将其作为头文件,电机驱动程序将自动读取。
4 电路和程序特点总结
(1)一块单片机控制多个步进电机,总线分时复用。
(2)程序基于中断服务,电机工作稳定可靠。
(3)提出归一化速度,实现了速度V大范围可变。
(4)数据更新每200ms一次,可以轻松控制各个电机实时加速、减速、爆发,从而使舞蹈更人性化、感情化。这也正是我们允许数据量大的原因。
(5)辅助程序实现编程可视化。
文末是中国科大首届机器人舞蹈比赛中用到的程序实例。
参考文献
1 顾天柱,陈巳康.C51交叉编译系统.上海:复旦大学出版社,1990,8
2 胡汉才.单片机原理及系统设计.北京:清华大学出版社,2002
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)