找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5092|回復(fù): 0
收起左側(cè)

單片機(jī)步進(jìn)電機(jī)控制實(shí)驗(yàn)

[復(fù)制鏈接]
ID:193941 發(fā)表于 2017-4-27 09:16 | 顯示全部樓層 |閱讀模式
實(shí)驗(yàn)八步進(jìn)電機(jī)控制實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/div>
  1.掌握Keil C51軟件與Protues軟件聯(lián)合仿真調(diào)試的方法;
  2.掌握步進(jìn)電機(jī)的工作原理及控制方法;
  3.掌握步進(jìn)電機(jī)控制的不同編程方法。
二、實(shí)驗(yàn)內(nèi)容
1.用Proteus設(shè)計(jì)一四相六線步進(jìn)電視控制電路。要求利用P1口作步進(jìn)電機(jī)的控制端口,通過達(dá)林頓陣列ULN2003A驅(qū)動步進(jìn)電機(jī)。
   2.編寫程序,實(shí)現(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)控制。正反轉(zhuǎn)時間分別持續(xù)10S時間,如此循環(huán)。
   3.設(shè)計(jì)一可調(diào)速步進(jìn)電機(jī)控制電路。P3.0~P3.2分別接案件K1~K3,其中K1為正反轉(zhuǎn)控制按鍵,K2為加速按鍵,K3為減速按鍵,要求速度7檔(1~7)可調(diào),加減速各設(shè)3檔,復(fù)位時位于4檔,要求每檔速度變化明顯。該步進(jìn)電機(jī)控制電路在以上電路的基礎(chǔ)上自行修改。
三、實(shí)驗(yàn)儀器與設(shè)備
1.微機(jī)1臺      2.Keil C51集成開發(fā)環(huán)境      3.Proteus仿真軟件
四、實(shí)驗(yàn)原理及步驟
1.用Proteus設(shè)計(jì)四相六線步進(jìn)電機(jī)控制電路;
2.在Keil C51中編寫步進(jìn)電機(jī)正反轉(zhuǎn)控制程序,編譯通過后,與Proteus聯(lián)合測試;
3.啟動仿真,觀察步進(jìn)電機(jī)轉(zhuǎn)動是否正常
4.用Proteus設(shè)計(jì)可調(diào)速步進(jìn)電機(jī)控制電路,仿真調(diào)試、運(yùn)行程序并查看效果。
五、電路設(shè)計(jì)及調(diào)試
(1)實(shí)驗(yàn)電路
0.png

(2)程序設(shè)計(jì)與調(diào)試
  1. #include<reg52.h>

  2. #define uchar unsigned char

  3. #define uint unsigned int

  4. uchar code zheng[]={

  5. 0xf3,0xf6,0xfc,0xf9};

  6. uchar code fan[]={

  7. 0xf9,0xfc,0xf6,0xf3};

  8. //uchar t;

  9. bit flag=0;

  10. uint shijian;

  11. uchar temp;

  12. void delay(uint z)

  13. {

  14. uint i,j;

  15. for(i=0;i<z;i++)

  16. for(j=0;j<80;j++);

  17. }

  18. /*void timer_init()

  19. {

  20.   TMOD=0X01;//定時器0,方式1

  21.   TH0=(65536-50000)/256;

  22.   TL0=(65536-50000)%256;

  23.   ET0=1;

  24.   EA=1;

  25.   TR0=1;

  26. } */

  27. void motor_z()

  28. {

  29.   uchar i;

  30.   for(i=0;i<4;i++)

  31.    {

  32.     P1=zheng[i];

  33.         delay(shijian);

  34.    }

  35. }

  36. void motor_f()

  37. {

  38.   uchar i;

  39.   for(i=0;i<4;i++)

  40.    {

  41.     P1=fan[i];

  42.         delay(shijian);

  43.    }

  44. }

  45. void keyscan()

  46. {

  47.   P3=0XFF;

  48.   delay(1);

  49.   if(P3!=0xff)

  50.    {

  51.           temp=P3;

  52.           switch(temp)

  53.           {

  54.             case 0xfe:

  55.                {flag=~flag;break;   }

  56.                case 0xfd:

  57.                {if(shijian<=60)

  58.                  {shijian=50;}

  59.                 else

  60.                {shijian=shijian-100;}

  61.                break;  }

  62.                case 0xfb:

  63.                {if(shijian>=600)

  64.                 {shijian=650;}

  65.                 else

  66.                 {shijian=shijian+100;}

  67.                break;  }

  68.                default : break;

  69.           }

  70.           while(temp==P3);

  71.    }

  72. }

  73. void main()

  74. {

  75.    shijian=350;

  76.   //timer_init();

  77.   while(1)

  78.    {

  79.      keyscan();

  80.      if(flag==0)

  81.          {

  82.            motor_z();

  83.          }

  84.     else

  85.          {

  86.               motor_f();

  87.          }

  88.    }

  89. }

  90. /*void timer() interrupt 1

  91. {

  92.   TH0=(65536-50000)/256;

  93.   TL0=(65536-50000)%256;

  94.   if(t>=200)

  95.    {

  96.     t=0;

  97.     flag=~flag;

  98.    }

  99.   t++;

  100. } */
復(fù)制代碼



六、實(shí)驗(yàn)后的經(jīng)驗(yàn)總結(jié)
1.掌握了proteus基本的操作方法.與KEIL C51聯(lián)合調(diào)試的方法
2.掌握了步進(jìn)電機(jī)工作原理的極編程的方法,做實(shí)驗(yàn)時要仔細(xì),要按步驟來,避免人為錯誤,避免出現(xiàn)電路連接錯誤。
3.做實(shí)驗(yàn)要獨(dú)立完成.
七、對實(shí)驗(yàn)課的建議
多練習(xí)一下編程,老師可以多講解一下編程的過程。做實(shí)驗(yàn)應(yīng)多給學(xué)生時間自主練習(xí),讓同學(xué)們對于實(shí)驗(yàn)有更深刻的理解,從實(shí)踐中找出問題,解決問題.




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表