搜索
bottom↓
回复: 8

5线4相步进电机用2003直接驱动,怎么细分?

[复制链接]

出0入0汤圆

发表于 2013-6-15 14:47:36 | 显示全部楼层 |阅读模式
用的是小型,24BYJ48A型减速步进电机,减速比为1:64,步进角为5.625/64度。如果转一圈需要360/5.625*64=4096个脉冲。
电路图如下:

通电方式采用4相八拍:A-AB-B-BC-C-CD-D-DA.为什么我走64步,才半圈?
看到别人做的,走了128步才半半圈,是不是用了细分:
驱动程序如下,没有做细分的。

BYTE code reveral[8] = {0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};   //逆时钟旋转相序表
BYTE code forward[8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    //正时钟旋转相序表

//frequency:调节步进电机速度,n调节步进电机步数
void motor_forward( Byte frequency, Byte n )//正向
{
        BYTE i,j;
       
        for(j=0;j<n;j++)                 //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周
        {
                for(i=0;i<8;i++)  
                {
                        OUT_A = (bit) (foreword[i] & 0x08);
                        OUT_B = (bit) (foreword[i] & 0x04);
                        OUT_C = (bit) (foreword[i] & 0x02);
                        OUT_D = (bit) (foreword[i] & 0x01);

                        Delay_1ms(frequency);   //调节转速
                }
        }
       
        OUT_A = 0;                        //切断所有通电
        OUT_B = 0;
        OUT_C = 0;
        OUT_D = 0;       
}

//frequency:调节步进电机速度,n调节步进电机步数
void motor_reveral( Byte frequency, Byte n )//反向
{
        BYTE i,j;
       
        for(j=0;j<n;j++)
        {
                for(i=0;i<8;i++)  //旋转45度
                {
                        OUT_A = (bit) (reveral[i] & 0x08);
                        OUT_B = (bit) (reveral[i] & 0x04);
                        OUT_C = (bit) (reveral[i] & 0x02);
                        OUT_D = (bit) (reveral[i] & 0x01);

                        Delay_1ms(frequency);   //调节转速
                }
        }
       
        OUT_A = 0;                        //切断所有通电
        OUT_B = 0;
        OUT_C = 0;
        OUT_D = 0;       
}

我用按键测试步进,.为什么我走64步,才半圈?
看到别人做的,走了128步才半半圈,是不是用了细分?

如果用PWM来细分,该怎么做?请教大家。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-6-15 15:33:49 | 显示全部楼层
没人关注,自己顶一下,求解答。

出0入0汤圆

发表于 2013-6-15 15:41:27 | 显示全部楼层
驱动应当是各个管脚同时输出,你应当用个中间变量先把四个输出准备好,一次性更替

出0入0汤圆

发表于 2013-6-15 19:58:37 | 显示全部楼层
估计是4相4拍吧? 别人的是8拍 ?

出0入0汤圆

 楼主| 发表于 2013-6-15 22:08:17 | 显示全部楼层
OUT_A = (bit) (foreword[i] & 0x08);
OUT_B = (bit) (foreword[i] & 0x04);
OUT_C = (bit) (foreword[i] & 0x02);
OUT_D = (bit) (foreword[i] & 0x01);

我这里是同时输出吧?

BYTE code reveral[8] = {0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};   //逆时钟旋转相序表
BYTE code forward[8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    //正时钟旋转相序表
这里不是四相八拍?

出0入0汤圆

 楼主| 发表于 2013-6-17 08:47:31 | 显示全部楼层
没人关注

出0入0汤圆

 楼主| 发表于 2013-6-19 09:03:12 | 显示全部楼层
这个4相8拍的步进电机,每步转5.625度,为什么可以做到每步2.812度?也就是128步,转一圈。有没有人知道怎么做啊?

出0入10汤圆

发表于 2013-8-16 23:31:02 | 显示全部楼层
wenking99 发表于 2013-6-19 09:03
这个4相8拍的步进电机,每步转5.625度,为什么可以做到每步2.812度?也就是128步,转一圈。有没有人知道怎 ...

大哥,有问题想请假你!

出0入0汤圆

发表于 2014-4-23 10:16:25 | 显示全部楼层
我也在想这个问题,不过貌似人家的电路不是这样的。据说是把控制电流变为小台阶往上加。我也不是很明白。也没人关注。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 06:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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