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

標題: 基于stm8的pid控制器課程設(shè)計 [打印本頁]

作者: hongniu    時間: 2015-6-25 02:35
標題: 基于stm8的pid控制器課程設(shè)計
                               孫鵬
   摘要:
隨著信息技術(shù)的發(fā)展,越來越多的電子設(shè)備開始變得智能化。對于傳統(tǒng)pid控制法,在一些簡單,精度要求低的場所下,起著很重要的作用,本文介紹實習過程中做pid電機調(diào)速的一些心得。
一題目要求:
本題是以8/16位微控制器為基礎(chǔ),實現(xiàn)小型直流電機閉環(huán)調(diào)速功能,設(shè)計PID數(shù)字控制器。
具體設(shè)計要求:熟悉微控制器,選擇適合的微控制器芯片;設(shè)計轉(zhuǎn)速編碼檢測、驅(qū)動調(diào)節(jié)設(shè)計;實現(xiàn)PID閉環(huán)控制設(shè)計,電機速度由按鍵分段給定或電位器連續(xù)給定,數(shù)碼管跟蹤顯示當前給定速度和電機實際運行速度,實現(xiàn)PID參數(shù)在線顯示和修改;完成硬件電路設(shè)計和測控程序的設(shè)計;文擋整理,撰寫報告。

二題目理解:
因為之前焊了了stm8開發(fā)板,而stm8作為意法半導(dǎo)體的一款8mcu,自帶ad,定時器,捕獲,電機控制pwm波,完全能夠滿足題目8位微處理器的要求。實現(xiàn)直流電機閉環(huán)控制,即需要用pid 控制,因為之前風馳電掣比賽上有看過,所以代碼也很簡單。
我選用的是stm103k3t6,8kflash,1kram640bitepprom.內(nèi)置高級定時器time1,通用定時器(16位)timer2,8位定時器time4.電機使用廢棄的剃須刀上的馬達,傳感器是用100k的光敏電阻和100mw的激光頭,電機驅(qū)動使用航模通用nmosst2302.使用鋰電池供電,lcd1602作為顯示模塊,紅外遙控作為控制鍵盤。
三硬件設(shè)計3.1CPU選擇因為stm3232位單片機,而43016位單片機,c518位單片機。用stm32430均可實現(xiàn)本題的要求,但用c51來完成本題恐怕有些挑戰(zhàn)性。為了用最簡單的方法完成本題,我選用了stm8103k3t6.8位單片機中性價比之王。其內(nèi)部結(jié)構(gòu)如圖一所示:

圖一
3.2顯示模塊:   因為題目要求顯示模塊需要顯示當前速度和設(shè)定速度外,還需要能夠修改pid的參數(shù),所以選擇了最通用的顯示屏幕lcd1602.
3.3控制模塊
因為之前用過按鍵掃描和按鍵中斷的函數(shù),但發(fā)現(xiàn)按鍵需要延時,很浪費CPU資源,所以選擇用紅外發(fā)射接收模塊。既可拓展功能,又可節(jié)省CPU資源,最大的好處就是不用觸摸按鍵,桌面的抖動可能導(dǎo)致光電傳感器檢測到的計數(shù)脈沖不準確。
3.4電源部分
電源為自己手機電池,系統(tǒng)工作電流120ma-200ma,待機電流80ma左右。而電池的電量為2100ma/h。實際在帶電機工作情況下可以工作5小時上。
為了方便電池充電,本系統(tǒng)自帶鋰電池專用充電芯片tp4056.
為了給系統(tǒng)提供穩(wěn)定的5v電源,本系統(tǒng)采用了專用700ma5v升壓模塊,實際測得升壓模塊輸出電壓為5.1-5.2v。可以給系統(tǒng)大部分電路供電。
3.5驅(qū)動模塊
為了給電機添上驅(qū)動,我開始考慮到lm298,但其體積龐大,需要7v以上電源。但我發(fā)現(xiàn)了一款實用的nmosst2302,航模經(jīng)典驅(qū)動芯片,3.3v就可以驅(qū)動。所以按照網(wǎng)上的電路圖給焊接起來,發(fā)現(xiàn)確實管用。
3.6傳感器
因為手上有激光頭和光敏電阻,所以選擇了激光頭打在光敏電阻上產(chǎn)生脈沖波,實現(xiàn)轉(zhuǎn)速測量。由邏輯器件產(chǎn)生電壓比較輸出脈沖波,由穩(wěn)壓二極管1n4733產(chǎn)生3.3v電壓,供單片機采集脈沖。
四軟件設(shè)計4.1pwm波生成     Pwm波由定時器2產(chǎn)生,初始化為1khzspwm波,占空比設(shè)置為1/10.通過在程序中調(diào)節(jié)定時器相關(guān)寄存器值可以改變pwm波的占空比。
4.2lcd顯示     因為是用遙控控制lcd1602的翻頁和相關(guān)參數(shù)的設(shè)置,所以我選擇每1.4slcd屏幕上字幕刷新一次。如果刷新時間太短,紅外遙控可能無法工作。當刷新時間太快時,字幕跳的太快會看不清字幕。
4.3脈沖捕獲    我采用的是stm8外部中斷源,當pc1捕獲到上升沿時,改為下降沿捕獲,連續(xù)一次上升沿和一次下降沿為一個周期,通過定時器4算出10個周期內(nèi)時間,這樣算10次,去掉最高值和最低值,即為平均值。

