[51单片机] 四相五线减速比为1/64步进电机驱动设计

简介:


 

一、大致介绍:

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

          图1 常见的几种步进电机

     图2 步进电机和ULN2003合用

 

二、常用术语

1、相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。
2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A。
3、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度/(转子齿数*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。
 
 
     图3 步进电机内部模型图
 
三、驱动方式
1、1相励磁法:每一瞬间只有一个线圈相通,其它休息。(优点)简单,耗电低,精确性良好。(缺点)力矩小,振动大,每次励磁信号走的角度都是标称角度。
2、2相励磁法:每一瞬间有两个线圈导通。(优点)力矩大,震动小。(缺点)每励磁信号走的角度都是标称角度。
3、1-2相励磁法:1相和2相交替导通。(优点)精度较高,运转平滑,每送一个励磁信号转动1/2标称角度,称为半步驱动。(前两种称为4相4拍,这一种称为4相8拍)
 
 (a)1相励磁法     (b)2相励磁法    (c)1-2相励磁法
        图4 3种驱动方式
 
三、代码
复制代码
 1 /*-----------------------------------------------
 2 名称:步进电机
 3 论坛:www.doflye.net
 4 编写:shifang
 5 日期:2009.5
 6 修改:无
 7 内容:本程序用于测试4相步进电机常规驱动 使用1相励磁
 8  ------------------------------------------------*/
 9 #include <reg52.h>
10 
11 sbit A1=P1^0; //定义步进电机连接端口
12 sbit B1=P1^1;
13 sbit C1=P1^2;
14 sbit D1=P1^3;
15 
16 #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
17 #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
18 #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
19 #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
20 #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
21 
22 unsigned char Speed;
23 /*------------------------------------------------
24  uS延时函数,含有输入参数 unsigned char t,无返回值
25  unsigned char 是定义无符号字符变量,其值的范围是
26  0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
27  长度如下 T=tx2+5 uS 
28 ------------------------------------------------*/
29 void DelayUs2x(unsigned char t)
30 {   
31  while(--t);
32 }
33 /*------------------------------------------------
34  mS延时函数,含有输入参数 unsigned char t,无返回值
35  unsigned char 是定义无符号字符变量,其值的范围是
36  0~255 这里使用晶振12M,精确延时请使用汇编
37 ------------------------------------------------*/
38 void DelayMs(unsigned char t)
39 {  
40  while(t--)
41  {
42      //大致延时1mS
43      DelayUs2x(245);
44      DelayUs2x(245);
45  }
46 }
47 /*------------------------------------------------
48                     主函数
49 ------------------------------------------------*/
50 main()
51 {
52  Speed=5; //调整速度
53  while(1)  
54   {         
55      Coil_A1                 //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
56      DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
57                              //数字越小,转速越大,力矩越小
58      Coil_B1
59      DelayMs(Speed);
60      Coil_C1
61      DelayMs(Speed);
62      Coil_D1
63      DelayMs(Speed);
64   }
65 }
复制代码
相关文章
|
7月前
|
传感器 芯片
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
107 0
|
7月前
|
传感器 监控 IDE
基于单片机的温度监控系统设计
基于单片机的温度监控系统设计
261 0
|
存储 芯片
SGM58031与单片机驱动实现
SGM58031与单片机驱动实现
411 0
|
传感器
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
609 0
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
|
5月前
单片机课程设计——PWM电机调速
单片机课程设计——PWM电机调速
|
7月前
|
IDE 开发工具
基于单片机的简易步进电机控制系统
基于单片机的简易步进电机控制系统
99 0
|
7月前
|
算法 C语言 智能硬件
stm32单片机实现电机的PID控制
stm32单片机实现电机的PID控制
176 0
STM32F0单片机 PWM + ADC 控制有刷电机
STM32F0单片机 PWM + ADC 控制有刷电机
|
C# Android开发 C++
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
221 0
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
|
传感器 前端开发 机器人
基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度
利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。
361 0