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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

msp430f5529單片機風板控制裝置設計源碼與資料下載

[復制鏈接]
跳轉到指定樓層
樓主


全部資料51hei下載地址:
校電賽已完成部分.zip (1.17 MB, 下載次數: 135)

二、 要求
1. 基本要求
1) 由起點開始啟動裝置,控制風板在不少于 5s,不大于 10s 的時間內從起點到達終點。
2) 預置風板控制角度(控制角度在 45°~135°之間設定)。由起點開始啟動裝置,控制風板達到預置角度,過渡過程時間不大于 15s,控制角
2 / 2
度誤差不大于 5°,在預置角度上的穩定停留時間為 5s,誤差不大于1s。動作完成后風板平穩停留在終點位置上;
3) 顯示風板設置的控制角度。風板從一個狀態轉變到另一個狀態時應有明顯的聲光提示。
2. 發揮部分
1) 在 45°~135°范圍內預置兩個角度值(Φ 1 和 Φ 2 )。 由終點開始啟動裝置,在 10s 內控制風板到達第一個預置角度上;然后到達第二個預置角度,在兩個預置角度之間做 3 次擺動,擺動周期不大于 5s,擺動幅角誤差不大于 5°,動作完成后風板平穩停留在起點位置上;
2) 利用 LCD 或 OLED 進行風板角度的實時顯示(精確到度);
3) 在基本要求 2)的基礎上實現控制角度誤差不大于 2°
三、 說明
1. 給出的圖 1 僅作參考,風板的外形尺寸要求為:高 150mm×寬 200mm,厚度和制作材料及風板支架的機械連接方式不做限定;風板上除安裝風板轉動軸、角度指示針和傳感器外,不能安裝其他任何裝置;風機數量和控制風向方式可自行設計確定;可以設置風板起始位置、終點位置的限位裝置,限定風板能在與水平線成 30°~150°的夾角內擺動。
2. 風板的運動狀態,都要通過控制風機的風量來完成,不能受機械結構或其它外力的控制。 機械結構摩擦力不能過大,將風板由豎直狀態釋放后, 給予微小擾動, 風板可以在重力作用下倒下。 控制角度誤差為實測角度與預置角度之差的絕對值。風板由靜止開始運動到規定控制角度的時間定義為過渡過程時間。風板從一個狀態轉變到另一個狀態時應有明顯的聲光提示,聲光提示只作為測評計時的參考,以現場實測數據為準。
3. 如裝置在測評時出現故障導致其無法繼續進行測評,則成績無效。  



