专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

两相4线步进电机驱动

作者:佚名   来源:本站原创   点击数:  更新时间:2012年03月13日   【字体:

前段时间在出去买东西的时候经过一个废品收购站,看到一位阿姨正在从一台什么机器上面拆零件。具体是什么机器我也不认识,我突然看到她拆下来一个圆圆的东西,走进一看原来是一个电机,有四根线,我当时想肯定是一个步进电机。虽然年份久远但是质量看起来还不错,我当时就很喜欢。问阿姨这个多少钱我想买下来。阿姨说十块钱,一分也不能少。没有办法我就发十块钱买下这个“铁块子“!由于时间的关系一直没有机会折腾。今天有点时间所以就拿出来研究一下。


经过测量这是一个两项四线的步进电机,步进角为1.8度。有两种工作方式。一种是4拍的方式,一种是8拍的方式,4拍方式的时序如下:

a~ 和b~ 表示反向电流。

ab     - a~b     -     a~b~     -     ab~       为一个转向。
ab     -     ab~     -     a~b~     -     a~b      为反向。

8拍方式的时序如下:

A       B      C    D     E     F     G        H(时序)

A       1     1     0     0     0     0     0     1
A-      0     0     0     1     1     1     0     0
B       0     1     1     1     0     0     0     0
B-      0     0     0     0     0     1     1     1

我这里用的是8拍的方式。程序:

/***                                                        
*******************************************************************
**程序功能:
**芯片型号:STC11F16XE
**晶振频率:22.1184M                                                  
**编写日期:2010年10月日                                                       
**编写人员:wang       QQ:349259818    Email:hongfadg@163.com 
**备注说明:                                                
*******************************************************************/
//以下为所需的头文件
//#include<absacc.h>
//#include<string.h>
//#include<stdio.h>
//#include <INTRINS.H>
#include <reg52.H>
//定义关键字方便使用
#define uchar unsigned char   
#define uint  unsigned int   
#define ulong unsigned long
/*
sbit p10=P1^0;//第一组电机
sbit p11=P1^1;
sbit p12=P1^2;//第一组使能
sbit p13=P1^3;//第二组电机
sbit p14=P1^4;
sbit p15=P1^5;//第二组使能
*/
uchar step[]={0x25,0x2d,0x2c,0x2e,0x26,0x36,0x34,0x35};//时序参数表
/*              延时函数                                            
*******************************************************************
**函数原型: void delay(void)                                              
**函数功能:延时函数                                                     
**输入参数:无                                                    
**输出参数:无
**备注说明:                                                    
*******************************************************************/
 void delay(void)  

{
    unsigned char a,b,c;
    for(c=18;c>0;c--)
        for(b=19;b>0;b--)
            for(a=23;a>0;a--);
}

 /*                 主函数                                         
*******************************************************************
**函数原型:main()                                              
**函数功能:                                                       
**输入参数:无                                                    
**输出参数:无
**备注说明:完成程序的主要功能                                                   
*******************************************************************/
main()
{
 unsigned char c;
 while(1)   //主循环
  {
    for(c=0;c<8;c++)
    {       

    P1=step[c];  //电机驱动
    delay();  //延时
    }
  
  }

}

 

电路图:

步进电机驱动板

控制板

组装整体





 

 

关闭窗口

相关文章