舞蹈机器人步进电机驱动电路和程序设计

发布者:乡村乐园最新更新时间:2015-01-27 来源: laogu关键字:舞蹈机器人  步进电机  驱动电路 手机看文章 扫描二维码
随时随地手机看文章

在中国科大首届机器人舞蹈比赛中(中央10台节目转播),我们用一个单片机控制多个步进电机指挥跳舞机器人的双肩、双肘和双脚伴着音乐做出各种协调舒缓充满感情的动作,荣获一等奖。电路采用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口,分别称为P0~P3。该系列单片机上集成8K的ROM,128字节RAM可供使用。

(2)74LS244为三态控制芯片,目的是使单片机足以驱动ULN2003。ULN2003是常用的达林顿管阵列,工作电压是12V,可以提供足够的电流以驱动步进电机。关于这些芯片的详细介绍可参见它们各自的数据手册。

(3)74373是电平控制锁存器,它可使多个步进电机共用一组数据总线。我们用P1.0~P1.7作为8个电机的锁存信号输出端,见表1。 

 

 

 

这是一种基于总线分时复用的方式,以动态扫描的方式来发送控制信号,这和高级操作系统里的多任务进程调度的思想一致。这种方法明显的好处是节省I/O口,使系统可以控制更多的步进电机。本电路设计为控制8个。

3 程序设计

传统的步进电机驱动程序利用简单的条件循环来发送脉冲序列,但当电机数目发生变化时,编程繁杂,冗余代码较多,难以做到信号占空比一致,进而产生“抖动”现象。下面提出一种基于中断服务方式,面向舞蹈动作,可实时改变各个电机速度和方向(每200ms可改变一次)的程序设计方法。

3.1 速度归一化和线性关系

我们将速度量化成一个-128~127内可变的数,正号代表正转,负号代表返转,称之归一化速度(-128~127为一个字节)。给每个电机分配一个速度累加计数器speed_tickers[i](I=0,1,2…,7分别代表8个电机),初始值为0,每个中断触发周期内给该累加计数器加上从舞步信息数组dancedata中读取的速度值speeds[i],当计数器值大于或等于预设的阈值MAX_SPEED_TICKER=600时,则发送脉冲序列中的下一个(正转)或上一个(反转)给步进电机,这取决于速度的符号(参考3.2节)。同时,将该电机的累加计数器speed_tickers[i]恢复为0。给出的速度值speed[i]越大,则累加达到或超过阈值MAX_SPEED_TICKER的时间就越短,那么向步进电机发送脉冲的频率就越高,速度也就越快。

归一化速度值设为num(-128~127),电机实际旋转速度设为V,那么V和num之间满足关系式:

(1)当num是阈值600的约数时,

 

其中,[x]代表不超过x的最大整数。

(3)V0是一个速度常数,即当归一化速度值num=120的时候对应的电机实际速度。

(4)num和速度V近似线性关系,V∝num。正是因为有了这种函数关系,我们在舞蹈动作控制中,可以轻松实现速度在大范围内变化。

3.2 速度正负实现方式

    (1)在程序中,数组steps[8]用于存放步进电机的脉冲序列。


        (2)设置指针cur_step[8]指向8个电机当前处在脉冲序列step[8]中的位置。
    易知:0<=step[i]<=7,其中,i分别代表8个电机。

(3)设置指针移动变量delta=0。delta=1,指针向后移动一步,电机正转;delta=-1,指针向前移动一步,电机反转;delta=0,指针不移动,电机不发生转动。 [page]

3.3 程序具体步骤

3.3.1初始化计时器InitTimer,然后空循环,进入等中断阶段。

3.3.2 中断触发后,程序进入服务程序。

    (1)执行函数SetAllSpeeds,函数根据提供的速度值speed[i]依次判断是否给各个电机发送脉冲,实现电机以特定的速度和方向旋转。SetAllSpeeds具体算法流程见图3。

(2)从定义的数组dancedata中读取新的速度信息,每200ms一次。

(3)将系统在调用中断处理函数时关闭的计时器重新打开InitTimer。

(4)中断处理函数结束返回。

