万马奔腾 发表于 2013-6-15 08:49:14

arduino产生脉冲控制工业用的步进电机?

Arduino产生指定频率 和指定脉冲数 的脉冲控制工业用的步进电机驱动器 有人做过吗?给点思路

sawyer 发表于 2015-8-11 23:17:11

控制单路的比较简单,目前的驱动器都是只要输入脉冲就可以了,当然,直接用PWM输出也可以,频率在500HZ,但是要控制多路,程序就得想想办法了,我们是要控制脉冲的个数,频率不是最关心的,用PWM输出的脉冲只能是连续的,不好控制

bh7jec 发表于 2013-6-15 11:32:23

同问,关注

qptimus 发表于 2013-6-15 12:57:16

有专门解释G代码的库

bh7jec 发表于 2013-6-15 17:00:20

有谁能够详细说说吗?

湖工电气 发表于 2013-6-15 20:13:16

这个是个说明书和一段C51的驱动程序,你在自己移植一下就OK了。

万马奔腾 发表于 2013-6-15 21:37:25

湖工电气 发表于 2013-6-15 20:13 static/image/common/back.gif
这个是个说明书和一段C51的驱动程序,你在自己移植一下就OK了。

有人移植成ARDUINO了吗 我只会这个啊

万马奔腾 发表于 2013-6-15 21:42:04

#include <REG52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit PUL= P1^0;          //脉冲输入端
sbit DIR= P1^1;          //方向控制端
sbit ENBL = P1^2;          //使能端       
uint num;
/*xms*1ms毫秒延时函数*/
void delay(uint xms)
{        uint a,b;
        for(a=xms;a>0;a--)
                for(b=110;b>0;b--);
}
void init()
{
        TMOD|= 0x01;                        //设置定时器0为工作方式1,16为定时器/计数器
        TL0 = (65535-10)%256;                //设置定时初值
        TH0 = (65535-10)/256;                //设置定时初值
        ET0= 1;                                      //开启定时器0中断
        TR0= 1;                                      //关闭定时器0
        EA   = 1;
}
void main()
{
    init();
        DIR= 1;
           ENBL = 1;
        while(1)
        {if(num==12800)
                  {
                  DIR=~DIR;
                           num=0;
                   TR0=0;
                   delay(1000);
                   TR0=1;
                   }
       }
               
}
/*定时器0中断服务函数 */
void T0_timer() interrupt 1               
{
        TL0 = (65535-10)%256;                //设置定时初值
        TH0 = (65535-10)/256;                //设置定时初值
//        TL0 = 0xEE;                //设置定时初值
//        TH0 = 0xFF;                                  
        PUL = ~PUL;
        num++;
}
谁能帮忙移植下这段代码啊 51----ARDUINO

湖工电气 发表于 2013-6-16 10:22:37

万马奔腾 发表于 2013-6-15 21:42 static/image/common/back.gif
谁能帮忙移植下这段代码啊 51----ARDUINO

哥,这里说白了就是用定时器产生一定频率的方波,这个波就是输入到那个驱动器里面去的,在至于驱动器怎么把这个方波变为2相4线的混合步进电机的信号就是驱动器完成的了,这里我们只需要产生这个方波就可以了。DIR是控制方向的,ENBL是使能端,PUL就是单片机输出脉冲的引脚。至于什么计数那是便于计算电机转动角度的。你要做的就是用Arduino产生那个方波,什么时候电机换方向什么,时候关闭电机就看你的系统要求了。产生方波不一定要用定时器。Arduino我没有玩过,只是接触过,但是它的程序语言我看得懂。说了这么多,你再不会我就没有办法了。

bh7jec 发表于 2013-6-16 10:39:30

没看明白:funk:

chqiyi 发表于 2013-6-18 00:05:55

湖工电气 发表于 2013-6-16 10:22 static/image/common/back.gif
哥,这里说白了就是用定时器产生一定频率的方波,这个波就是输入到那个驱动器里面去的,在至于驱动器怎么 ...

谢谢您指点迷津,受益非浅

万马奔腾 发表于 2013-6-18 09:35:27

arduino数字口能接受的最高频率是多少,比如1000hz可以吗?

rick_hou 发表于 2013-6-18 10:24:14

万马奔腾 发表于 2013-6-18 09:35 static/image/common/back.gif
arduino数字口能接受的最高频率是多少,比如1000hz可以吗?

还能更快吧,如果用arduino原来的那个驱动步进电机的方式大约能到500hz,如果你用定时器的方式理论上到50khz都可以。我用的就是这种驱动器来驱动小铣床的xy两轴,目前最高的频率是10khz。

rick_hou 发表于 2013-6-18 10:29:54

第一次发图片,也不知道操作的对不对

这个用的是microduino,控制单轴的实验。

rick_hou 发表于 2013-6-18 10:47:00

前后折腾了大约有半个月,现在已经用上了,准备再做些调整。

万马奔腾 发表于 2013-6-18 19:31:29

rick_hou 发表于 2013-6-18 10:47 static/image/common/back.gif
前后折腾了大约有半个月,现在已经用上了,准备再做些调整。

能否共享下你的代码啊? 用ARDUINO最大的缺点就是没有断电保持性存储器啊 比如我断电后原来的计数值就变了
页: [1] 2 3 4
查看完整版本: arduino产生脉冲控制工业用的步进电机?