新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 四相步進(jìn)電機(jī)控制程序(可隨時(shí)控制轉(zhuǎn)動(dòng)角度)

四相步進(jìn)電機(jī)控制程序(可隨時(shí)控制轉(zhuǎn)動(dòng)角度)

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
  1. /************************************************
  2. 文件:四相步進(jìn)電機(jī)控制程序
  3. [ ]:
  4. 描述:驅(qū)動(dòng)方式彩用一相勱磁
  5. moto_maichong_time 一個(gè)脈沖信號(hào)時(shí)間,單位1MS
  6. moto_qu_one 轉(zhuǎn)動(dòng)角度64(45度)
  7. 調(diào)用函數(shù) moto_dispose(char moto_NU) 形參值為1至8
  8. P1口與電機(jī)相連
  9. 時(shí)間:2011年1月11日
  10. *************************************************/
  11. #defineucharunsignedchar
  12. #definemoto_maichong_time 10//一個(gè)脈沖信號(hào)時(shí)間單位1MS(224ms)
  13. #definemoto_qu_one64*8//轉(zhuǎn)動(dòng)45度值
  14. /* 一相勵(lì)磁,電機(jī)正轉(zhuǎn)I/O高低電平對(duì)應(yīng)表*/
  15. uchar moto_table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x2,0x01};
  16. /* 二相勵(lì)磁,電機(jī)正轉(zhuǎn)I/O高低電平對(duì)應(yīng)表*/
  17. uchar moto_table2[]={0x0c,0x06,0x03,0x09,0x09,0x03,0x6,0x0c};
  18. uchar moto_begin=0;//正反轉(zhuǎn)標(biāo)志位
  19. intmoto_qu_k=0;//轉(zhuǎn)動(dòng)的初使值
  20. intmoto_qu_kk=1;//轉(zhuǎn)動(dòng)的最大值
  21. intmoto_qu_j=0;//勱磁信號(hào)的初始值
  22. voidmoto_delay(intmoto_i)//延時(shí)1MS函數(shù)
  23. {
  24. uchar moto_j,moto_k;
  25. for(moto_j=moto_i;moto_j>0;moto_j--)
  26. for(moto_k=125;moto_k>0;moto_k--);
  27. }
  28. /*電機(jī)速度,正反轉(zhuǎn)控制。正反轉(zhuǎn)由moto_begin取0正轉(zhuǎn)、4反轉(zhuǎn)*/
  29. voidqudong(uchar moto_num)
  30. {
  31. moto_qu_kk=moto_qu_one*moto_num;
  32. /*電機(jī)轉(zhuǎn)動(dòng)一圈*/
  33. for(moto_qu_k=0;moto_qu_k
  34. {
  35. /*四個(gè)勵(lì)磁脈沖信號(hào)*/
  36. for(moto_qu_j=moto_begin;moto_qu_j<4+moto_begin;moto_qu_j++)
  37. {
  38. P1=moto_table2[moto_qu_j];//選擇勱磁方式
  39. moto_delay(moto_maichong_time);//1個(gè)勵(lì)磁脈沖信號(hào)時(shí)間
  40. }
  41. }
  42. }
  43. /*控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)圈數(shù)、正反轉(zhuǎn)。正數(shù)為正轉(zhuǎn)、負(fù)數(shù)反轉(zhuǎn)*/
  44. voidmoto_dispose(charmoto_NU)
  45. {
  46. /*根據(jù)傳入值,控制電機(jī)正反轉(zhuǎn)*/
  47. if(moto_NU<0)
  48. {
  49. moto_begin=4;//控制電機(jī)反轉(zhuǎn)
  50. moto_NU*=-1;//取轉(zhuǎn)動(dòng)圈數(shù)
  51. }
  52. else
  53. moto_begin=0;//控制電機(jī)正轉(zhuǎn)
  54. /*根據(jù)傳入值,控制電機(jī)轉(zhuǎn)動(dòng)圈數(shù)*/
  55. qudong(moto_NU);
  56. }


評(píng)論


技術(shù)專區(qū)

關(guān)閉