注意:第一,(1)和(2)不可交换,这是为了保证步进电机每步延时的均匀性;第二,内部中断间隔时间1ms内,8051是否能够将中断服务程序中所有的代码执行完全?答案是肯定的。参考图4,我们对整个中断服务程序进行了统计,它所要执行的指令数在200~300之间变化,时钟间隔设置为1ms,选用12MHz晶振,执行这些指令需要耗时约500~600μs<1ms,因此,中断处理完全可以在一个计时器周期内执行完毕。

 

 

 

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一次,可以轻松控制各个电机实时加速、减速、爆发,从而使舞蹈更人性化、感情化。这也正是我们允许数据量大的原因。 [page]

(5)辅助程序实现编程可视化。

文末是中国科大首届机器人舞蹈比赛中用到的程序实例。





 

参考文献 

1 顾天柱,陈巳康.C51交叉编译系统.上海:复旦大学出版社,1990,8

2 胡汉才.单片机原理及系统设计.北京:清华大学出版社,2002

关键字:舞蹈机器人  步进电机  驱动电路 引用地址:舞蹈机器人步进电机驱动电路和程序设计

上一篇:基于单片机的查询方式按键
下一篇:C51中断处理过程

推荐阅读最新更新时间:2024-03-16 13:52

中科阿尔法单极霍尔芯片AH506(替代HAL1506)助力热水器步进电机零位检测
步进电机能精确控制进气量从而达到温度的准确控制,新一代燃气热水器便是使用步进电机代替常规燃气比例阀,进行燃气输出控制模块。 步进电机只能检测增量信息,而初始的零位检测一般采用霍尔开关的方案。热水器行业安全稳定性要求高,工作电压一般采用36V,而且点火脉冲对电子元件的ESD和EMC性能也有要求。 针对热水器步进电机模块的需求,这里提到中科阿尔法推出的高灵敏度单极霍尔开关AH506。该芯片包括温度补偿、比较器和输出驱动器。此外,机械应力对芯片的磁性参数影响很小,适用于工业环境和汽车应用,且符合AEC-Q100汽车电子行业测试标准。AH506有两种封装形式:TO92S和SOT23-3L,且封装符合ROHS标准。 AH506
[嵌入式]
中科阿尔法单极霍尔芯片AH506(替代HAL1506)助力热水器<font color='red'>步进电机</font>零位检测
51单片机PWM细分控制步进电机的研究
为什么要PWM细分呢?因为这样可以是步进电机运行平稳、减小噪音、增大转速(MAX的)、增加力矩…… 为什么要强调是51单片机呢?因为51单片机没有硬件PWM模块,所以只能软件模拟了…… 研究这玩意儿,我走了许多弯路,看了许多文献,最后发现,尽信书不如无书…… 就用28系列4相5线电机来说吧。 整步驱动(四相四拍)时序为: A相 B相 C相 D相 1拍 1 0 0 0 2拍 0 1 0 0 3拍 0 0 1 0 4拍 0 0 0 1 我想没人用这样的方式来驱动吧,这震动也太大了。 2细分驱动(四相八拍)时序为: A相 B相 C相
[单片机]
51单片机PWM细分控制<font color='red'>步进电机</font>的研究
基于恒流二极管的小功率LED驱动电路设计
近几年,LED 的发光效率增长100 倍,成本下降了10 倍,广泛用于背光、信号显示、照明等领域。在LED 光源及市场开发中,极具发展与应用前景的是白光LED,它用作固体照明器件的经济性显著,且有利于环保,正逐步取代传统的白炽灯。 由于小功率白光LED 价格低廉,发热量小,光效高等特点,被大范围的应用到了普通照明,景观照明,因此小功率LED 驱动电源的设计和性能上的提高也就有了迫切的需求。LED 照明灯通常采用市电供电,由于LED 工作电压低,电流小等特点,用市电驱动LED 要解决降压和整流问题,还要有比较高的效率,较小的体积和较低成本。LED 是电流驱动器件,其亮度与正向电流成正比,为了保证LED 发光高效均匀、
[电源管理]
基于恒流二极管的小功率LED<font color='red'>驱动电路</font>设计
基于51单片机的步进电机控制器在玻璃管加热控制系统中
  1 前言   步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,是一种输出与输入数字脉冲对应的增量驱动元件,具有快速启动和停止的能力。但大多数设计人员常常习惯于用逻辑电路实现复杂的步进电机的控制,虽然已经取得很大成效,但实现起来成本高、费时多,而且一旦组成了电路,就很难再改动,因此不得不完全重新设计控制器。微处理器与微计算机的先进技术和低廉的价格,给步进电机的控制开创了一个新的局面 。人们完全可以借助于软件来对步进电机实施控制,从而实现复杂而成本又不高的控制系统,同时还可以很灵活地通过改变程序来改变控制方案。为此,我们基于 89C51单片机设计了步进电机控制器用于玻璃管加热系统。该控制器具有线路简洁、性能良好
