实验六 步进电机控制实验
一、实验目的:
1.了解步进电机的原理以及控制方法。
2.掌握对步进电机的编程。
二、实验内容:
1.编写程序实现步进电机的正反转。
2.编写程序实现对步进电机的单步运行。
三、实验设备:
1.ARM教学实验平台。
2. ADS 1.2集成开发环境和ARM仿真器。
3.串口连接线。
万用表功能
四、实验原理:
1.步进电机介绍
步进电机是将电脉冲信号转变为角位移或线位移的开环控制组件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各项绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动
和负载变化的影响。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
2.常用步进电机类型
反应式步进电动机(VR):结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。
永磁式步进电动机(PM):出力大,动态性能好;但步距角一般比较大。
混合步进电动机(HB):综合了反映式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。
3.步进电机参数和指标
步进电机的静态指标术语
相数:产生不同对极 N、S 磁场的激磁线圈对数。常用 m 表示。
拍数:完成一个磁场周期性变化所需脉冲数或导电状态用 n 表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即 AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.
步距角:对应一个脉冲信号,电机转子转过的角位移用 θ 表示。θ=360 度(转子齿数 J*运行拍数),以常规二、四相,转子齿为 50 齿电机为例。四拍运行时步距角为θ=360 度/(50*4)=1.8 度(俗称整步),八拍运行时步距角为 θ=360 度/(50*8)=0.9 度(俗称半步)。
定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以
及机械误差造成的)
静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过分采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。
4.步进电机控制系统
脉冲信号的产生 脉冲信号一般由 CPU 或单片机,这里是有 S3C2440 的,一般脉冲信号的占空比为 0.3-0.4左右,电机转速越高,占空比则越大。
信号分配 以四相步进电机为例,四相电机工作方式有二种,四相四拍为 AB-BC-CD-DA;四相八拍为 AB-B-BC-C-CD-D-AB。
功率放大 功率放大是步进电机驱动系统最为重要的部分。步进电机在一定转速下的转矩取决于它的动态平均电流而非静态电流(而样本上的电流均为静态电流)。平均电流越大电机力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电势。因而不同的场合采取不同的驱动方式,到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流、细分数等。
5.教学实验系统中对步进电机的控制
ARM实验箱 采用的是四相步进电机,工作模式是四相四拍,系统采用四路 I/O 进行脉冲分配,这四路 I/O 口由 CPLD 扩展的,通过功率放大后,进入步进电机的各相绕组。在四相
四拍的工作模式下,脉冲分配信号如下表,表格中的 A,B,C,D 为步进电机的四相。
表一 四相四拍的脉冲分配信号
通电顺序 正转脉冲序列 反转脉冲
1 0011(AB) 1001(DA)
2 0110(BC) 1100(CD)
3 1100(CD) 0110(BC)
4 1001(DA) 0011(AB)
控制步进电机的 I/O 口地址为:
#define StepMotor_Address *(volatile U16 *) (0x38001000) //nGCS7
五、实验步骤: 登陆支付宝
(1)新建一个工程名为 StepMotor,并新建源文件、输入代码,设置好工程编译生成目标代码;
(2) 硬件连接:用串口线将 PC 机的 COM1 与实验箱的 UART1 连起来,最后接上电源;
(3) 下载、调试并运行: 自拍写真
(4) 结合实验内容和原理,观察实验现象,实验结果应该是步进电机转动正转停止反转并且可以在超级终终端看到打印的信息;
(5) 完成实验练习题。
六、步进电机应用程序编程:
1.相关函数说明
电视机有声音没图像#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
#include "mmu.h"
// PB8 黑 PA13 MOTERK1 --R201 A+
// PB9 灰 PA14 MOTERK2 --R202 A-
// PB10 橙 PA15 MOTERK3 --R203 B+
干爹轻一点
// PB11 黄 PA16 MOTERK4 --R204 B-
//MOTERK1 S3C2440_PIO_PG0
#define MOTERK1 (1UL<<0)
#define MOTERK1_INIT() rGPGCON=(rGPGCON & (~(0x03UL<<0))) | (0x01<<0);rGPGUP |= MOTERK1
#define MOTERK1_LOW() rGPGDAT = rGPGDAT & (~MOTERK1)
#define MOTERK1_HIGH() rGPGDAT = rGPGDAT | MOTERK1
//MOTERK2 S3C2440_PIO_PG3
#define MOTERK2 (1UL<<3)
#define MOTERK2_INIT() rGPGCON=(rGPGCON & (~(0x03UL<<6))) | (0x01<<6);rGPGUP |= MOTERK2
#define MOTERK2_LOW() rGPGDAT = rGPGDAT & (~MOTERK2)
#define MOTERK2_HIGH() rGPGDAT = rGPGDAT | MOTERK2
//MOTERK3 S3C2440_PIO_PG6
#define MOTERK3 (1UL<<6)
#define MOTERK3_INIT() rGPGCON=(rGPGCON & (~(0x03UL<<12))) | (0x01<<12);rGPGUP |= MOTERK3
#define MOTERK3_LOW() rGPGDAT = rGPGDAT & (~MOTERK3)
#define MOTERK3_HIGH() rGPGDAT = rGPGDAT | MOTERK3
//MOTERK4 S3C2440_PIO_PE11
#define MOTERK4 (1UL<<11)
#define MOTERK4_INIT() rGPECON=(rGPECON & (~(0x03UL<<22))) | (0x01<<22);rGPEUP |= MOTERK4
烟台海军航空大学#define MOTERK4_LOW() rGPEDAT = rGPEDAT & (~MOTERK4)
#define MOTERK4_HIGH() rGPEDAT = rGPEDAT | MOTERK4
void MotorStep_Run_P(int num, int stepDelay)
{
while ((num--))
{
// 正转 ,双相励磁两拍 ,结束了全0
// 0011
// 0110
// 1100
// 1001
// 橙 PA15 MOTERK3 1 0 0 1
// 灰 PA14 MOTERK2 1 1 0 0
// 黄 PA16 MOTERK4 0 1 1 0
// 黑 PA13 MOTERK1 0 0 1 1
// A+B+ , B+A- ,A-B- ,B-A+
冰淇淋的做法和配方
海信英文 // A+ A- B+ B-
//port_write(MOTERK1,0);port_write(MOTERK2,1);port_write(MOTERK3,1);port_write(MOTERK4,0);