51单片机轻松入门—基于STC15W4K系列(C语言版)
李友全 编著 详见:http://www.51hei.com/bbs/dpj-37954-1.html
第15章 步 进 电 机 测 试 1 步进电机特点 2 步进电机的3种励磁方式 3 步进电机驱动电路 4 步进电机驱动实例 步进电机特点: 1 步进电机特点 ①步进电机旋转角度和输入脉冲成正比,通常市面所售步进电机说明书会说明 其步进角(也就是一个脉冲所产生的旋转角度),比如常见的小体积永磁式电机 的步进角是7.5°,则送给它48个脉冲使步进电机正好转动一圈。
② 步进电机转角误差很小,没有累积误差,因此控制步进电机正反转还是会回 到原来的位置,不会因为误差累积而使初始位置越来越远。 ③ 具有自保持特性,任何一相线圈加上电源后,电机本身具有自保持力矩,不 送脉冲情况下会停止在一定位置,不会改变。 ④ 步进电机空载最高启动频率一般能达到450Hz,使用频率不能超过允许最高频 率,否则电机只能振动,无法运转。 ⑤ 常见步进电机供电电压是5V、12V、24V,供电电压允许误差±10%,电机外壳 上一般都会对供电电压规格作相应标识。 步进电机内部线圈电路图:
外部接口
2 步进电机的3种励磁方式 依次改变电流所流过的线圈,就可以让步进电机转动,如果顺序相反的话,电机 就会反方向转动,比如图13-1电机有A,/A,B,/B共4组线圈,最简单的方式就是 依次将电流按A,B,/A,/B顺序导入4组线圈,不同的导入方式会产生不同的结 果,电流的导入称为励磁,励磁有3种方式。 (1)1相励磁(也称为单4拍) 这种励磁方式是将电流一次只导入一组线圈中,每次可移动一个步进角,这种 励磁方式产生的力矩小,噪音振动最大,励磁顺序如表15-1所示,其中H表示励 磁,L表示未励磁,图15-2是对应波形图。 表15-1 图15-2 (2)2相励磁(也称为双4拍) 这种励磁方式是将电流一次导入两组线圈中,每次可移动一个步进角,由于同时 有2个线圈被励磁,因此产生的力矩较大,噪音振动比1相励磁小,励磁顺序如表 15-2所示,图15-3是对应波形图,按照表15-2的方式依1、2、3、4的顺序分别将4 组线圈中的2组线圈励磁,步进电机会转动4个步进角,如果反方向励磁(也就是以4、3、2、1的顺序),步进电机就按反方向转动4个步进角。
(3)1-2相励磁(也称为8拍) 这种励磁方式是上述两种励磁方式的综合,将A、B两相采用交互励磁的方式 进行,将电流第一次导入一组线圈中,在第二次导入两组线圈,每次可移动半 个步进角,是噪音振动最小的一种励磁方式,励磁顺序如表15-3所示,图15-4 是对应波形图,按照表15-3的方式依1、2、3、4、5、6、7、8的顺序分别将4组 线圈励磁,步进电机会转动4个步进角(虽然励磁8次,但因每次都只前进半个 步进角,总和还是4个步进角)。 3 步进电机驱动电路 步进电机典型驱动电路如图15-5所示,有时为了增加电机输出力矩,在不增加电源电压和驱动脉 冲宽度的前提下,可将图15-5中的4只反峰电压保护二极管1N4007去掉,只要电机绕组断电瞬间 产生的电压峰值不超过TIP122的极限电压100V即可,这样就成了图15-6的电路,TIP122内部CE间 已集成反向二极管,为了减轻内部反向二极管负担,所以外部并接了1N4007给电机绕组提供反向 电流通路,图15-7与图15-8是实测的TIP122集电极电压波形与TIP122发射极电流波形(即电机绕 组电流波形)。 图15-5 步进电机典型驱动电路图 15-6 增加驱动力矩的电路
GND 图15-7 典型电路波形 图15-8 增加力矩电路的波形 4步进电机驱动实例 例15.1 步进电机正反转测试,使用图15-7或图15-8的电路,采用1-2相励磁,要求上电后顺转 200步,然后反转200步,如此循环,完整实验代码如下。使用P20、P21、P22、P23口驱动电机 #include "STC15W4K.H " unsigned char code BiaoGe[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; void PROT_Init(void) { P2M1 = 0x80; // 1000 0000 P2.0、P2.1、P2.2、P2.3、接驱动功率管,推挽输出 P2M0 = 0x0f; // 0000 1111 P2.7 接接霍尔传感器信号输入,高阻输入 } void shun200() // 顺转200步 { unsigned int i; unsigned char n; n=0; for(i=0;i<400;i++) // 200步,i/2为实际步数 { P2=BiaoGe[n]|0xf0; // 不影响P2口高4位 delay3ms(); n=n+1; if (n>7) { n=0; } } P2&=0xf0; // 保证电机绕组断电 } void fan200() // 反转200步 { unsigned int i; unsigned char n; n=8; for(i=0;i<400;i++) // 200步,i/2为实际步数
P2=BiaoGe[n]|0xF0; // 不影响P2口高4位 delay3ms(); if (n==0) { } P2&=0xf0; // 保证电机绕组断电 } void main(void) { PROT_Init(); // 初始化端口 while(1) { shun200(); delay1s(); fan200(); delay1s(); } }
本章完整程序及资料下载:
第15章 步进电机测试.rar
(2.35 MB, 下载次数: 77)
|