分享

51单片机学习笔记:步进电机控制,正转反转等

 共同成长888 2018-05-05

步进电机应用广泛,

例如打印机、磁盘驱动器、玩具、汽车雨刷、手机震动、机械夹具、刻录机等各种机械控制场合

一些概念:

拍数N
定子控制绕组每改变一次通电方式,即为一拍
一个磁场通电周期是  A-B-C-D-A
完成一个磁场周期性变化所需脉冲数,
也指电机转过一个齿距角所需脉冲数,用N表示
拍数又等于相数的1倍或2倍,
以四相电机为例,
有4相4拍, A-B-C-D-A...
   4相8拍, A-AB-B-BC-C-CD-D-DA-A...


齿距角θz
一个通电循环周期(比如4拍)转子转过一个齿距角
齿距角又等于360除以转子齿数Z,  θz=360/Z


步距角θs
步距角,即在没有减速齿轮的情况下,对于一个脉冲信号,转子所转过的机械角度.
也就是说,每一拍转子转过的角度称之为步距角,通常用θs表示
θs=齿距角/拍数
θs=360/(N*Z)
 
步距角的误差不会长期积累,只与输入脉冲信号数相对应,
可以组成结构较为简单而又具有一定精度的开环控制系统,
也可以在要求更高精度时组成闭环系统。


转速X
每分钟电机转了多少转?设脉冲频率f
一个脉冲,转子转过角度为1/(ZN),
X=60*f/(ZN)  拍数与齿数表示法
 =(f*θs)/6  步距角表示法

以上都是网上搜到的,整理了下,有不对的敬请指出,谢谢.

---------------------------------------------------------

 




 

我手上用到的步进电机

 

24BYJ48-5v  减速永磁步进电机

功能特点:
采用ULN2003驱动,使用方便,带齿轮减速,噪音低,运转平稳,5V即可驱动,
器件参数:
1.额定电压:5-10V DC
2.直流电阻:60Ω±7%(25℃).
3.减速比:1/64 
4.步距角:5.625°*(1/64),  含减速比
5.驱动方式:4相8拍
6.牵入转距:≥350gf.cm(工作频率:100PPS)
7.打滑扭力:800~1300gf.cm
8.温升:≤55K(5VDC 工作频率:100PPS)
9.噪音:≤35dB(空载,100PPS,水平距马达10cm)
10.绝缘耐压:600V AC/1秒
11.引线拉力强度:1Kgf/条
12.接线方式:5线4相
   1.VCC 红色
   2.A   橙色   
   3.B   黄色
   4.C   粉色
   5.D   蓝色
============================================================

C代码  收藏代码
  1. #include "my51.h"  
  2.   
  3. //4相8拍  
  4. u8 code tableCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};   //逆时针旋转相序表  
  5. u8 code tableCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    //顺时针旋转相序表  
  6.   
  7. sbit S3=P3^5;  //反转 按键  
  8. sbit S4=P3^6;  //正转 按键  
  9. sbit S5=P3^4;  //停止 按键  
  10.   
  11. void motorTurn_ccw()      //转1圈,逆时针  
  12. {     
  13.     u8 i,j;  
  14.     for(j=0;j<8;j++)       //电机内部的转子旋转一周  
  15.     {  
  16.         if(S5==0)   //按键没处理抖动  
  17.         {  
  18.             break;          //如果停止键按下,退出此循环  
  19.         }  
  20.         for(i=0;i<8;i++)    //旋转45度, 8*5.625°=45°  
  21.         {  
  22.             P1=tableCCW[i];  
  23.             delayms(2);      //调节转速  
  24.         }  
  25.     }  
  26. }  
  27.   
  28. void motorTurn_cw()         //转1圈 ,顺时针  
  29. {  
  30.     u8 i,j;  
  31.     for(j=0;j<8;j++)     //8*45°=360°  
  32.     {  
  33.         if(S5==0)  
  34.         {  
  35.             break;          //如果停止键按下,退出此循环  
  36.         }  
  37.         for(i=0;i<8;i++)    //旋转45度,8*5.625°=45°  
  38.         {  
  39.             P1=tableCW[i];  
  40.             delayms(2);     //调节转速  
  41.         }  
  42.     }  
  43. }  
  44.   
  45.   
  46. void main()  
  47. {  
  48.     u8 r;  
  49.     u8 N=64; //减速步进电机,减速比1/64,所以N=64时,步进电机外主轴转一圈   
  50.     P1=0xff; _nop_();     
  51.     ledLock= LOCK;        //我们的P1口接有8个led灯,先锁定,不要让它们亮 ,节能环保   
  52.     while(1)  
  53.     {  
  54.         if(S3==0)                 //按键了  
  55.         {  
  56.             for(r=0;r<N;r++)  
  57.             {  
  58.                 motorTurn_ccw();  //电机逆时针转  
  59.                 if(S5==0)  
  60.                 {  
  61.                    break;         //俺S5键立马停止  
  62.                 }  
  63.             }  
  64.         }  
  65.         else if(S4==0)  
  66.         {  
  67.             for(r=0;r<N;r++)  
  68.             {  
  69.                 motorTurn_cw();    //电机顺时针转  
  70.                 if(S5==0)  
  71.                 {  
  72.                     break;  
  73.                 }  
  74.             }  
  75.         }  
  76.         else  
  77.         {  
  78.             P1=0xf0;                //平时也是停止的         
  79.         }  
  80.     }  
  81. }  

 

 

相关资源推荐
评论

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多