搜索
bottom↓
回复: 112

新做的单片机控制步进电机简单实验

[复制链接]

出0入0汤圆

发表于 2010-2-2 03:45:08 | 显示全部楼层 |阅读模式
早几天网友让做个步进电机相关实验,正好也想了解一下步进电机,抽闲做了个简单例程,初学还请各位轻拍。

PS:之前所用单片机AT89S51烧坏,便改用了AT89S52。。。

软件:
a.        Keil uVision3.0;
b.        Easy 51Pro v2.0;
硬件:
a.        51最小系统板(带步进电机接口);
b.        1个四相六线步进电机;
(1)硬件电路原理:

单片机控制电路原理图  

图为单片机控制步进电机实例最小设计,其中单片机采用AT89S52。实验所用步进电机6根引线排列次序为:白白棕蓝红黄

(2)测试成功的源代码:
/****************************************************
* 声明:        此制作为CIKY单片机学习过程,欢迎爱好者
*              一起学习和探讨,共同进步。
* Title:       单片机控制步进电机简单例程
* Description: 单片机控制步进电机半步方式工作.实验采
*              用实验板上已有步进电机接口,输出端口为
*              P2^3-P2^6,整体将步进电机半步时序右移
*                     一位。
* @author:     CIKY
* Date:        Feb. 02, 2009
****************************************************/
#include <reg52.h>

#define uchar unsigned char

uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};       
                                //步进电机半步时序

// 0000 1000  08
// 0001 1000  18
// 0001 0000  10
// 0011 0000  30
// 0010 0000  20
// 0110 0000  60
// 0100 0000  40
// 0100 1000  48

// 0010 0000  20
// 0011 0000  30
// 0001 0000  10
// 0001 1000  18
// 0000 1000  08
// 0100 1000  48
// 0100 0000  40
// 0110 0000  60   

///////////////////////延时函数////////////////////////////////  
void Delay(uchar n)
{
        uchar i;

        while(n--)
        {
                i=20;
                while(i--);
        }
}

