分享

基于STC89C52单片机的体操机器人系统设计 (2)

 共同成长888 2013-06-08
基于STC89C52单片机的体操机器人系统设计 (2)
   
 
  
3  体操机器人的机械结构设计
体操机器人的机械结构设计主要考虑机器人完成各种体操动作的可行性,例如:完成双手俯卧撑、单手俯卧撑、侧滚翻、前滚翻等动作。由于本机器人不做行走动作,因此在腿部的设计中没有增加更多自由度。在本体操机器人的结构设计中采用Siemens公司的UG结构模型设计软件,设计了机器人的全部结构零件。如图3所示: 
 
 
 
仿人型机器人制作完毕后的实物图如图4所示: 
 
 
 
4  仿人型机器人的控制程序设计
4.1  脉宽差控制算法
多路舵机控制的基本方法是顺序输出各路脉冲给不同舵机,利用单片机高速的处理速度来实现多路控制。但是这一类控制算法对于控制舵机的数目有限制,因为控制舵机所需的PWM波的典型周期是20ms,而每一路舵机所需的最大正脉宽长度为2.5ms,因此最多只能控制8路舵机。本系统中需要控制的舵机有10个,所以选择了改进的控制算法——脉宽差法。
脉宽差法控制分为以下几个步骤:
(1) 分组排序。将多路舵机控制数据每8路分为一组,对于每一组数据(控制脉冲长短),按照从小到大的顺序排序。
(2) 计算差值。计算舵机控制数据的差值并保存计算每组内相邻的两个数据的差值(数值大的数与数值小的数的差)并保存于差值数组中。该差值数组共有8 个存储单元,第一个单元存放的是该组舵机控制数据的最小值,从第二个单元开始存放舵机控制数据的差值。
(3) 数据转换。把差值数组中的数据转换为定时时间(即控制脉冲宽度差值),再继续转换为定时初值并保存于脉宽差数组中。
(4) 舵机控制。控制某一组舵机时,先向该组内所有舵机置高电平(启动舵机),然后把脉宽差数组中的第一个数据赋值给定时寄存器。定时中断发生时,先关断脉宽差数组中第一个数据所对应的舵机,再向定时寄存器中填入脉宽差数组中的第二个数据。依此类推,就可以完成该组所有舵机的控制。在一个控制周期(20ms)内,依次用定时器定时输出脉冲控制每组舵机。在第三组舵机控制毕后,继续定时用低电平补足其余时间以完成20ms。脉宽差法原理如图5所示。 
 
 
 
4.2  脉宽差法的程序实现
这里介绍的实现方法是基于STC89C52单片机的C语言编写的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多