久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    教你10分鐘完成智能小車的PID調速

     InfoRich 2022-08-07 發布于重慶

    簡介

    本次采用Simulink工具鏈完成,小車的所有代碼均基于Simulink Target Support Package完成。

    Image

    所需要的硬件&軟件

    1.普通帶編碼器的直流電機。
    2.Arduino Due控制板及數據線(類似dSPACE MAB進行RCP開發,但是性能完全沒有可比性,開個玩笑)。
    3.Matlab&Simulink R2019b (民間通用版本即可)。
    4.電腦一臺。

    前期準備工作

    (1)安裝Arduino硬件支持包

    這并不是本文的重點,網上有許多這方面的教程,包括MATLAB錄制的研討會均有類似的視頻教程。有意的同學可以自行查閱相關資料,十分簡單。如下類似教程:

    https://blog.csdn.net/u013732401/article/details/70161200

    (2)Simulink模型

    新建Simulink Model,并且打開Library Browser。找到Simulink Supprot Package for Arduino Hardware

    Image

    按照下圖搭建模型。其中Tachometer模塊在硬件支持包中的Sensor模塊里(2019b有,低版本2018a并沒有,需要自己通過編碼器脈沖的上升沿或者下降沿捕獲進行)具體通過高低電平進行捕獲的模型在硬件支持包中的DrivePID例程中的Encoder子模塊中有搭建。

    Image

    可以看到,Tachometer輸出量并不是help中講的RPM,而是脈沖/每分鐘。

    Tachometer模塊中設置的即是編碼器的單個信號線連接的PIN口(這里用一根信號線就無法測量方向了,請注意編碼器信號線是5V電壓,本次使用的單片機IO最高容忍3.3V,需要初中知識進行分壓電路的搭建,如果使用其他芯片,請查詢數據手冊該IO口的最高容忍電壓),采樣時間設置0.05即可。

    由于我智能小車輪子轉一圈采集390個脈沖,輪子直徑64毫米。所以簡單計算即可得到輪速轉一圈行駛的距離,單位m/s。

    后面經過了一個一階低通濾波器,這個在網上可以找到關于一階低通濾波的公式,然后進行搭建,這里就不是贅述了。

    接下來進行驅動模塊的搭建,關于L298N驅動模塊的使用,這里我使用一路電機進行調試,29和27PIN腳設置成高電平和低電平,PIN2設置為ENA。在Arduino 支持包中,PWM模塊輸入值0-255對應0-100%占空比,PWM頻率在Due中驅動模塊固定1KHz。

    Image

    Step階躍信號目的在于仿真時間2s時進行階躍輸入,占空比改變至100,我們需要做的就是進行數據記錄,記錄本次仿真的時間,輸入和輸出。

    如何記錄呢,那么我們需要在相應的信號線上右鍵選擇Log Selected Signals。我們需要對Step輸出線,低通濾波后的速度進行Datalog。

    最后設置Arduino外部仿真調試環境。

    Image
    Image

    在Set COM port端口中可以手動輸入您的硬件串口號如果在上傳程序失敗的時候。接下來進行在線調試,類似keil軟件中的debug模式。

    在2019b以下版本的同學點擊仿真按鈕旁邊的下拉菜單選擇External模式即可。

    我在使用2018a版本無法進行數據datalog,可以通過串口進行數據傳輸,具體請查閱相關資料。

    Image

    點擊按鈕開始離線仿真,模型會編譯成代碼刷寫進硬件。

    前期準備工作完成,相信無論用基于模型設計的方式還是手動寫代碼的方式,完成以上工作都不會難。

    接下來就進入本次教程的正題。

    正題

    數據導出到Workspace

    如圖所示,點擊Data Inspector

    Image
    Image

    分別將左側數據拖入進對應的框圖即可查看數據記錄效果,如果您已經有小車并且已經進行開環PWM測速,您需要關注以下的每一步。

    只要您有相應的PWM和速度值都可以使用以下方法進行PID調速,不僅限于使用Aruduino類似的快速原型開發。

    如圖所示,右鍵數據,進行導出,導出至Workspace即可。

    Image
    Image

    同樣的方式將兩組數據全部導出,分別是PWM和Speed。

    返回Matlab主界面,您會看在工作空間看到如下圖所示。

    Image

    使用代碼即可將數據解析出來,如下圖所示。

    Image

    再看工作空間內容,即可得到我們熟悉的數據類型。

    系統辨識

    我們通過輸入和輸出基于Matlab的System Identification工具箱即可辨識出小車驅動的傳遞函數,從而進行PID整定。具體方法如下。

    打開系統辨識工具箱。


    Image

    將時域數據導入。


    Image

    Image

    導入后,點擊導入后的曲線,然后點擊Time Plot即可查看曲線。

    Image

    然后如圖選擇系統估計的模式。

    Image

    您可以根據您的需要選擇辨識的傳遞函數結構,這里我選擇二階振蕩模型。

    Image

    然后點擊Estimate,稍等片刻,可以在工具箱主界面查看我們的辨識結果,高亮辨識后的曲線,點擊Model Output,即可查看辨識曲線

    我辨識出來后的重合度達到98.2,效果還是可觀的。

    Image

    這一步的最后,右鍵上面的辨識曲線,即出現需要的傳遞函數參數了。

    Image

    離線仿真

    得到系統的傳遞函數,那當然是十分愉悅的事情,在學習控制理論的時候總是先給出系統模型,但是在實際項目中模型是需要辨識的,這就是課本和實際的差距。

    我們得到參數后即可在Simulink環境進行仿真環境的搭建了,將上圖的參數輸入至Transfer Fcn模塊中。

    在進行仿真前,因為進行的是連續系統仿真,所以將仿真時間改成變步長。看一下仿真效果和實際輸出基本一致。

    Image

    因為需要PID控制,那么我們可以添加PID控制器模塊進行模型的搭建,搭建完如下圖所示。

    簡單仿真一下,沒有更改PID模塊的任何參數,所以結果很差。

    Image

    這時我們需要打開PID模塊,點擊Tune按鈕,請求Matlab幫助我們進行自整定!

    隨后自動打開PID Tune的App。

    Image

    似乎已經幫您完成了整定功能,您只需要調整Robust to Aggressive橫條去看系統的響應,選擇您喜歡的位置,然后點擊Updata Block參數會更新至您的控制器。

    Image
    Image

    此時您發下PID模塊的參數已經被更改了,那么調整模型,在Step模塊設置您期望速度,例如我需要小車行駛速度為1m/s。

    點擊仿真看看效果。

    Image

    控制器離散化

    是不是借助Maltab/Simulink環境很簡單就完成了PID的整定了,有同學會問,這有啥用,我需要跑進板子里啊,別急,我們現在研究的是S域,計算機控制器是離散系統,我們需要把控制器從S域轉換到Z域去。

    步驟如下圖所示:

    2019b用戶如下圖找到該App,2019b之前的用戶在Analysis->Control Design->Model Disretizer找到即可。

    Image

    您可以選擇0階保持或者1階保持進行離散化,采樣時間我個人設置0.05s。

    然后點擊s->z按鈕,最后Store Setting。

    Image
    Image

    回到模型,您可以看見算法和模型都從S域變成Z域了。

    在Solver中將采樣時間改成定步長,采樣時間設置成0.05,再次進行仿真。

    很不幸模型輸出已經振蕩!這時您需要重復上述步驟再次在PID tune中進行整定。這里我就不重復步驟,直接給整定后的仿真效果。

    Image

    這是最后自整定的PID參數。

    Image

    實車效果

    仿真效果可以接受,這個時候我們就完成了PID離散控制器的設計了,接下來就需要刷寫到板子里。

    重新改變模型如下圖所示。

    替換傳遞函數模型,也可以進行對比。

    將實車速度替換掉傳遞函數的反饋值。點擊外部模式仿真,看一下實車效果如何。

    Image

    經過模型自動生成代碼刷寫到控制器后,實車測試和仿真結果圖有如下對比,在超調量上有些區別,但是實際控制器中超調更小。

    最后都趨于平穩。藍色是仿真結果,紫色是實際控制器效果。

    總結

    仿真可以節省我們太多時間,如果您使用STM32,S12K進行手工代碼開發,可以通過串口進行數據采集導入Excel,然后導入到Matlab進行模型的系統辨識,將PID控制器生成原子子系統,進行編寫數據字典,管理輸入輸出信號和參數(非常重要),再使用Embedded Coder生成代碼,在中斷服務函數中調用生成的代碼函數,基于模型設計的方法可以加快控制器的開發。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 日本福利一区二区精品| 亚洲精品日韩中文字幕| 国产福利深夜在线观看| 午夜成年男人免费网站| 亚洲AV中文无码乱人伦| 国产精品麻豆中文字幕| 久久精品国产亚洲精品2020| 在线观看免费人成视频播放| 欧美巨大极度另类| 国产乱子伦一区二区三区| 最新国产AV最新国产在钱| 人人妻人人澡人人爽欧美一区| 亚洲人成电影网站 久久影视| 精品国产午夜肉伦伦影院 | 精品国产迷系列在线观看| 日韩国产精品无码一区二区三区| 国产一区二区三区av在线无码观看| 麻豆成人传媒一区二区| 国产精品成人午夜久久| 国产午夜无码视频在线观看| 午夜国产精品福利一二| 亚洲乱码日产精品一二三| 成人看的污污超级黄网站免费| 再深点灬舒服灬太大了少妇| 久久综合亚洲鲁鲁九月天| 四虎国产精品永久在线下载| 伊人久久精品无码麻豆一区| 开心一区二区三区激情| 在线观看国产成人无码| 国产精品久久久久免费观看| 小嫩批日出水无码视频免费| 久久久这里只有免费精品| 无遮挡免费高清羞羞视频| 亚洲欧洲精品日韩av| 亚洲精品午睡沙发系列| 欧美交A欧美精品喷水| 国产在线午夜不卡精品影院| 久久婷婷国产综合精品| 无码人妻一区二区三区免费N鬼沢| 国色天香成人一区二区 | 蜜芽久久人人超碰爱香蕉|