<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機的步進電機控制,正轉反轉等

          51單片機的步進電機控制,正轉反轉等

          作者: 時間:2018-08-01 來源:網絡 收藏

          應用廣泛,

          本文引用地址:http://www.ex-cimer.com/article/201808/384872.htm

          例如打印機、磁盤驅動器、玩具、汽車雨刷、手機震動、機械夾具、刻錄機等各種機械控制場合

          一些概念:

          拍數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

          一個通電循環(huán)周期(比如4拍)轉子轉過一個齒距角

          齒距角又等于360除以轉子齒數Z, θz=360/Z

          步距角θs

          步距角,即在沒有減速齒輪的情況下,對于一個脈沖信號,轉子所轉過的機械角度.

          也就是說,每一拍轉子轉過的角度稱之為步距角,通常用θs表示

          θs=齒距角/拍數

          θs=360/(N*Z)

          步距角的誤差不會長期積累,只與輸入脈沖信號數相對應,

          可以組成結構較為簡單而又具有一定精度的開環(huán)控制系統(tǒng),

          也可以在要求更高精度時組成閉環(huán)系統(tǒng)。

          轉速X

          每分鐘電機轉了多少轉?設脈沖頻率f

          一個脈沖,轉子轉過角度為1/(ZN),

          X=60*f/(ZN) 拍數與齒數表示法

          =(f*θs)/6 步距角表示法

          24BYJ48-5v 減速永磁

          功能特點:

          采用ULN2003驅動,使用方便,帶齒輪減速,噪音低,運轉平穩(wěn),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代碼

          #include my51.h

          //4相8拍

          u8 code tableCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時針旋轉相序表

          u8 code tableCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //順時針旋轉相序表

          sbit S3=P3^5; //反轉 按鍵

          sbit S4=P3^6; //正轉 按鍵

          sbit S5=P3^4; //停止 按鍵

          void motorTurn_ccw() //轉1圈,逆時針

          {

          u8 i,j;

          for(j=0;j8;j++) //電機內部的轉子旋轉一周

          {

          if(S5==0) //按鍵沒處理抖動

          {

          break; //如果停止鍵按下,退出此循環(huán)

          }

          for(i=0;i8;i++) //旋轉45度, 8*5.625°=45°

          {

          P1=tableCCW[i];

          delayms(2); //調節(jié)轉速

          }

          }

          }

          void motorTurn_cw() //轉1圈 ,順時針

          {

          u8 i,j;

          for(j=0;j8;j++) //8*45°=360°

          {

          if(S5==0)

          {

          break; //如果停止鍵按下,退出此循環(huán)

          }

          for(i=0;i8;i++) //旋轉45度,8*5.625°=45°

          {

          P1=tableCW[i];

          delayms(2); //調節(jié)轉速

          }

          }

          }

          void main()

          {

          u8 r;

          u8 N=64; //減速,減速比1/64,所以N=64時,步進電機外主軸轉一圈

          P1=0xff; _nop_();

          ledLock= LOCK; //我們的P1口接有8個led燈,先鎖定,不要讓它們亮 ,節(jié)能環(huán)保

          while(1)

          {

          if(S3==0) //按鍵了

          {

          for(r=0;r

          {

          motorTurn_ccw(); //電機逆時針轉

          if(S5==0)

          {

          break; //俺S5鍵立馬停止

          }

          }

          }

          else if(S4==0)

          {

          for(r=0;r

          {

          motorTurn_cw(); //電機順時針轉

          if(S5==0)

          {

          break;

          }

          }

          }

          else

          {

          P1=0xf0; //平時也是停止的

          }

          }

          }



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();