您好,我要用单片机的最小系统驱动步进电机转,想问问怎样编程,谢了

如题所述

这主要取决于你的步进电机。追问

我的是57HS09,他是两线8线的。我现在就不清楚怎么编程让他转,您帮帮忙

追答

哪来的电机?肯定有资料啊,看看资料,首先搞清楚各线的功能是什么再说。

追问

恩恩,我电机已经接上驱动器的四个口了,我现在是从驱动器的PUL,DIR,ENA的负极个引出一条线接到最小系统的P2.0,P2.1,P2.2口,分别控制脉冲,方向和使能,那个程序怎么编,实在谢谢了。这是我的最小系统。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-28
如果你的步进电机有5个线或6根线,是4个线圈,只要轮流给每个线圈通电就可以了一般要经过ULN2003放大驱动
相当于单片机某端口轮流输出8 4 2  1 或1 2 4 8
中间加延时即可,延时1ms到几十ms不等,可以改变转速
以下是步进电机转200步的程序
void main()
{
uchar a;
a=200;
while(a!=0)
{
P0=1;
delay(5);
P0=2;
delay(5);
P0=4;
delay(5);
P0=8;
delay(5);
a=a-4;
}
}
P0输出8 4 2 1可改变转向,
改delay(n)括号内数值可改变速度
当然也有三个线圈的步进电机,但工作原理是一样的追问

我的是57HS09,他是两相8线的。这个程序也可以用么,

追答

8根线,刚好4个线圈 可以用这个程序

若是2相更简单,2线圈可以两两并联或串联

只要输出1 2 1 2...即可

步进电机接法如下图,若速度不高的话,电源也可用单片机的5V电源

 

追问

恩恩,我电机已经接上驱动器的四个口了,我现在是从驱动器的PUL,DIR,ENA的负极个引出一条线接到最小系统的P2.0,P2.1,P2.2口,分别控制脉冲,方向和使能,那个程序怎么编,实在谢谢了。这是我的最小系统。

追答

如果你已用成品驱动器了,应要根据驱动器的要求来编程了
只要使能和方向设定好,只管发脉冲就行了,脉冲的数量和频率由程序决定
只要P2.0取反2次,就是1个完整的脉冲
#include
#define uint unsigned int
#define uchar unsigned char
sbit clk=p2^0;
sbit dir=p2^1;
sbit enable=p2^2;
void delay(uchar i) //延时程序
{
uchar j,k;
for(j=i;j>0;j--)
for(k=236;k>0;k--);
}
void main()

uchar a;
a=200;
dir=1;//是0是1看控制器说明书
enable=1;
while(a!=0)
{
clk=~clk;
delay(5);
clk=~clk;
delay(5);
a=a-1;
}

本回答被提问者和网友采纳
相似回答