51驱动28BYJ48步进电机
简介
步进电机分类
步进电机内部结构示意图
工作原理
驱动代码
总结
简介
电机可划分为驱动类电机和控制类电机。直流电机属于驱动类电机,这种电机是将电能转换成机械能,主要应用在电钻、小车轮子、电风扇、洗衣机等设备上。步进电机属于控制类电机,它是将脉冲信号转换成一个转动角度的电机,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,主要应用在自动化仪表、机器人、自动生产流水线等设备。
步进电机分类
步进电机可以分为反应式,永磁式和混合式三种,目前反应式的步进电机效率低发热大从而被淘汰了,混合式因为结合了反应式和永磁式的优点从而有力矩大,动态性能好,精度高但是结构复杂而一般用于工业方面,我主要介绍永磁式步进电机28BYJ48。
命名说明
![](http://n4.ikafan.com/assetsj/blank.gif)
具体命名
![](http://n4.ikafan.com/assetsj/blank.gif)
步进电机内部结构示意图
![](http://n4.ikafan.com/assetsj/blank.gif)
图中中间有6个齿,分别标号为0-5,也就是步进电机的转子,其中转子的每个齿都是带有永久的磁性,也就是所谓的永磁体,外圈有八个定子,他们分别缠上了一个线圈绕组,随后两个相对的齿上的绕组又是串联在一起,也就是他们可以导通或者关断,导通一个相后由右手螺旋定则可以产生一个电磁体,从而由磁场改变定子的转向。
工作原理
上图中,首先给B相通电此时由右手螺旋定则可知上下两个定子此时可形成两个磁极,从而对中间转子起到一个上下两个力的吸引作用,此时可保持一个平衡转子0和3,此时再断开B相,导通C相,这个时候C相的两个定子会对转子14产生一个吸引力从而维持平衡,由此可以推出档A相导通时此时转子0和3在A相的两个定子之间维持平衡状态,此时转子转了八分之一,转一圈就需要8*4 =32个节拍。此时为4个节拍8次与电机名字不吻合,于是有另外一种更优性能的方法,在给B相和C相通电中间加一个节拍,也就是B相不断开的同时加上C相,此时由平行四边形法则可以得知在C相和B相中间有一个中间里也就是在CB之间存在一个吸引力从而让转子1逆时针旋转一定角度,此时转一圈需要8 *8=64个节拍。关于角度32个节拍时一个节拍转动角度为360/32=11.25°,64个节拍转动角度为360/64=5.625°。此时更加提升了转动的精度。
逆时针转动时的励磁顺序为下图:
![](http://n4.ikafan.com/assetsj/blank.gif)
参数图:
![](http://n4.ikafan.com/assetsj/blank.gif)
驱动代码
具体每个节拍的时间间隔可以由频率大于550可以换算出时间检测大致为1s/550得出大致为1.8ms,单纯的软件延时是不可已经精准延时的,后续可通过具体定时器实现精准延时。
51IO口无法直接驱动步进电机,此时需要外加三极管放大电流来驱动2B8YJ48,
下代码只是简单让电机旋转没有精确延时
#include <reg52.h>unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格void Delay(unsigned int i)//延时{ while(--i);}main(){ unsigned char i; while(1) { for(i=0;i<4;i++) //4相 { P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格 Delay(500); //改变这个参数可以调整电机转速 } }}
总结
本文章可以通过步进电机的内部原理与运算分析直观的了解步进电机的工作原理以及从单片机中如何更直观的去运用算法和步骤进行编程。