單片機源程序如下:
  1. /*   連接:MSP430     P3.0   P3.1  GND  GND
  2. *           |        |     |     |    |
  3. *       MPU6050     SDA   SCL   GND  AD0  */
  4. #include "msp430f5529.h"
  5. #include "DataScope_DP.h"
  6. #include "UART_F5529.h"
  7. #include "I2C_F5529.h"
  8. #include "MPU6050.h"
  9. #include "math.h"
  10. #include "Ucs_Init_Set.h"
  11. #include "lcd12864c.h"
  12. #define CPU_F ((double)25000000)//MCLK=25KHZ,利用自帶的延時函數來實現高精度的延時
  13. #define delay_us(x)  __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  14. #define delay_ms(x)  __delay_cycles((long)(CPU_F*(double)x/1000.0))
  15. int a=0,b=0;

  16. float ax,ay,az; //加速度原始數據
  17. float Ax,Ay,Az;//單位 g(9.8m/s^2)
  18. float Angel_accZ[10];//存儲加速度計算出的角度
  19. float Angel_accZ1;//存儲加速度計算出的角度
  20. int   Angel_accZ2=0;
  21. void PIDset();
  22. void GetData_Accel(void)//獲取加速度值,及存儲加速度計算出的角度
  23. {
  24.     //for(i=0;i<5;i++)
  25.     //{
  26.             ax = GetAccelX ();//加速度原始數據
  27.             ay = GetAccelY ();
  28.             az = GetAccelZ ();

  29.             Ax=ax/16384.00;  //對加速度進行量化,得出單位為g的加速度值
  30.             Ay=ay/16384.00;
  31.             Az=az/16384.00;
  32.             Angel_accZ2=acos(Az/(sqrt(Ax*Ax+Ay*Ay+Az*Az)))*180/3.14; //加速度計算三個軸和水平面坐標系之間的夾角
  33.     //}
  34. //    Angel_accZ1 = Angel_accZ[0]+Angel_accZ[1]+Angel_accZ[2]+Angel_accZ[3]+Angel_accZ[4]
  35.                   ;
  36. //   Angel_accZ2 = Angel_accZ1;
  37. }
  38. int Incremental_PID_C1(float Encoder,float Target)
  39. {
  40.         static float Bias=0,Last_bias=0,Pwm=0,ll_bias=0;

  41.         Bias=Encoder-Target;
  42.         Pwm+=30*(2.45*Bias-3.5*Last_bias+1.25*ll_bias);
  43.         ll_bias=Last_bias;
  44.         Last_bias=Bias;
  45.         if(Pwm>29000)  Pwm=29000;
  46.         if(Pwm<1000) Pwm=1000;

  47.         return  Pwm;
  48. }


  49. void PIDset()
  50. {
  51.    int i0=0;
  52.    int a1=0;
  53.           P6DIR|= BIT6+BIT7;
  54.           P7DIR|=BIT1+BIT2;
  55.           P6OUT|= BIT6;
  56.           P6OUT&= ~BIT7;
  57.           P7OUT|= BIT1;
  58.           P7OUT&= ~BIT2;
  59.     a1=Incremental_PID_C1(Angel_accZ2,120);
  60.     P2DIR|=BIT0+BIT1;
  61. for(i0=0;i0<30000;i0++)
  62. {
  63.         if(i0<=a1) {P2OUT =10; }
  64.         else       {P2OUT=01;   }



  65. }
  66. }

  67. /*void PIDs1()
  68. {
  69.       a=Incremental_PID_C1(Angel_accZ2,90);
  70.           P6DIR|= BIT6+BIT7;
  71.           P7DIR|=BIT1+BIT2;
  72.           P6OUT|= BIT6;
  73.           P6OUT&= ~BIT7;
  74.           P7OUT|= BIT1;
  75.           P7OUT&= ~BIT2;
  76.           P2DIR |= BIT0+BIT1;                     // P2.0 and P2.1 output
  77.           P2SEL |= BIT0+BIT1;                     // P2.0 and P2.1 options select

  78.           TA1CCR0 =511;                          // PWM Period
  79.           TA1CCTL1 = OUTMOD_7;                    // CCR1 reset/set
  80.           TA1CCR1 = a    ;                            // CCR1 PWM duty cycl
  81.           TA1CCTL2 = OUTMOD_7;                    // CCR2 reset/set
  82.           TA1CCR2 = 511- a   ;                               // CCR2 PWM duty cycle
  83.           TA1CTL = TASSEL_1 + MC_1 + TACLR;       // ACLK, up mode, clear TAR
  84. }*/
  85. void main(void)
  86. {

  87.         int ii2=0;

  88.         WDTCTL = WDTPW + WDTHOLD;//Stop watchdog timer to prevent time out reset
  89.     LCD_init();
  90.     Ucs_25Mhz();
  91.     UART_Init();
  92.     PIDset();
  93.     MPU6050Init();
  94.     _EINT();
  95.     while(1)
  96.     {

  97.             ii2++;
  98.             if(ii2==1)
  99.             {
  100.                     ii2=0;
  101.                     GetData_Accel();
  102.                     //LCD_write_float(1,0,Angel_accZ2);
  103.             }
  104.         PIDset();
  105.             //PIDs1();
  106.        // LCD_write_float(0,1,TA1CCR1);
  107.        // LCD_write_float(1,0,Angel_accZ2);
  108.             //LCD_write_float(0,2,TA1CCR2);
  109.     }
  110. }
復制代碼



評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲福利在线观看 | 91精品久久久 | 狠狠综合久久av一区二区小说 | 91在线免费视频 | 欧美在线视频免费 | 看av网 | 九九亚洲 | 午夜免费观看网站 | 天天操天天摸天天干 | 国产精品一区2区 | 国产精品女人久久久 | 高清成人免费视频 | 午夜精品一区 | 99精品国产一区二区青青牛奶 | 亚洲精品久久久一区二区三区 | 成人毛片在线视频 | 中文字幕乱码一区二区三区 | 青青草在线播放 | 国产麻豆一区二区三区 | 欧美美女一区二区 | 精品一区二区三区视频在线观看 | 国产98色在线 | 日韩 | 亚洲 欧美 日韩在线 | 喷水毛片 | 精品亚洲一区二区三区四区五区 | 国产精品久久久久aaaa樱花 | 午夜噜噜噜 | 国产欧美日韩一区二区三区在线观看 | 国内自拍真实伦在线观看 | 99小视频| 久久99视频 | 午夜影院普通用户体验区 | 国产一区 | 91精品国产91久久综合桃花 | 少妇无套高潮一二三区 | 国产综合视频 | 欧美成年视频 | 精品福利视频一区二区三区 | 国产999精品久久久久久绿帽 | 精品欧美一区免费观看α√ | 成人福利在线观看 |