找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18829|回复: 12
打印 上一主题 下一主题
收起左侧

步进电机如何加快速度

  [复制链接]
跳转到指定楼层
楼主
ID:157221 发表于 2016-12-25 23:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将步进电机驱动作为子程序调用,但是由于主程序处理其他子模块需要很多时间导致步进电机装的很慢,这种情况下该如何加快转速,比如让步进电机的驱动并行运行??
下面是我的代码:
void main(void)
{         
        InitLcd();
        temp_set_num=250;
        while(1)
        {
           temp_display();  //主要是这个显示模块要耗费很多时间
          
           stepper(&x);
        };       
}


#include <reg51.h>
#include "key.h"

unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格
unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格

/*       延时函数            */

void Delay_2(unsigned int i)//延时
{
while(--i);
}

/*       主函数          */

void stepper(unsigned int *x)
{

//unsigned char i;

        if(flag==1)            
         {
             (*x)++;      //4相
             if((*x)==4) (*x)=0;
             P1=F_Rotation[*x];  //输出对应的相 可以自行换成反转表格
             Delay_2(1);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
                 
          }
        if(flag==2)
         {
                 (*x)++;     //4相
                 if((*x)==4) (*x)=0;
             P1=B_Rotation[*x];  //输出对应的相
             Delay_2(1);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
                 
          }
        if(flag==0)  //停止
         {
          P1=0;
          }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-12-26 05:15 来自手机 | 只看该作者
虽然通过优化程序也是可以做到加快步进电机的速度,如果不是量产的话加一个步进电机驱动芯片会更容易些吧!
回复

使用道具 举报

板凳
ID:157221 发表于 2016-12-26 08:11 | 只看该作者
谢谢您的回答。我是一名学生,这是一个微机实验,做模拟空调,只有一个51单片机,不做量产。我后来的想法是用定时器中后段来单独做。
回复

使用道具 举报

地板
ID:157647 发表于 2016-12-26 09:49 | 只看该作者
速度控制: 步进电机的运转速度会与输入的脉冲速度成等比例的关系,所以在脉冲的速度愈快时,步进电机的转速也会跟着加快;脉波速度愈慢时,电机的转速自然也跟着变慢。
电机的运转速度(RPM)与脉冲速度(PPS,又称Hz)间的关系式如下:
电机的运转速度(RPM)= 脉冲速度(PPS或 Hz) × 60 ÷ 步进电机分割数/圈
说明:
1.RPM为一般电机的速度单位,即 rev / min,为每分钟电机所转的圈数;PPS为步进、伺服电机的速度单位,即pulse per second,为每秒所送出的脉冲数。
2.由于RPM与PPS的单位不同,所以于转换的过程中要先将PPS的秒钟乘以60变为分钟 。
3.步进电机分割数/圈,又代表要让电机转一圈所必须送出的脉冲数。
4.上述公式拆解后之单位表示为→ rev/min = pulse/sec ×60 ×1/分割数
实例:五相半步级角0.36°时(即1000分割/圈)
(1)电机的运转速度600RPM时,即相当于脉冲速度10,000PPS。
(2)脉冲速度3,000PPS,即相当于电机的运转速度180RPM。
位置控制: 步进电机不需要位置传感器(SENSOR),就可依照输入的脉冲数决定移动量,并将负载顺利、正确的送达指定位置点上。而移动量的大小,是依照电机分辨率的大小与输入的脉冲数来决定。脉冲数(PULSE)与移动量间的关系式如下: 位置移动量( °)= 步进电机分辨率( °)× 输入脉冲数
实例:二相全步级角1.8°时
*当输入1000个脉冲数(即1000PULSE),此时之移动量会是1800°,刚好为5圈。
回复

使用道具 举报

5#
ID:105206 发表于 2016-12-26 13:51 | 只看该作者
1,延时函数调小点,或用us 级。
2,把晶振放大点。
回复

使用道具 举报

6#
ID:157746 发表于 2016-12-26 14:54 | 只看该作者
进电机的速度,取决于您的软件给步进电机发的脉冲信号的频度。一种固定的频度对应于一个固定的转速。如要减速度,只要把每个脉冲的间隔时间逐步加大一点;如要加速,只要把每个脉冲的间隔时间逐步缩短
回复

使用道具 举报

7#
ID:157777 发表于 2016-12-26 15:37 | 只看该作者
买好 质量好的 电机
回复

使用道具 举报

8#
ID:157786 发表于 2016-12-26 15:57 | 只看该作者
晶振放大。
回复

使用道具 举报

9#
ID:101970 发表于 2016-12-26 15:57 | 只看该作者
减少延时的时间能让你转的更快,但想更快就带换好点的步进电机,或者不带减速的
回复

使用道具 举报

10#
ID:157268 发表于 2016-12-26 22:18 | 只看该作者
可以按键调整,调用delay
回复

使用道具 举报

11#
ID:157886 发表于 2016-12-26 22:31 | 只看该作者
步进电机的运转速度会与输入的脉冲速度成等比例的关系,所以在脉冲的速度愈快时,步进电机的转速也会跟着加快;脉波速度愈慢时,电机的转速自然也跟着变慢。 电机的运转速度(RPM)与脉冲速度(PPS,又称Hz)间的关系式如下: 电机的运转速度(RPM)= 脉冲速度(PPS或 Hz) × 60 ÷ 步进电机分割数/圈
回复

使用道具 举报

12#
ID:158001 发表于 2016-12-27 12:38 | 只看该作者
http://wenku.baidu.com/link?url= ... BFIsqgfzCwkwjQycKMO
这是步进电机速度调节方法的文档的链接,希望有帮助
回复

使用道具 举报

13#
ID:153199 发表于 2016-12-29 13:04 | 只看该作者
用驱动芯片tb6560
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表