///////////////////主程序入口//////////////////////
void main(void)
{
           uchar step = 0;

        P1=0xf0;

        while(1)
        {
                P1 = MOTOR_H[step];
                 
                step ++;
                step %= 8;

                Delay(10);
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-2-3 06:07:33 | 显示全部楼层
今天又给实验做了正反转功能,实验效果:单片机控制步进电机简单实验效果

加了两个按键,控制正反转:

四相六线步进电机


实验实拍


电路原理图



/****************************************************

* 声明:        此制作为CIKY单片机学习过程,欢迎爱好者

*              一起学习和探讨,共同进步。

* Title:       单片机控制步进电机正反转

* Description: 在原单片机控制步进电机简单例程中增加正

*              反转功能。

* @author:     CIKY

* Date:        Feb. 03, 2009

****************************************************/

#include <reg51.h>



#define uchar unsigned char



sbit zKey=P2^0; //正转

sbit fKey=P2^1;  //反转



uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};

                                                       //半步工作方式时序数组

uchar step = 0;    //时序数组下标



// 0000 1000  08

// 0001 1000  18

// 0001 0000  10

// 0011 0000  30

// 0010 0000  20

// 0110 0000  60

// 0100 0000  40

// 0100 1000  48



// 0010 0000  20

// 0011 0000  30

// 0001 0000  10

// 0001 1000  18

// 0000 1000  08

// 0100 1000  48

// 0100 0000  40

// 0110 0000  60   

///////////////////////延时函数//////////////////////

void Delay(uchar n)

{

      uchar i;



      while(n--)

      {

             i=20;

             while(i--);

      }

}


/////////////步进电机方向控制选择函数////////////////////

void fun_transferSelCtrl()

{

       if(zKey==0)//正转

             step++;
   

       if(fKey==0)//反转

            step--;

step % = 8;

P1 = MOTOR_H[step];

delay(5);

}



////////////////////////主程序入口/////////////////////////

void main(void)                                                

{

     P1=0xf0;

      P2=0xff;

      step = 0;



      while(1)

      {

            fun_transferSelCtrl();

      }

}

出0入0汤圆

发表于 2010-2-3 13:43:13 | 显示全部楼层
沙发   不错啊  学习一下
这个电机多少钱啊

出0入0汤圆

 楼主| 发表于 2010-2-3 15:38:25 | 显示全部楼层
回复【2楼】wangzhq0618 替身

这个电机多少钱啊
-----------------------------------------------------------------------

电机是CIKY朋友DIY雕刻机所剩,
CIKY就拿来实验...

刚在淘宝上查了一下,
这种电机二手的三十左右应该可以拿下...

出0入0汤圆

发表于 2010-2-3 18:00:20 | 显示全部楼层
这个程序步进电机停转后一段时间会发热吧?或者你用低压驱动?

出0入0汤圆

 楼主| 发表于 2010-2-3 18:09:05 | 显示全部楼层
回复【4楼】z1234 无知者
-----------------------------------------------------------------------


用的低压驱动。。。

出0入0汤圆

发表于 2010-2-3 22:29:27 | 显示全部楼层
如果是低压驱动,不会是用电机上标的那个电压吧?如果这样电机的反应速度会很差的。

出0入0汤圆

 楼主| 发表于 2010-2-4 03:23:19 | 显示全部楼层
电机上标的是6V,0.33A,
实验时电压用的是5V,ULN2003A驱动电机,
未发热现象,
电机运转也不错。。。

看完 Z1234无知者 的提示,
换ULN2803驱动电机,
电压12V,
测试时,
发现电机运转,ULN2803芯片严重发热,
电机停止运转,芯片温度马上下降。。。

换个功率小些的电机测试,
电机运转正常,
ULN2803芯片温度也正常了,

不过又出现 Z1234无知者 所提示问题,
“步进电机停转后一段时间会发热”现象。。。


PS:

CIKY初涉单片机,
对步进电机更是了解甚少,
感谢 Z1234无知者 的提示。。。

出0入0汤圆

发表于 2010-2-4 04:49:22 | 显示全部楼层
标记!

出0入0汤圆

发表于 2010-2-4 12:15:42 | 显示全部楼层
估计你的情况是电机空转测试,在实际使用中电机在带负载的情况下运动都是高电压驱动的,至于发热这就是为何大多数成品步进电机驱动都有半流功能的原因。你的做法其实在许多步进电机教材、资料上都是这样,但很少提及半流功能,这就是很多教程误导使用者的原因。

出0入0汤圆

发表于 2010-2-4 16:11:29 | 显示全部楼层
图没画全吧?
电源,地都没接?
EA脚也没接。。。。。。。。

出0入0汤圆

发表于 2010-2-4 16:14:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-4 16:19:44 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-2-4 20:27:40 | 显示全部楼层
经过一夜奋战,现在片子能控制4路步进电机,带半流功能,实验效果: 单片机控制4路步进电机


自己设计的4路步进电机驱动板


实验实拍图

出0入0汤圆

 楼主| 发表于 2010-2-4 20:47:38 | 显示全部楼层
回复【10楼】Jmjmjm
-----------------------------------------------------------------------
经Jmjmjm提醒,
想起最近实验各种怪现象,
大概与偶片子上EA口悬空有关。。。

出0入0汤圆

发表于 2010-2-4 21:04:07 | 显示全部楼层
楼主是不是那个 D什么II的女朋友啊,我在另一个网站上看到他说的他女友做的。。。

出0入0汤圆

发表于 2010-2-4 23:38:31 | 显示全部楼层
楼主问一下 步进电机主要用于什么 那个方面

出0入0汤圆

 楼主| 发表于 2010-2-5 00:20:57 | 显示全部楼层
回复【16楼】williamrain
楼主问一下 步进电机主要用于什么 那个方面
-----------------------------------------------------------------------
williamrain有兴趣可看看:
         http://baike.baidu.com/view/528900.htm

出0入0汤圆

 楼主| 发表于 2010-2-6 04:32:12 | 显示全部楼层
在键控4路步进电机实验的基础上,
设计了一个单字节多通道多步控制协议,
每条单字节命令可以控制4通道中任何一路的方向和步数,
51会返回电机的运行状态和命令执行结果。。。
还可以通过无线数传模块进行无线遥控操作。。。

上位机最新版 LP-COMM V2.20 串口调试软件,
以二进制模式测试控制协议。。。。
上位机调试:



实验视频:串口控制4路步进电机
头像被屏蔽

出0入0汤圆

发表于 2010-2-6 06:25:42 | 显示全部楼层
谢谢! 好资料。

步进电机的驱动,放到雕刻机分论坛吧。

出0入0汤圆

发表于 2010-2-6 08:53:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-7 14:20:38 | 显示全部楼层
从楼主提供的资料中没看出半流控制?能说说你半流控制的原理吗?

出0入0汤圆

发表于 2010-2-7 17:58:41 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-2-7 18:45:50 | 显示全部楼层
uln2003 2803也就能让小步进空载运行吧,阿莫的雕刻机上用的步进电机肯定带不动呵

出0入0汤圆

发表于 2010-2-9 00:18:17 | 显示全部楼层
非常好的实验,适合初学51和步进电机的朋友,对我是很有帮助。

出0入0汤圆

发表于 2010-2-9 00:42:17 | 显示全部楼层
超赞,basic的好东西。

有个建议把单字节命令搞成双字节或四字节,同时控制四个电机,配合buf,这样就有运动曲线了。
本来想说单字节来控制四路,想想通讯量太大,一定是个迟缓的执行机构,就改良了。

如果配合自动识别G代码的上位机,这不也是个串口接口板儿了!!!!前途无量。

另外,视频干吗佩钢琴曲阿?掩盖了电机的叫声。

出0入0汤圆

发表于 2010-2-9 07:06:41 | 显示全部楼层
不错的,可惜用达林顿电流太小,建议直接达林顿扩用IGBT,IGBT电压也可以吃的大,出来的电流自然不在话下,当然mosfet是更好的

选择。

出0入0汤圆

 楼主| 发表于 2010-2-13 12:48:20 | 显示全部楼层
在牛年最后一天完成进一步改进....

上位机调试截图:



实验视频:单片机控制多路步进电机实验视频

出0入0汤圆

 楼主| 发表于 2010-2-13 12:50:29 | 显示全部楼层
回复【25楼】Argee
-----------------------------------------------------------------------

实验用的电机较小,
电机运转时声音较小,几近听不到...

出0入0汤圆

发表于 2010-2-13 14:16:11 | 显示全部楼层
谢谢! 好资料。

出0入0汤圆

发表于 2010-2-14 16:35:32 | 显示全部楼层
上位机软件是自己写的?不错啊!2803电流小不是问题,可以考虑并联啊!毕竟便宜啊

出0入0汤圆

发表于 2010-2-27 14:43:56 | 显示全部楼层
uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};
请问这数组是怎样得到的?