[单片机]
基于51单片机的<font color='red'>步进电机</font>控制器在玻璃管加热控制系统中
基于XC2267M的仪表盘步进电机控制
随着现代电子技术的发展,中高档汽车上的组合数字仪表越来越多地采用“机电一体化”的步进电机。步进电机又称脉冲电动机,它能将输入的脉冲信号变成不连续的机械动作,是一种将电脉冲转化为角位移的执行机构。对步进电机的每一相来讲,输入的是一个脉冲列,只要控制好电脉冲,就能精确控制步进电机的角位移量,转速和转矩。从这个意义上来说,步进电机控制的核心是PWM(脉冲宽度调制)细分控制技术。 用单片机来控制步进电机已有近15年的发展历史。出于降低总体成本的考虑,长期以来所采用的芯片都是8位单片机。由于单片机自身性能的局限性,对于步进电机的控制常常采用不彻底的细分控制或带外设的细分控制。不彻底的细分控制一般是将步进电动机的控制位置数(以两相步进电机为
[工业控制]
基于XC2267M的仪表盘<font color='red'>步进电机</font>控制
机器人语音识别系统的设计
1 引言 机器人听觉系统主要是对人的声音进行语音识别并做出判断,然后输出相应的动作指令控制头部和手臂的动作,传统的机器人听觉系统一般是以PC机为平台对机器人进行控制,其特点是用一台计算机作为机器人的信息处理核心通过接口电路对机器人进行控制,虽然处理能力比较强大,语音库比较完备,系统更新以及功能拓展比较容易,但是比较笨重,不利于机器人的小型化和复杂条件下进行工作,此外功耗大、成本高。 本次设计采用了性价比较高的数字信号处理芯片TMS320VC5509作为语音识别处理器,具有较快的处理速度,使机器人在脱机状态下,独立完成复杂的语音信号处理和动作指令控制,FPGA系统的开发降低了时序控制电路和逻辑电路在PCB板所占的面积,使机器
[嵌入式]
步进电机基础知识:PM vs VR vs Hybrid
市场上的步进电机主要分为三种类型:PM(永磁)型、VR(可变磁阻)型和混合型。有什么区别,您应该使用哪一个,它们是如何工作的? 让我们快速回顾一下步进电机的作用。步进电机以特定的“步数”增量旋转,无需编码器反馈或复杂的 PID 回路。旋转量和速度可通过脉冲数和频率轻松控制,步进电机可提供±3 弧分 (±0.05°)的高度可重复停止精度。当步进电机通电但处于静止状态时,在没有电磁制动器的情况下会产生保持转矩。它们非常适合电机需要准确停止并提供保持扭矩的成本敏感型应用。 步进电机的设计会影响其特性。在接下来的几分钟内,我将介绍市场上的三种步进电机,以及为什么偏爱其中一种。 PM“永磁”型 这是一种步进电机,其转子由两个彼此
[嵌入式]
<font color='red'>步进电机</font>基础知识:PM vs VR vs Hybrid
基于单片机的步进电机开环控制系统
0 引言 步进电机是一种将电脉冲信号变换成相应的角位移或直线位移的机电执行元件。控制步进电机的输入脉冲数量、频率及电机各相绕组的接通顺序,可以得到各种需要的运行特性。尤其与数字设备配套时,体现了更大的优越性,因此广泛应用于数字控制系统中。 本文介绍已实现的单片机对步进电机的数字控制系统。该控制系统中,控制器担负着产生脉冲以及发送、接收控制命令的任务。本文对控制器的设计,尤其是脉冲产生电路的设计作了详细的介绍。 1 系统设计 步进电机开环控制系统框图如图1所示。系统由步进电机控制器、步进电机驱动电源、步进电机和LED状态显示等4部分组成,本文着重介绍步进电机控制器、步进电机驱动电源、LED 显示状态3部分。
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved