请大侠们帮忙编一个步进电机控制程序。

请大侠们帮忙编一个步进电机控制程序。,第1张

#include <REGX52H>

bit aj = 0;

sbit clk1=P1^0; //定义X脉冲输出位

sbit dir1=P1^1; //定义X正反转控制位

sbit ena1=P1^2; //定义Y使能控制位

sbit x1 =P1^6;

unsigned int k=0,x11,y11,cycle=2000,yk,xk,xk1;//定义开始控制位

unsigned char x = 1;

unsigned int kx;

void delay(unsigned int i)

{

unsigned int j,k;

for(j=i;j>0;j--)

for(k=300;k>0;k--);

}

void inistartx(void) //X初始化函数

{

xk=0;

dir1=1;

cycle=9600;

kx=300;

TR0=1;

P2_0=0;

while(xk1<400);

TR0=0;

kx=0;

delay(500);

xk=0;

cycle=9600;

dir1=0;

xk1=0;

kx=700;

TR0=1;

while(x==1&&xk1<801); //

TR0=0;

delay(500);

cycle=9600;

xk1=0;

dir1=1;

kx=300;

TR0=1;

while(xk1<400);

TR0=0;

kx=0;

clk1=0;

xk1=0;

}

void exint0_init( )

{

IT0 =1; //下降沿产生中断

EX0 =1; //使能外部中断

EA =1; //使能全局中断

}

void initime0(void) //初始化定时器0

{

TH0=0xf8;

TL0=0x30;

}

void time0() interrupt 1 //定时器0中断函数

{

if(xk1<100){cycle=cycle-80;}

if(xk1>=100&&xk1<=kx){cycle=1600;}

if(xk1>kx) {cycle=cycle+80;}

TH0=(65536-cycle)/256; //定时5000次= 5000us = 5 ms 65536-5000=60536=0xec78

TL0=(65536-cycle)%256;

//TH0=0xf8; //定时器1为X或者Y提供脉冲数

//TL0=0x30; //频率500cycle=2000 ; cycle=2500=》频率=400

xk1++;

clk1=~clk1;

k++;

}

void exint0() interrupt 0 //接近开关接P32,发生中断停止

{

TR0=0;

x=0;

ena1=0;

}

void main (void)

{

x1=1;

TMOD = 0x01;

IE=0xAF; //EA - ET2 - ES - ET1 - EX1- ET0 - EX0 允许(总中断EA) ET2 ET1 ET0中断

initime0();

exint0_init();

inistartx();

TR2=1;

while(aj ==0);

inistartx();

TR1=1;

//IP= 0x00; //- - PT2 PS PT1 PX1 PT0 PX0

////TCON =0x00; //TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

//T2CON =0x00; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2

while(1){

}

}

这里我们以TB6600步进电机驱动器为例,进行介绍。其他型号的驱动器也大同小异。如图是我们使用的步进电机驱动器

一输入输出端说明

1信号输入端

PUL+:脉冲信号输入正。

PUL-:脉冲信号输入负。

DIR+:电机正、反转控制正。

DIR-:电机正、反转控制负。

EN+:电机脱机控制正。

EN-:电机脱机控制负。

2电机线连接段

A+:连接电机绕组A+相。

A-:连接电机绕组A-相。

B+:连接电机绕组B+相。

B-:连接电机绕组B-相。

3电源电压连接

VCC:电源正端“+”

GND:电源负端“-” (需要注意的是电机驱动器上DC电源还是AC,DC只能接入直流电源,而AC的话既交流又可以直流电源)

4输入端接线说明

输入信号共有三路,它们是:①步进脉冲信号PUL+,PUL-;②方向电平信 号DIR+ ,DIR-③脱机信号EN+,EN-。

输入信号接口有两种接法,用户可根据 需要采用共阳极接法或共阴极接法。

共阳极接法:分别将PUL+,DIR+,EN+连接到控制系统的电源上, 如果此电源是+5V 则可直接接入,

如果此电源大于+5V,则须外部另加限流 电阻R,保证给驱动器内部光藕提供8—15mA 的驱动电流。

脉冲输入信号通 过CP-接入,方向信号通过DIR-接入,使能信号通过EN-接入。如下图:

共阴极接法:分别将 PUL-,DIR-,EN-连接到控制系统的地端; 脉冲输入信号通过PUL+接入,方向信号通过DIR+接入,

使能信号通过EN+接 入。若需限流电阻,限流电阻R 的接法取值与共阳极接法相同。如下图:

这里需要注意的是:在一般情况下EN端可不接,EN有效时电机转子处于自由状态(脱机状态),这时 可以手

动转动电机转轴,做适合您的调节。手动调节完成后,再将 EN 设为 无效状态,以继续自动控制 。

二、系统接线方法

驱动器与控制器、电机、电源的接线,以共阳接法为例,如下图所示:

三、拨码开关的设定细分以及电流

1细分数设定

细分数是以驱动板上的拨码开关选择设定的,用户可根据驱动器外盒上 的细分选择表的数据设定(最好在断电情况下设定)。细分后步进

电机步距 角按下列方法计算:步距角=电机固有步距角/细分数。如:一台固有步距角 为18°的步进电机在4细分下步距角为18°/4=045°

驱动板上拨码开关1、2、3、分别对应S1、S2、S3 (这里需要注意的是并不是设置细分数越大越好,400细分的意思就是:400个脉冲电机转动1圈)

2电流大小设定

驱动板上拨码开关4、5、6分别对应S4、S5、S6

(这里需要注意的是并不是设置电流越大越好,根据电机的功率取合适值即可)

四、脱机信号(EN)

打开脱机功能后,电机转子处于自由不锁定状态,可以轻松转动,此时 输入脉冲信号不响应,

关闭此信号后电机接受脉冲信号正常运转。

注:一般在实际应用中可不接。

五、常见的问题解答

1、问:初次使用该步进驱动器,如何能尽快上手?

答:正确接好电源和电机后,只接脉冲信号PUL(先将频率设置为1K以内),细分设置为16,方向和脱机悬空,

此时加电后电机默认正转。运行无误后再 依次测试加速(提高频率)、方向、细分和脱机等功能。

2、问:控制信号高于5V,一定要加串联电阻吗?

答:是的,否则有可能烧毁驱动器控制接口的电路。

3、问:接线后电源指示灯亮,但电机不转,是什么原因?

答:如果接线正确,但仍然不转,说明控制部分驱动能力不够,这种情况多出现在

用单片机的io口直接控制方式。请确保控制接口有5mA的驱动能力

4、问:如何判断步进电机四条线的定义?

答:将电机的任意两条线接在一起,此时用手拧电机转子有阻力,则这两条线是同一相,

可接在驱动器A+、A-;另外两条线短接仍然有阻力,则将 这两条线接在B+和B-

5、问:电机的正反转情况与应实际达到的相反?

答:只需要把电机其中一相的两根线互换接入即可

六、自己本人在实践中遇到的问题以及解决

只是根据实验尝试而得,并不一定正确

1电机旋转电流吱吱声音过大 PWM频率过低 改变方法提高频率或者减少细分数

2驱动器自动断电时 设置电流过大,应该降低设置电流

3电流设置会影响转速

4电机过烫,设置的电流过大,应该降低设置电流

5ENA-和ENA+不接,这是脱机信号控制

6PWM输出都采用开漏输出,需要外接上拉5V,不然没有PWM输出

7当选择电机转速较慢时,应该选择更多的细分数

问题一:如何控制步进电机??? 步进电机动作的话要靠驱动器来驱动的,步进电机也叫脉冲电机,给一个脉冲转一个角度。12V的话要控制要先买个开关电源,把220V变成12V接到驱动器,再用驱动器控制电机,还要一个外部给脉冲的控制器(单片机或者PLC)给驱动器脉冲信号、

问题二:如何控制步进电机 看下你年纪,假设你没学过步进电机和单片机,所以,需要学习的东西主要就是步进电机的简单的原理,这个可能学的很快,因为它挺直观;还有就是学单片机,这个就不好说了,网络上有众多的类似10天学会XXX,21天征服XXX的教程。

通过单片机驱动步进电机还是挺简单的,就像在淘宝上随便一搜,就能找到这样的驱动,很入门

问题三:怎么用PLC控制步进电机定距离转动 1、18度的5细分就是036度,1000个脉冲转一周。

2、步进电机皮带轮直径5cm ,周长就是157cm。

3、18度的5细分每一个脉冲走多少157/1000=00157cm。

4、走15cm需要多少脉冲 15/00157=955414。

5、Fx2n系列PLC有一条脉冲输出指令PLSY,指令的格式是PLSY K10000 K955 Y001 ,意思是用10000HZ的频率,将955个脉冲由Y1输出,这样就能走约15cm的距离。

想详细的了解程序,可以在网上搜我的用户名,有盯的联系方法。记得把分给了。

问题四:如何实现步进电机控制中的点动功能 电机为什么总要加速减速呢?是因为你的设备的需要吧。点动速度恒定,缓动不是也挺好吗?就是慢点吧,还安全用2个PLS实现停止没问题。正如你所说,PLS之间没有突变就行。你可以把PLS指令想象成实际电机的动作情况就行了,指令发出电机执行还得时间呢。所以用2个PLS实现,从电机上是不会有什么影响的,就相当于多段包洛吧。至于怎么得出终止频率那就得看你前面的程序是怎么让他加速的了。还有高速计数是用反应的什么量,我不太清楚,请指点以上纯属新手看法,望指正!

问题五:请问怎样控制步进电机一步一步地走?? 步进电机的旋转是以固定的角度(称为“步距角”)一步一步运行的, 其特点是没有积累误差(精度为100%), 所以广泛应用于各种开环控制。控制系统每发一个脉冲信号, 通过驱动器就使步进电机旋转一步距角。所以步进电机的转速与脉冲信号的频率成正比。控制步进脉冲信号的频率,可以对电机精确调速;控制步进脉冲的个数,可以对电机精确定位目的。