出0入0汤圆

发表于 2010-2-27 14:46:05 | 显示全部楼层
我买的一个开发板送了一个步进电机有五条线,请问这些线分别是什么作用的,
颜色顺序是:橙色,黄色,红色,蓝色,粉红色。

出0入0汤圆

发表于 2010-2-27 23:47:56 | 显示全部楼层
学习

出0入0汤圆

 楼主| 发表于 2010-3-8 00:06:08 | 显示全部楼层
回复【31楼】guocai

uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};  
请问这数组是怎样得到的?

我买的一个开发板送了一个步进电机有五条线,请问这些线分别是什么作用的,
颜色顺序是:橙色,黄色,红色,蓝色,粉红色。
-----------------------------------------------------------------------

uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};  
为实验中所用6线步进电机半步时序。。。

相同型号,不同厂家生产的步进电机可能是不同的,
线的颜色也会有所不同。。。

出0入0汤圆

发表于 2010-3-8 00:38:28 | 显示全部楼层
好帖收藏

出0入0汤圆

发表于 2010-3-8 09:09:38 | 显示全部楼层
好~收藏,THK

出0入0汤圆

发表于 2010-3-8 11:03:09 | 显示全部楼层
好,收了

出0入0汤圆

发表于 2010-3-12 15:44:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-12 20:27:41 | 显示全部楼层
能把上位机和下位机的程序传上来吗?谢谢!

出0入0汤圆

发表于 2010-3-13 00:09:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-21 03:27:06 | 显示全部楼层
羡慕阿~~~自己能写 上位机软件 ~~~

出0入0汤圆

发表于 2010-3-21 15:27:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-7 23:31:32 | 显示全部楼层
观摩观摩

出0入0汤圆

发表于 2010-4-8 00:43:53 | 显示全部楼层
回复【39楼】jindaofu
能把上位机和下位机的程序传上来吗?谢谢!
-----------------------------------------------------------------------

对上位机软件~~有兴趣~~~

出0入0汤圆

发表于 2010-4-10 23:30:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-15 20:14:16 | 显示全部楼层
LZ是女的?牛啊。

出0入0汤圆

发表于 2010-4-29 22:00:19 | 显示全部楼层
回复【25楼】Argee
超赞,basic的好东西。
有个建议把单字节命令搞成双字节或四字节,同时控制四个电机,配合buf,这样就有运动曲线了。
本来想说单字节来控制四路,想想通讯量太大,一定是个迟缓的执行机构,就改良了。
如果配合自动识别g代码的上位机,这不也是个串口接口板儿了!!!!前途无量。
另外,视频干吗佩钢琴曲阿?掩盖了电机的叫声。
-----------------------------------------------------------------------

学习

出0入0汤圆

发表于 2010-5-6 02:14:22 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2010-5-6 08:37:38 | 显示全部楼层
现在专用的电机驱动器很多,细分数也大。
自己做,细分是不是很麻烦?
没细分,噪声大。

出0入0汤圆

发表于 2010-5-11 13:06:39 | 显示全部楼层
能用2路脉冲比如相位相差90°的A 、B脉冲 通过单片机实现它的正反转吗?

出0入0汤圆

发表于 2010-5-20 23:53:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-21 08:18:50 | 显示全部楼层
mark

出150入0汤圆

发表于 2010-5-21 10:33:35 | 显示全部楼层
好贴留名

出0入0汤圆

发表于 2010-6-28 22:02:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-28 22:03:54 | 显示全部楼层
mark 备用

出0入0汤圆

发表于 2010-6-29 23:52:21 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-7-13 08:57:18 | 显示全部楼层
回复【楼主位】ciky
-----------------------------------------------------------------------
LZ我有些疑问的地方:

下面是你的电机控制时序,但你的图中显示是P10-P13来控制电机的,为什么时序中涉及了P14-P17.
根据时序猜测应该是用P13-P16来控制电机的。



uchar MOTOR_H[8] = {0x20,0x30,0x10,0x18,0x08,0x48,0x40,0x60};
//步进电机半步时序

// 0000 1000  08
// 0001 1000  18
// 0001 0000  10
// 0011 0000  30
// 0010 0000  20
// 0110 0000  60
// 0100 0000  40
// 0100 1000  48

// 0010 0000  20
// 0011 0000  30
// 0001 0000  10
// 0001 1000  18
// 0000 1000  08
// 0100 1000  48
// 0100 0000  40
// 0110 0000  60

出0入0汤圆

