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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

總算實現了PID調速

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

[提要] 從我構思圓夢小車的第一天起,我就把實現小車速度PID控制作為目標之一,前面雖做過多次嘗試,但均不滿意,故無意示人,此次總算是基本如愿了,在此與大家分享。


一、背景
   從我構思圓夢小車的第一天起,我就把實現小車速度PID控制作為目標之一,也許是我出身于自動控制專業的情結吧。
   在我寫的第一組關于智能小車的文章中(“尋跡小車 FollowMe”),就期望能實現小車 PID 調速,并且參照《電動機的單片機控制》一書寫了相應的測速和控制程序,但不幸的是,沒有實現  ,當初以為是測速的分辨率過低(只有10個脈沖/輪子轉一圈)。
   后來將小車升級,用開模具方式大大提高了測速的精度,推出了圓夢小車第一代。測速精度達到了每轉 50個脈沖(如果用前后沿檢測,可以達到100個脈沖),但略作嘗試后還是沒有實現,似乎沒有找到問題的根源。
   準確的說應該是我沒有掌握PID控制程序,我雖是學習自動控制出身,但畢業后從未實際應用過PID控制,所有知識局限于當初學校的實驗,這也是我一直想在小車上實現PID的動機之一:一個學自控的居然沒有在現實中運用PID的能力,汗顏!
   因為無力而為,所以在“圓夢小車StepByStep”系列文章中,就跳過了這一段內容。但心未死,想借助小車客戶中的高手之力完成之,為我打破這個僵局,可小車倒是送出去幾套,PID調速還是杳無音訊,無語!
   隨著小車進化至第三代(輪式驅動單元)、第四代(FIRA小車),將PID調速的夢想實現的愿望越加強烈!為此,還找了朋友介紹個熟人幫忙,本來信心滿滿,因為朋友說這個人參加了 Freescale 智能車大賽,其中就用到了PID調速。為此我又送出了一套第四代圓夢小車,更令我失望,連回音都沒有,郁悶!
   這一切迫使我自己去嘗試!看來這種沒有多少經濟利益的事少有人問津,但愿是這個原因,而不是由于無能。
   轉機緣于一個買了“輪式驅動單元”的客戶(現在是朋友了),他告訴我,參考 Arduino 所提供的 PID 庫函數實現了“輪式驅動單元”的調速,而且效果不錯。(Arduino 是一個基于AVR單片機的開源平臺,經過幾年發展,目前資源十分豐富)
   我急切的下載了 Arduino 的PID 庫函數 ,發現很有價值,就著手嘗試了,以下便是實施的過程。

二、PID庫函數的消化和移植

(由于排版麻煩,略,有興趣可下載 PDF 文檔)

三、嵌入程序前的準備

……

   因為PID控制的基礎是以周期T測量,計算出偏差后修正輸出。而測量周期不能太長,那樣響應將滯后;但過短也沒有意義,因為對象的慣性特征,導致極小的時間間隔中不會有變化。
   根據小車電機的驅動特性,100ms左右的周期比較合適。
   但小車的測速碼盤是直接設計在輪轂上的,雖說每轉有100個脈沖(輪式驅動單元),但相對于那些設計在電機輸出軸上的高級編碼器而言,分辨率遠遠不夠。按 目前小車的減速箱設計,對于1:48減速箱,最快時100ms 約34個脈沖,而1:120減速箱才不到14個脈沖,如果調速范圍設置為50% 到 100% ,則脈沖數更少,分辨率無法滿足控制的要求,如果再降低周期,則更無法得到可靠的控制反饋了。
   為此,首先得解決測速的分辨率問題,因為控制速度屬于運轉穩態時的任務,在起、停過程通常不需要。而正常運轉時,相鄰2個脈沖的周期不會變化很大,故可以 據此利用前一周期的數值作為倍頻的依據,詳細算法此處不再贅述,有興趣者可以到我在GoogleCode上設立的開源項目:
http://code.google.com/p/fira-mirosot-robot/ 中下載:
http://code.google.com/p/fira-mirosot-robot/downloads/detail?name=Introduction%20B%20-%20Hardware%20of%20the%20Smart%20Car.pdf&can=2&q=
   其原理示意如下圖:

四、將PID計算嵌入程序

……

五、PID參數整定前的準備

   從搜集的PID參數整定方法的資料看,多數需要能記錄速度變化的趨勢,也就是所謂的“對象動態特性”測量,或者說是“沖擊響應”測量。
   既然小車內部已經實現了數字化的速度檢測,且有通訊接口,為何不將速度送到PC機上,利用PC機顯示速度變化曲線,從而得到整定參數的依據。
   可我PC機上的圖形編程能力太菜,虧得有個好友幫忙,為我寫了一個圖形顯示程序,使速度顯示成為現實。(由衷表示感謝!)
   為了配合這個功能,在小車控制程序中增加了速度輸出,每次測量(20ms)都將速度結果送出,PC機根據這些速度數據繪出速度隨時間的變化曲線:


六、參數整定過程

   輪式驅動單元第二版驅動很方便,用串口可以容易的控制,為了簡化操作,是空載方式測試的,我用無線方式試驗過,有載(裝在小車上)效果更好。下圖為空載調試方式:



   從各類參數整定方式中,我感覺那個“齊格勒—尼克爾斯經驗法”比較容易實施,就按那個進行了參數調整,先關閉積分和微分作用,只保留P,在電機可以工作的 下限速度進行整定(因為我試過,如果在偏高的速度整定,則在低速工作時會振蕩,還無能力解釋),逐漸加大P使速度發生振蕩,如下圖:



