久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7273|回復: 1
打印 上一主題 下一主題
收起左側

直流電機角度控制電路與單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
《自控系統實驗指導書》2017
實驗二、直流電機角度控制
一、實驗目的
  • 掌握直流電機角度控制電路的組成。
  • 學習直流電機角度控制系統的設計。

二、實驗要求
    在Proteus軟件平臺上,設計模擬控制電路實現對直流伺服電機(MOTOR-SERVO)的角度控制,角度控制在-100到+100度之間階躍,設計PID控制器,并調試參數使控制性能達到:階躍響應超調≤5%。

三、控制對象
直流伺服電機(MOTOR-SERVO)及其線性功率放大電路如下,其中伺服電機含有角度檢測電位器,在反饋電位器加5V電源后,它就可以將角度轉換為0~5V電壓信號,H橋驅動電機進行轉動,伺服電機的角度范圍應修改為±179度,電機轉速分別設置為60、120、180轉/分,其他參數不能改。
四、設計提示
用示波器觀察反饋電壓、控制電壓和給定電壓波形,來測定控制系統的性能指標。

  • 實驗結果

實驗小結
通過本次試驗,我學習到了直流電機角度控制電路的組成。以及如何設計直流電機角度控制系統,本次實驗較難,經過課后努力基本解決了問題。

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char  
  4. #define tim2 (-50000)
  5. #define LCD_COM              0  // Command
  6. #define LCD_DAT  1  // Data
  7. #define LCD1602_DATA P0                                            

  8. sbit LcdRS=P2^0;
  9. sbit LcdRW=P2^1;
  10. sbit LcdEN=P2^2;

  11. sbit DAT = P3^2;
  12. sbit CLK = P3^3;
  13. sbit CS = P3^4;
  14. sbit SW1 = P3^0;
  15. sbit SW2 = P3^1;
  16. sbit LED = P3^7;
  17. sbit IN1 = P1^7;
  18. sbit IN2 = P1^6;
  19. sbit ENA = P1^5;
  20. bit PWM;
  21. uint PWMA,PWMB;
  22. int pos,set,e0,er;
  23. long speed=0;

  24. void DELAY(unsigned int t)
  25. {
  26.   unsigned int i,j ;
  27.   for(i=0;i<t;i++)
  28.               for(j=0;j<50;j++);
  29. }

  30. void LCD_WRITE(unsigned char x,bit WS)
  31. {
  32.   LCD1602_DATA=x;
  33.   LcdRW=0;
  34.   LcdRS=WS;
  35.   LcdEN=1;
  36.   DELAY(1);
  37.   LcdEN=0;
  38. }

  39. void LCD_Initial()
  40. {
  41.   LCD_WRITE(0x38,LCD_COM);   DELAY(5);
  42.   LCD_WRITE(0x38,LCD_COM);   DELAY(5);
  43.   LCD_WRITE(0x01,LCD_COM);   DELAY(5);
  44.   LCD_WRITE(0x06,LCD_COM);   DELAY(5);
  45.   LCD_WRITE(0x0c,LCD_COM);   DELAY(5);
  46. }

  47. void GotoXY(unsigned char x,unsigned char y)
  48. {
  49.   unsigned char code table[4]={0x00,0x40,0x10,0x50};
  50.   LCD_WRITE(0x80+table[x]+y, LCD_COM);
  51. }

  52. void PutCh(char m)
  53. {
  54.   LCD_WRITE(m,LCD_DAT);
  55. }

  56. void Print(unsigned char *str)
  57. {
  58.               while(*str!='\0')
  59.               {
  60.                             PutCh(*str);
  61.                             str++;
  62.               }
  63. }



  64. void Timer2() interrupt 5
  65. {
  66.   static uchar ms;
  67.   TF2=0;
  68.   if(++ms>2)
  69.   {
  70.               er=set-pos;
  71.     speed+=er*15+(er-e0)*2;
  72.     e0=er; ms=0;
  73.               if(speed>833) speed=833;
  74.               if(speed<-833) speed=-833;
  75.   }
  76. }



  77. void Timer0() interrupt 1
  78. {
  79.   ENA=PWM;
  80.   if(PWM)
  81. {TH0=PWMA>>8; TL0=PWMA&0XFF;}
  82.   else
  83.     {TH0=PWMB>>8; TL0=PWMB&0XFF;}
  84.   PWM=!PWM;
  85. }


  86. uint LTC1292(void)
  87. {
  88.               uint i,x;
  89.               CLK=0;DAT=1;CS=0;
  90.               for(i=0;i<14;i++)
  91.               {
  92.                             CLK=1;
  93.                             x<<=1;
  94.                             if(DAT==1) x++;
  95.                             CLK=0;
  96.               }
  97.               CS=1;
  98.               return(x&0xfff);
  99. }

  100.   if(speed>0) {IN1=1; IN2=0;}
  101.   else if(speed<0) {IN1=0; IN2=1;}
  102.   else {IN1=0; IN2=0;}
  103.   if(s<0) s=-s;
  104.   if(s>50000) s=50000;
  105.   PWMA=-s; PWMB=-(50010-s);
  106. }

  107. void main()
  108. {
  109.   int w;
  110.   LCD_Initial();
  111.   GotoXY(1,0); Print("Angle=0000");
  112.   GotoXY(0,0); Print("Set=0000");
  113.   IE=0x87; IT0=1; IT1=1;
  114.   TMOD=0X21; TR0=1;            
  115.   RCAP2H=tim2>>8; RCAP2L=tim2&0xff;
  116.   TH2=tim2>>8; TL2=tim2&0xff;     
  117.   ET2=1;  TR2=1;
  118.   IN2=0;  IN1=0;            
  119.   while(1)
  120.   {            
  121.               if(SW1==1)
  122.                             set=100;
  123.               if(SW2==1)
  124.                             set=-100;
  125.               w=(int)(-(double)LTC1292()*0.088+180);
  126.               pos=w;
  127.     SetPwm(speed);
  128.                 if(set>=0)
  129.      {
  130.                 GotoXY(0,4);
  131.                 PutCh('+');
  132.                    PutCh(set/100+'0');
  133.                 PutCh((set/10)%10+'0');
  134.                 PutCh(set%10+'0');
  135.               }
  136.               else
  137.               {
  138.                 GotoXY(0,4);
  139.                 PutCh('-');
  140.                    PutCh(-set/100+'0');
  141.                 PutCh((-set/10)%10+'0');
  142.                 PutCh(-set%10+'0');
  143. ……………………

  144. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
《自控系統實驗指導書》2017.rar (80.58 KB, 下載次數: 97)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:326699 發表于 2018-5-16 10:43 | 只看該作者
樓主你的,電路附件可以發一分完整的嗎,壓縮包里不全
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品在线免费看 | 在线免费看毛片 | 成人在线观看亚洲 | 日韩成年人视频在线 | 亚洲网站在线观看 | 午夜播放器在线观看 | 最新免费av网站 | 中国黄色在线视频 | 日韩成人在线观看 | 成人精品一区二区三区中文字幕 | 91精品国产91久久久久久密臀 | 日韩欧美高清dvd碟片 | 国产精品揄拍一区二区 | 免费在线观看av网址 | 久久久精彩视频 | 一区二区三区高清在线观看 | 天堂色综合 | 天天干狠狠 | 亚洲三级av | 蜜桃久久 | 亚洲一区二区三区四区五区中文 | 国产成视频在线观看 | 另类二区 | 亚洲男女视频在线观看 | 欧美日韩高清在线一区 | 日韩视频二区 | 国产精品自产拍在线观看蜜 | 亚洲一区二区在线免费观看 | 男女啪啪高潮无遮挡免费动态 | 亚洲视频一区在线 | 日韩中文字幕一区 | 99成人| 91网站视频在线观看 | 日韩视频 中文字幕 | 在线观看第一区 | 一级毛片免费 | 欧美性受xxxx白人性爽 | 在线亚洲免费视频 | 国产精品久久久久久 | 欧美三级三级三级爽爽爽 | 日韩视频免费 |