打印

步进电机驱动问题!求解答

[复制链接]
2520|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
日暮惜乔|  楼主 | 2013-1-21 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lbygtwx| | 2013-1-21 16:41 | 只看该作者
细分越大运行越平稳。

使用特权

评论回复
板凳
wsnsyy| | 2013-1-21 16:54 | 只看该作者
步進電機的精度怎麼控制啊?

使用特权

评论回复
地板
sky大花猫| | 2013-1-21 17:14 | 只看该作者
你说的细分应该就是转一圈走几步,16步的就是转一圈16个脉冲,频率相同情况下,圈数=频率/步数,步数越小圈数越大。但超过一定速度再减小步数速度也不增加了。。所以选择稍大点的电机留有余量

使用特权

评论回复
5
日暮惜乔|  楼主 | 2013-1-21 17:43 | 只看该作者
lbygtwx 发表于 2013-1-21 16:41
细分越大运行越平稳。

嗯,是的,但是为什么细分大但是速度上不去呢???理论是能上去的

使用特权

评论回复
6
lbygtwx| | 2013-1-23 08:50 | 只看该作者
日暮惜乔 发表于 2013-1-21 17:43
嗯,是的,但是为什么细分大但是速度上不去呢???理论是能上去的

细分越大,转一圈需要的步数越多,速度要上去,频率要增大。步进电机要先加速,再匀速运行,不能一下子把速度加上去,那样容易失步。

使用特权

评论回复
7
ayb_ice| | 2013-1-23 09:27 | 只看该作者
细分越大,同样的脉冲下,转速当然小了,要想达到原来的速度,脉冲必须对应放大细分倍数

细分后运转更平稳,带载能力强些

使用特权

评论回复
8
duhemayi| | 2013-1-23 10:33 | 只看该作者
看看

使用特权

评论回复
9
日暮惜乔|  楼主 | 2013-1-23 16:21 | 只看该作者
ayb_ice 发表于 2013-1-23 09:27
细分越大,同样的脉冲下,转速当然小了,要想达到原来的速度,脉冲必须对应放大细分倍数

细分后运转更平稳,带 ...

脉冲对应放大细分倍数是什么意思??
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit clk=P3^5;
sbit ENA=P1^7;
sfr AUXR=0x8e;
uchar num,bb;
float cc;
unsigned char flag;
void delay(unsigned int aa)
{
        while(--aa);
}
void main()
{
        ENA=1;
        num=70;
        AUXR=0x80;
        TMOD=0x01;
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        IE=0x82;
        TR0=1;
        while(1)
        {
                clk=~clk;
                delay(num);
                if(flag==1)
                {
                        num=25;
                }
        }
}
void Timer0_ISR() interrupt 1
{
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        bb++;
        if(bb==2)
        {
                //bb=0;
                num--;
                if(num==25)
                {
                        flag=1;
                }
        }
       
}
拜托高手帮帮忙吧!!我感觉程序没什么问题啊。。。可是到了16细分速度就是上不去啊。为什么呢

使用特权

评论回复
10
日暮惜乔|  楼主 | 2013-1-23 16:22 | 只看该作者
lbygtwx 发表于 2013-1-23 08:50
细分越大,转一圈需要的步数越多,速度要上去,频率要增大。步进电机要先加速,再匀速运行,不能一下子把 ...

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit clk=P3^5;
sbit ENA=P1^7;
sfr AUXR=0x8e;
uchar num,bb;
float cc;
unsigned char flag;
void delay(unsigned int aa)
{
        while(--aa);
}
void main()
{
        ENA=1;
        num=70;
        AUXR=0x80;
        TMOD=0x01;
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        IE=0x82;
        TR0=1;
        while(1)
        {
                clk=~clk;
                delay(num);
                if(flag==1)
                {
                        num=25;
                }
        }
}
void Timer0_ISR() interrupt 1
{
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        bb++;
        if(bb==2)
        {
                //bb=0;
                num--;
                if(num==25)
                {
                        flag=1;
                }
        }
       
}
能帮我看看是不是程序的问题吗!拜托啦

使用特权

评论回复
11
日暮惜乔|  楼主 | 2013-1-23 16:23 | 只看该作者
duhemayi 发表于 2013-1-23 10:33
看看

什么!!

使用特权

评论回复
12
ayb_ice| | 2013-1-23 16:56 | 只看该作者
本帖最后由 ayb_ice 于 2013-1-23 16:58 编辑

都说了,如果
细分由1变成16的话,脉冲要加大16倍

那么应该这样
TH0=(65536-2000/16)/256;
TL0=(65536-2000/16)%256;
可能你的MCU处理不过来的,而来你的时钟不是在中断里处理的,还可能引入额外的延时

而且你这还只是个DEMO,实际中还要处理传感器等其它信号...

使用特权

评论回复
13
日暮惜乔|  楼主 | 2013-1-23 19:17 | 只看该作者
ayb_ice 发表于 2013-1-23 16:56
都说了,如果
细分由1变成16的话,脉冲要加大16倍

现在是频率能达到那个值,但是就是实际达到的频率但是16细分转不起来,只能到360转每分??请问这是怎么回事呢???我写的是用定时器给脉冲的,所以可以处理传感器和其他信号,非常感谢

使用特权

评论回复
14
受不了了| | 2013-1-23 22:31 | 只看该作者
楼主都发了好多帖子了,还没好啊,你的程序没加减速,这个是控制步进电机必须的。脉冲均匀,频率平滑,无突跳,那样才能高速运行。用示波器观察一下脉冲的疏密变化自然流畅不

使用特权

评论回复
15
ayb_ice| | 2013-1-24 08:09 | 只看该作者
本帖最后由 ayb_ice 于 2013-1-24 08:12 编辑
日暮惜乔 发表于 2013-1-23 19:17
现在是频率能达到那个值,但是就是实际达到的频率但是16细分转不起来,只能到360转每分??请问这是怎么 ...


那很可能是丢步了,
脉冲太快,加减速没有做好.电机本身都有可能的,你这个可以肯定是程序的问题的

你的程序利用flag变量同步中断与主循环,就有可能有问题的,不能实时处理,特别是受主循环的延时程序影响大,当然这只是随便看一下的结论,没有时间仔细看

使用特权

评论回复
16
日暮惜乔|  楼主 | 2013-1-24 08:44 | 只看该作者
受不了了 发表于 2013-1-23 22:31
楼主都发了好多帖子了,还没好啊,你的程序没加减速,这个是控制步进电机必须的。脉冲均匀,频率平滑,无突 ...

是有加减速的,,,我用示波器观察过,,加速度开始变化小后来变化大。。。哎。。还是很感谢你

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

19

帖子

0

粉丝