发表于 2010-8-22 21:32:05 | 显示全部楼层
好资料,适合学习,记号了!

出0入0汤圆

发表于 2010-11-19 11:53:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-20 21:30:01 | 显示全部楼层
楼主只是晒了一下自己的技术,没有提供实际的制作资料,公布的都是些加了BUG的代码。

出0入0汤圆

发表于 2011-3-29 16:55:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-29 21:00:53 | 显示全部楼层
好帖!收藏!

出0入0汤圆

发表于 2011-3-29 21:42:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-31 12:46:58 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-3-31 12:59:59 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-3-31 15:29:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-1 12:38:37 | 显示全部楼层
mark,备用,现在正在捣鼓小车

出0入0汤圆

发表于 2011-5-6 00:53:27 | 显示全部楼层
看看吧

出0入0汤圆

发表于 2011-5-6 09:12:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-7 04:54:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-7 06:13:45 | 显示全部楼层
mark1!

出0入0汤圆

发表于 2011-5-7 07:56:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-8 02:22:23 | 显示全部楼层
你用低压驱动?

出0入0汤圆

发表于 2011-5-8 08:57:25 | 显示全部楼层
2803和2003是达林顿管,驱动电流也就里0。5A,因此功率不大,最好使用MOSFET驱动,IGBT不太熟悉,可能会贵些。

出0入0汤圆

发表于 2011-5-8 09:05:05 | 显示全部楼层
楼主步进电机搞了不少呀,我也收集了有二三十个,小的有直径1公分左右的,大的有8公分左右。

出0入0汤圆

发表于 2011-5-8 11:26:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-16 23:43:11 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-8-7 19:39:28 | 显示全部楼层
强人啊

出0入0汤圆

发表于 2011-8-7 20:58:27 | 显示全部楼层
步进电机驱动芯片TA8435

出0入0汤圆

发表于 2011-8-10 22:15:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-19 21:09:41 | 显示全部楼层
学好基础,顶了

出0入0汤圆

发表于 2011-8-27 20:28:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-27 22:13:58 | 显示全部楼层
xuexi!

出0入0汤圆

发表于 2011-8-30 13:16:15 | 显示全部楼层
mark~

出0入0汤圆

发表于 2011-8-30 14:15:53 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-30 15:23:42 | 显示全部楼层
好帖,学习学习

出0入0汤圆

发表于 2011-8-30 23:07:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-16 11:14:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-30 20:11:52 | 显示全部楼层
能把上位机和下位机的程序传上来吗?谢谢!

出0入0汤圆

发表于 2011-11-30 21:24:07 | 显示全部楼层
mark。另一种方法控制步进电机。不错不错~!

出0入0汤圆

发表于 2011-11-30 21:50:17 | 显示全部楼层
进来学习一下,犀利啊。

出0入0汤圆

发表于 2011-12-1 23:05:55 | 显示全部楼层
看看

出0入0汤圆

发表于 2011-12-7 14:09:45 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-12-13 11:54:39 | 显示全部楼层
一直想驱动步进, 以前做过实验, 用ULN2003驱动 42步进, 发热厉害.
大步进, 还是需要至少2A的驱动片, 比如 3977

出0入0汤圆

发表于 2011-12-20 15:17:46 | 显示全部楼层
回复【30楼】jiugui2010
-----------------------------------------------------------------------

我也想知道写软件的问题。

出0入0汤圆

发表于 2011-12-27 23:36:57 | 显示全部楼层
很详细,认真学习

出0入0汤圆

发表于 2011-12-28 23:32:02 | 显示全部楼层
我最近也在学步进,mark

出0入0汤圆

发表于 2012-1-2 10:39:00 | 显示全部楼层
请问LZ  我也向写一个上位机的控制   但是发现点机运行时总是  一顿一顿的 不是很流畅  时怎么回事

出0入0汤圆

发表于 2012-1-5 11:45:08 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 19:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表