找回密码
 立即注册

QQ登录

只需一步,快速开始

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

步进电机转数和运行时间怎么计算?求教!

[复制链接]
跳转到指定楼层
楼主
ID:86913 发表于 2017-1-6 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教行家,主函数一个循环,步进电机转了多少圈,电机转动的时间又是多少?怎么计算的?谢谢!
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code up_data[8]={ 0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8};  //正转  
uchar  rate;        
/********以下是延时函数********/
void Delay(uint speed)                               
{
        uint i,j;
        for(i=speed;i>0;i--)                     
           for(j=110;j>0;j--);   // 延时时间为1ms
}

/********以下是步进电机转动函数********/
void  motor_up()
{
        uchar i;
        for (i=0; i<8; i++)     //采用35步进电机(2相4线,四拍步距角1.8度)
  {
        P1 = up_data[i];               //取正转数据
        Delay(12);                  //调节转速
  }
}

/********以下是步进电机加速、匀速、减速运行函数********/
void  motor_turnb()
{
        uint  count;                     //转动次数计数器
  rate=20;              //速度分8档
  count=200;                             
  do
     {
        motor_up();                 //加速
              rate--;
     }
        while(rate!=0x01);
        do
     {           
        motor_up();                 //匀速
        count--;
     }
        while(count!=0x01);
        do
     {
        motor_up();                 //减速
              rate++;
     }
        while(rate!=0x0a);   
}

/********以下是主函数********/
main()
{     
        while(1)
   {
          P1=0xff;
        motor_turnb();
        Delay(1000);                //延时1s               
   }
}


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

使用道具 举报

沙发
ID:86913 发表于 2017-2-13 21:06 | 只看该作者
已经知道了1
下面这一句
Delay(12);                  //调节转速
应改为
Delay(rate);                  //调节转速
否则不存在加速和减速
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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