4.4pid算法     因為pi,pk,pd均為float值,而系統(tǒng)時鐘只用16MHZ,用c語言編寫需要消耗上百條指令周期,所以我將pid算法放入定時器4運算,每200ms運算一次。

                                                                                                      程序是我一個一個敲進去的

#pragma vector=0x07 // 這里很關(guān)鍵!看下面說明。
__interrupt void EXTI_PC1(void)
{
  asm("sim");
  switch(EXTI_CR1)
  {
  case 0x10:EXTI_CR1=0x20;exit_flag=1;break;
  case 0x20:EXTI_CR1=0x10;exit_flag=2;break;
  default :exit_flag=0;break;
  }
if(exit_flag==2)
{
    t++;
   exit_flag=0;
   if(t%10==0)
   {
      ulong chaju;
      now_nus=TIM4_CNTR;
      now_ms=cishu;
     chaju_ms=now_ms-last_ms;
   if(cishu_flag==1)
   {
     cishu_flag=0;
     chaju_ms=30000+now_ms-last_ms;
   }
      chaju_nus=now_nus-last_nus;
      chaju=chaju_ms*250+chaju_nus;
      now_rads=(1250000/chaju);
      last_nus=now_nus;
      last_ms=now_ms;
      last_rads[rads_flag++]=now_rads;
      if(rads_flag==10)
        rads_flag=0;

    pid_error1=pid_error;
    pid_error=set_rads-now_rads;

     pid_dt2=pid_dt1;
     pid_dt1=pid_error-pid_error1;
     last_radsss=last_radss;
     last_radss =now_rads;
   }
}

   asm("rim");
}

#pragma vector=TIM4_OVR_UIF_vector//0x19
__interrupt void TIM4_OVR_UIF_IRQHandler(void)//對應(yīng)IAP的中斷地址:0x8060
{
      ++cishu;

      TIM4_SR=0x00;     
      if(cishu==29999)
      {
        cishu_flag=1;
        cishu=0;
        minute++;
       ds1820_flag=0;
      }
      if(cishu%100==0)
       pid_caculate();

}
//pid算法核心
void pid_caculate()
{
   int ppk,ppi,ppd;
   ppk=(int)((long)(((int)(pk*100))*(pid_error))/100);
   ppi=(int)((long)(((int)(pi*100))*(pid_error-pid_error1))/100);
   ppd=(int)((long)(((int)(pd*100))*(pid_dt1-pid_dt2))/100);
   pid_out+=ppk-ppi+ppd;
   if(pid_out>2000)pid_out=2000;
   if(pid_out<800)pid_out=800;
   TIM2_CCR1H =pid_out/256;
   TIM2_CCR1L = pid_out%256;
}










歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲欧美综合另类 | 日韩欧美在线观看视频 | 久操不卡 | 五月婷丁香| 国产乱码精品一区二区三 | 99热超碰 | 国产日韩欧美在线 | 最新超碰 | 亚洲二区在线观看 | 国产日批视频 | 看黄网址 | 久久亚洲免费视频 | av一区二区三区 | 成人在线一区二区 | 欧日韩av | 一级黄色片视频 | 日本久久视频 | 欧美日韩国产片 | 国产精品久久久久久久免费看 | 久久91精品| 久久伊人精品 | 欧美精品在线播放 | 蜜桃色一区二区三区 | 一级在线观看 | 亚洲精彩视频 | 91av免费| 中文在线一区 | 美国特色黄a大片 | 免费在线小视频 | 亚洲欧美精品一区 | 人人超碰人人 | 狠狠操狠狠爱 | 国产成人精品一区二区三区在线 | 精品久久久久久久 | 欧美777 | 免费黄色一级视频 | 一本色道久久综合亚洲精品酒店 | 午夜伦理视频 | 美女国产精品 | 毛片网页 | 97国产在线视频 |