找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机连接A4988驱动42步进电机可以转动,但是不平缓

[复制链接]
跳转到指定楼层
楼主
ID:193383 发表于 2019-11-29 16:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dww465757120 于 2019-11-29 17:00 编辑


参照论坛上的程序,写了个51单片机连接A4988驱动42步进电机的程序,程序如下,A4988上的电流已经调到1.5A,线序对的,通电后,步进电机转动,但是抖动的厉害,不平缓;上网查了一些资料,说是A4988要接收周期脉冲信号,不是方波信号?我的程序中STEP=~STEP  是不是产生的就是方波信号?麻烦大神们解答一下,如果是这个原因,那怎么改成周期性的脉冲信号?如果不是这个原因,麻烦大神帮忙解决下,谢谢!
PS:本人是学机械的,单片机只是业余爱好,所以水平有限。。。。。。


#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
        
sbit DIR=P2^2;         //方向
sbit STEP=P2^1;       //脉冲
sbit keyloop=P2^6;      //循环启动键
uint n;            
uint a;         


/*********************延时函数*********************************/
void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;


        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}


        


void ndelay(n)
{
        while(n)
        {
                n--;
                Delay1ms();
        }
}




/*********************定时器初始化函数*****************************/
void Timer0Init()
{
        TMOD=0X01;
        TH0=(65536-a)/256;
        TL0=(65536-a)%256;
        ET0=1;
        EA=1;
}


/*************************循环启动函数***************************/
void keyloopprint()
{
        if(keyloop==0)
        {
                ndelay(n);
                if(keyloop==0)
                {
                        TR0=~TR0;
                }
        }
}




void main()
{
        STEP=0;
        DIR=1;
        a=625;        /*用的4细分,按照60转/min计算的,一秒就是1转,也就是200*4=800步,一步就是
                          1/800=0.00125秒,初始定时就是0.00125/2=0.000625,所以a=625微秒,不知道这样算对不对?*/


        TR0=0;
        n=20;
        Timer0Init();
        while(1)
        {
                keyloopprint();
        }
}




void time0() interrupt 1
{
        TH0=(65536-a)/256;
        TL0=(65536-a)%256;
        STEP=~STEP;
}

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

使用道具 举报

沙发
ID:94031 发表于 2019-11-30 10:24 | 只看该作者
步进电机低速运行有震动很正常,需要通过细分技术来解决低速震动问题。

评分

参与人数 1黑币 +30 收起 理由
dww465757120 + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:193383 发表于 2019-12-1 14:53 | 只看该作者
xuyaqi 发表于 2019-11-30 10:24
步进电机低速运行有震动很正常,需要通过细分技术来解决低速震动问题。

但是我调到8细分,高速情况下还是这样。。。。。
回复

使用道具 举报

地板
ID:94031 发表于 2019-12-2 10:20 | 只看该作者
dww465757120 发表于 2019-12-1 14:53
但是我调到8细分,高速情况下还是这样。。。。。

那就是细分级别还不够,继续提高细分数。

评分

参与人数 1黑币 +30 收起 理由
dww465757120 + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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