此時得到臨界比例系數Pd,從圖上得到振蕩周期T ,根據“齊格勒—尼克爾斯經驗法”:
              Kp            Ki           Kd
  P 控制:    0.5Pd         
  PI控制:    0.45Pd        0.83T
  PID控制:   0.6Pd         0.5T         0.125T

  計算出PID系數,Pd  = 22 ,T = 300ms ,按PID控制計算,得到:
    Kp  =  1.3, Ki  = 0.15秒  Kd = 0.03秒

  設置到程序中后,基本可以了,只是微分系數需要略作調整(降低到0.02秒,否則有些振蕩),設置后的速度曲線為:

七、結語
   當時得到這個結果時,我倍感很神奇!
   因為早期的一件事讓我對PID系數的配比感到神秘莫測:曾經按照老外的示例做了個LEGO的兩輪平衡車,他也是用的PID控制,區區幾行程序,小車就站起來了。可是我將他的三個系數隨便一改,哪怕是略作調整,小車就趴下了,很是靈驗。
   那時我就對PID系數的整定心存敬畏,同時也一直想嘗試利用程序使其變得不那么神秘。
   這次嘗試總算了結了我的心愿,爽!
   借助這個工具,應該可以解決許多需要PID控制的問題,如兩輪平衡、差分驅動小車走直線等,只要程序中能測出偏差;而這是必須的,否則PID控制也無從談起。
   但愿此嘗試能起到拋磚引玉作用,使我們的愛好者們、多數大學生們所做的小車也能像那個外國人做的繞著茶杯轉的小車那樣流暢:

   而不是只有參加FreeScale智能車大賽的同學才能做到。
                      ————————————————
南京嵌入之夢工作室
2011年4月23日星期六

用 CamStudio 錄制的 PID 調速動態過程:

使用 1:120 減速箱:




評分

參與人數 1黑幣 +8 收起 理由
偶游QHD + 8 很給力!好想學。

查看全部評分

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

使用道具 舉報

沙發
ID:135550 發表于 2016-8-9 15:31 | 只看該作者
很給力,太贊了樓主
回復

使用道具 舉報

板凳
ID:116662 發表于 2016-8-24 20:12 | 只看該作者
經典學習貼,謝謝分享
回復

使用道具 舉報

地板
ID:79544 發表于 2016-8-25 12:20 | 只看該作者
樓主弄個視頻教程就好了直觀明白。
回復

使用道具 舉報

5#
ID:74784 發表于 2016-8-26 19:15 | 只看該作者
請教樓主:
有一種泥頭小車是4個輪子的
前邊2只負責轉向
后面2只輪子由一個電機帶動做驅動(帶差速器)

我的問題是:
如果不用差速器
后面2個輪子各自又一個電機帶動做驅動
那么當前進中小車轉向時
有啥辦法改變后2個驅動電機的速度?
以便小車在轉向時不會翻車?
謝謝!
回復

使用道具 舉報

6#
ID:110225 發表于 2016-9-7 16:27 | 只看該作者
樓主,第四步怎么嵌入啊?不會寫啊
回復

使用道具 舉報

7#
ID:146651 發表于 2016-11-7 17:25 | 只看該作者
很多商業機器人產品都能實現pid調速,不過那是有現成的程序實現的,樓主的經驗很值得我學習,收藏起來慢慢消化了。
回復

使用道具 舉報

8#
ID:140296 發表于 2017-3-10 15:54 | 只看該作者
在那,沒看到程序
回復

使用道具 舉報

9#
ID:218187 發表于 2017-7-11 14:13 | 只看該作者
請問這是什么仿真軟件
回復

使用道具 舉報

10#
ID:218187 發表于 2017-7-11 14:14 | 只看該作者
請問這是什么仿真軟件
回復

使用道具 舉報

11#
ID:110278 發表于 2017-7-23 16:03 | 只看該作者
感謝分享。。。。。
回復

使用道具 舉報

12#
ID:221806 發表于 2017-7-23 17:18 | 只看該作者
PID 信息
回復

使用道具 舉報

13#
ID:198293 發表于 2017-7-25 23:18 來自觸屏版 | 只看該作者
我用pd可以比較穩定的控制一個輪子,但是兩個輪子就不行了,我用的是同一個pid算法,請問這可能是什么原因,會不會是需要用兩個不同的pid算法
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看一区 | 午夜a√ | 欧美视频网| 嫩草黄色影院 | 欧美日韩大片 | 国产精品久久久久久婷婷天堂 | 久久久久国产一级毛片高清网站 | av在线影院 | 国产精品美女在线观看 | 青娱乐国产 | 欧日韩在线 | 久久精品国产v日韩v亚洲 | 国产成人精品a视频 | 久草免费在线视频 | 久久九九免费 | 久久中文字幕一区 | 久久青| 国内精品视频在线观看 | 天天操天天拍 | 91婷婷韩国欧美一区二区 | 亚洲天堂影院 | 日本精品久久 | 99re在线 | 国产a区 | 一区二区三区国产 | 日韩在线免费视频 | 欧美一区二区三区在线播放 | 国产黄色在线 | 成人免费看片 | 日日操夜夜摸 | 蜜桃日韩 | 鲁一鲁资源影视 | 亚洲欧美精品在线观看 | 深爱激情综合 | 在线观看亚 | 91精品国产91久久久久久三级 | 男人电影天堂 | 精品国产一区二区三区成人影院 | 国产大片黄色 | 日韩在线资源 | 91精品国产高清久久久久久久久 |