问题六:步进电机基本控制方法? 可以用单片机+全集成步进电机驱动芯片来整全应用,这样比较简单,控制上很方便。用普通的51单片机像AT89C2051或STC12C1052 + THB7128或THB6064这类芯片来组合就可以了

单片机根据输入来决定输出的脉冲数量,让步进电机驱动芯片转化成功率信号驱动步进电机。

因为是一个脉冲走一步的,所以输出的脉冲数还要考虑到细分数的问题,固定转动步数、角度的程序还是比较容易编。像18度的步进电机,2细分时,转一圈就需要400个脉冲,转半圈只需要200个脉冲,转90度只需要100个脉冲,如此类推。

程序的话,固定一个适当的频率,按键触发启动定时器,然后在定时中断里取反一个IO端口做脉冲输出,再放入一个累加变量做计算,算脉冲数量,是取反两次输出一个完整的脉冲,在主程序中设定一个需要的脉冲数量来作为条件控制定时器的开启和关闭,然后循环等待条件满足

如果想把控制、驱动、和步进电机都整合在一起,比较麻烦,小电机还好,大电机的干扰是个问题

问题七:步进电机是如何实现位置控制的 哈!你如想精确的得到位置控制这可不只是步进电机和你控制电路的事了,因步进电机的失步可是一个常见事了并也是个不好处理的难题。这只有在控制方法上下功夫憨可能减少到最低限,如你想精确的位置控制最好还是采用有闭环回路的方案。

因这步进电机的控制就是通过给的脉数和这个步进电机的步角度的乘积再换算到你的执行机构上去。哈!只怕碰上阻力大时就会出现你给了脉冲可它转不动而失步的现象了。

问题八:接近开关如何控制步进电机的停止和运行? 自认为停止方式有以下两种:

1利用控制步进电机的微控制器(如单片机,PLC等)检测接近开关的的输出信号。当接近开关触发时,给微控制器一个信号,微控制器停止发出步进电机所需的脉冲指令。步进机就停了。

2接近开关,通过相应的接口电路,接到步进电机驱动器的使能端。接口电路的设计时,只是做相应的电平与逻辑的匹配。

问题九:如何用电脑控制步进电机 一个典型的控制系统是由控制部分驱动部分执行部分组成

步进电机只是个执行部件在它上面还需要一个驱动部分再往上还需要一个控制部分

现在的步进电机驱动部分大部分都是接受脉冲信号的而电脑是不能发送脉冲信号所以一般在电脑上有安装运动控制卡的或是其他能发送脉冲信号的部件

问题十:步进电机控制怎样才能不丢转 要想保证步进电机控制不丢转,首先要保证到达步进电机的控制脉冲按照时序一个接一个地经过步进电机的每个绕组,如果控制脉冲的时序中有一个脉冲丢失,或者脉冲电压幅度不够,就会出现步进电机控制丢转现象。

根据本人有限的经验,提示你:

1

请检查驱动器UVW与电机的三相相序是否有对应上;

2

检查电机是否已经使能;

3

检查脉冲输入的电压等级是否给对了;

4

如果确定接线都没有问题,请检查程序是否出错,启动信号是否用了脉冲形式而缺乏自锁导致脉冲输出中断?

5

检查驱动器细分是否已经设定好,细分直接影响你要达到的转动量,电机所转的圈数跟你的细分设定与脉冲量有关系。

以上希望对你有帮助,其实要电机动起来程序只要几步就好了,仔细检查软硬件!!!

步进电机是需要步进驱动器的,步进驱动器接收脉冲,控制步进电机转动

当脉冲频率越快,电机转动越快,就是电机的升速过程。

当脉冲频率越慢,电机转动越慢,就是电机的降速过程。

因此在程序中,只需要调节脉冲频率,就可以控制步进电机的升降速了。

而不同东西的程序是不一样的,比如三菱PLC的PLSY指令,西门子PLC的PLS指令,51单片机的定时中断。等等。

望采纳。。。。。。

M206:正转

M207:反转

Y0:脉冲输出

Y1:反转信号

D4200:频率(用于控制速度,数据来源于触摸屏)

K99999999:脉冲数量

K100:加速时间

向左转|向右转

如图,这个就是一个步进电机的正反转的运行,Y0接步进驱动器的脉冲,Y1接步进驱动器的方向,M0为ON时正转,M1为ON时反转,D0是脉冲的频率,D1是脉冲的个数。

移动速度和脉冲频率有关,在细分数一定的条件下,频率越高速度越快,行走的距离和脉冲个数有关,脉冲个数越多,行走距离越长,(在三菱这个指令中,脉冲个数为0时,是一直运行,相当于无限个数),具体的移动速度和行走距离得根据你的设置(频率,细分数,脉冲个数等)和硬件(包括步进电机的步距角,丝杆的丝距,齿轮组的齿轮比,齿轮带的传送比等)来调节。

以上就是关于请大侠们帮忙编一个步进电机控制程序。全部的内容,包括:请大侠们帮忙编一个步进电机控制程序。、步进电机,arduino新手,程序怎样设定总步数,这样的配件如何正反转停止,求程序,用按钮控制、如何控制步进电机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10160897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存