arduino产生脉冲控制工业用的步进电机?
Arduino产生指定频率 和指定脉冲数 的脉冲控制工业用的步进电机驱动器 有人做过吗?给点思路 控制单路的比较简单,目前的驱动器都是只要输入脉冲就可以了,当然,直接用PWM输出也可以,频率在500HZ,但是要控制多路,程序就得想想办法了,我们是要控制脉冲的个数,频率不是最关心的,用PWM输出的脉冲只能是连续的,不好控制 同问,关注 有专门解释G代码的库 有谁能够详细说说吗? 这个是个说明书和一段C51的驱动程序,你在自己移植一下就OK了。 湖工电气 发表于 2013-6-15 20:13 static/image/common/back.gif这个是个说明书和一段C51的驱动程序,你在自己移植一下就OK了。
有人移植成ARDUINO了吗 我只会这个啊 #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-15 21:42 static/image/common/back.gif
谁能帮忙移植下这段代码啊 51----ARDUINO
哥,这里说白了就是用定时器产生一定频率的方波,这个波就是输入到那个驱动器里面去的,在至于驱动器怎么把这个方波变为2相4线的混合步进电机的信号就是驱动器完成的了,这里我们只需要产生这个方波就可以了。DIR是控制方向的,ENBL是使能端,PUL就是单片机输出脉冲的引脚。至于什么计数那是便于计算电机转动角度的。你要做的就是用Arduino产生那个方波,什么时候电机换方向什么,时候关闭电机就看你的系统要求了。产生方波不一定要用定时器。Arduino我没有玩过,只是接触过,但是它的程序语言我看得懂。说了这么多,你再不会我就没有办法了。 没看明白:funk: 湖工电气 发表于 2013-6-16 10:22 static/image/common/back.gif
哥,这里说白了就是用定时器产生一定频率的方波,这个波就是输入到那个驱动器里面去的,在至于驱动器怎么 ...
谢谢您指点迷津,受益非浅 arduino数字口能接受的最高频率是多少,比如1000hz可以吗? 万马奔腾 发表于 2013-6-18 09:35 static/image/common/back.gif
arduino数字口能接受的最高频率是多少,比如1000hz可以吗?
还能更快吧,如果用arduino原来的那个驱动步进电机的方式大约能到500hz,如果你用定时器的方式理论上到50khz都可以。我用的就是这种驱动器来驱动小铣床的xy两轴,目前最高的频率是10khz。 第一次发图片,也不知道操作的对不对
这个用的是microduino,控制单轴的实验。 前后折腾了大约有半个月,现在已经用上了,准备再做些调整。 rick_hou 发表于 2013-6-18 10:47 static/image/common/back.gif
前后折腾了大约有半个月,现在已经用上了,准备再做些调整。
能否共享下你的代码啊? 用ARDUINO最大的缺点就是没有断电保持性存储器啊 比如我断电后原来的计数值就变了