女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教你10分鐘完成智能小車的PID調(diào)速

大魚機器人 ? 來源:古月居 ? 2023-05-09 17:19 ? 次閱讀

01前言

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

c41a4348-e840-11ed-ab56-dac502259ad0.jpg

02所需要的硬件&軟件

1.普通帶編碼器的直流電機

2.Arduino Due控制板及數(shù)據(jù)線(類似dSPACE MAB進行RCP開發(fā),但是性能完全沒有可比性,開個玩笑)。

3.Matlab&Simulink R2019b (民間通用版本即可)。

4.電腦一臺。

03前期準備工作

(1)安裝Arduino硬件支持包

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

(2)Simulink模型

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

c42dd598-e840-11ed-ab56-dac502259ad0.png

按照下圖搭建模型。 其中Tachometer模塊在硬件支持包中的Sensor模塊里(2019b有,低版本2018a并沒有。

需要自己通過編碼器脈沖的上升沿或者下降沿捕獲進行)具體通過高低電平進行捕獲的模型在硬件支持包中的DrivePID例程中的Encoder子模塊中有搭建。

c43a6d9e-e840-11ed-ab56-dac502259ad0.png

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

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

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

后面經(jīng)過了一個一階低通濾波器,這個在網(wǎng)上可以找到關(guān)于一階低通濾波的公式,然后進行搭建,這里就不是贅述了。

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

c447d3b2-e840-11ed-ab56-dac502259ad0.png

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

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

最后設(shè)置Arduino外部仿真調(diào)試環(huán)境。

c453e422-e840-11ed-ab56-dac502259ad0.png

c46258f4-e840-11ed-ab56-dac502259ad0.png

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

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

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

c46b88d4-e840-11ed-ab56-dac502259ad0.png

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

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

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

04正題

數(shù)據(jù)導(dǎo)出到Workspace

如圖所示,點擊Data Inspector

c47ac72c-e840-11ed-ab56-dac502259ad0.png

c48a5692-e840-11ed-ab56-dac502259ad0.png

分別將左側(cè)數(shù)據(jù)拖入進對應(yīng)的框圖即可查看數(shù)據(jù)記錄效果,如果您已經(jīng)有小車并且已經(jīng)進行開環(huán)PWM測速,您需要關(guān)注以下的每一步。

只要您有相應(yīng)的PWM和速度值都可以使用以下方法進行PID調(diào)速,不僅限于使用Aruduino類似的快速原型開發(fā)。

如圖所示,右鍵數(shù)據(jù),進行導(dǎo)出,導(dǎo)出至Workspace即可。

c495abc8-e840-11ed-ab56-dac502259ad0.png

c49de568-e840-11ed-ab56-dac502259ad0.png

同樣的方式將兩組數(shù)據(jù)全部導(dǎo)出,分別是PWM和Speed。

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

c4a6e488-e840-11ed-ab56-dac502259ad0.png

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

c4b0c6ba-e840-11ed-ab56-dac502259ad0.png

再看工作空間內(nèi)容,即可得到我們熟悉的數(shù)據(jù)類型。

系統(tǒng)辨識

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

打開系統(tǒng)辨識工具箱。

c4bdb596-e840-11ed-ab56-dac502259ad0.png

將時域數(shù)據(jù)導(dǎo)入。

c4c70178-e840-11ed-ab56-dac502259ad0.png

c4d2a29e-e840-11ed-ab56-dac502259ad0.png

導(dǎo)入后,點擊導(dǎo)入后的曲線,然后點擊Time Plot即可查看曲線。

c4df8360-e840-11ed-ab56-dac502259ad0.png

然后如圖選擇系統(tǒng)估計的模式。

c4e87a6a-e840-11ed-ab56-dac502259ad0.png

您可以根據(jù)您的需要選擇辨識的傳遞函數(shù)結(jié)構(gòu),這里我選擇二階振蕩模型。

c4fdf2c8-e840-11ed-ab56-dac502259ad0.png

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

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

c506ad64-e840-11ed-ab56-dac502259ad0.png

這一步的最后,右鍵上面的辨識曲線,即出現(xiàn)需要的傳遞函數(shù)參數(shù)了。

c5155d50-e840-11ed-ab56-dac502259ad0.png

離線仿真

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

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

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

c52051e2-e840-11ed-ab56-dac502259ad0.png

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

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

c530f16e-e840-11ed-ab56-dac502259ad0.png

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

隨后自動打開PID Tune的App。

c53ecb72-e840-11ed-ab56-dac502259ad0.png

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

c54873e8-e840-11ed-ab56-dac502259ad0.png

c555b378-e840-11ed-ab56-dac502259ad0.png

此時您發(fā)下PID模塊的參數(shù)已經(jīng)被更改了,那么調(diào)整模型,在Step模塊設(shè)置您期望速度,例如我需要小車行駛速度為1m/s。

點擊仿真看看效果。

c55f0b62-e840-11ed-ab56-dac502259ad0.png

控制器離散化

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

步驟如下圖所示:

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

c56bdfe0-e840-11ed-ab56-dac502259ad0.png

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

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

c5796af2-e840-11ed-ab56-dac502259ad0.png

c583dde8-e840-11ed-ab56-dac502259ad0.png

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

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

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

c58e591c-e840-11ed-ab56-dac502259ad0.png

這是最后自整定的PID參數(shù)。

c59fac30-e840-11ed-ab56-dac502259ad0.png

實車效果

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

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

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

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

c5aa0acc-e840-11ed-ab56-dac502259ad0.png

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

最后都趨于平穩(wěn)。 藍色是仿真結(jié)果,紫色是實際控制器效果。

05總結(jié)

仿真可以節(jié)省我們太多時間,如果您使用STM32,S12K進行手工代碼開發(fā),可以通過串口進行數(shù)據(jù)采集導(dǎo)入Excel,然后導(dǎo)入到Matlab進行模型的系統(tǒng)辨識,將PID控制器生成原子子系統(tǒng),進行編寫數(shù)據(jù)字典

管理輸入輸出信號和參數(shù)(非常重要),再使用Embedded Coder生成代碼,在中斷服務(wù)函數(shù)中調(diào)用生成的代碼函數(shù),基于模型設(shè)計的方法可以加快控制器的開發(fā)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 直流電機
    +關(guān)注

    關(guān)注

    36

    文章

    1732

    瀏覽量

    71356
  • PID
    PID
    +關(guān)注

    關(guān)注

    37

    文章

    1479

    瀏覽量

    87270
  • Simulink
    +關(guān)注

    關(guān)注

    22

    文章

    539

    瀏覽量

    63595
  • 智能小車
    +關(guān)注

    關(guān)注

    87

    文章

    553

    瀏覽量

    82233
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6489

    瀏覽量

    190029

原文標題:教你10分鐘完成智能小車的PID調(diào)速。

文章出處:【微信號:All_best_xiaolong,微信公眾號:大魚機器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    第13章-循跡功能 STM32智能小車循跡教程 PID循跡算法分析

    第13章-循跡功能 循跡小車講解 原理分析 STM32智能小車循跡教程 紅外對管使用 PID循跡算法分析V3:HAL庫開發(fā)、功能:PID速度
    的頭像 發(fā)表于 08-21 16:27 ?3509次閱讀
    第13章-循跡功能 STM32<b class='flag-5'>智能</b><b class='flag-5'>小車</b>循跡教程 <b class='flag-5'>PID</b>循跡算法分析

    PWM的調(diào)速原理與應(yīng)用—智能小車調(diào)速

    PWM的調(diào)速原理與應(yīng)用—小車調(diào)速17-1.PWM調(diào)速基本原理17-2.P89V51RD2的PWM功能模塊結(jié)構(gòu)與應(yīng)用17-3.智能
    發(fā)表于 03-29 10:10

    10分鐘完成一個USB驅(qū)動程序

    10分鐘完成一個USB驅(qū)動程序
    發(fā)表于 08-02 17:26

    智能小車PWM調(diào)速及仿真

    剛剛寫的小車調(diào)速 分享給大家看看 仿真已經(jīng)通過 用按鍵可以仿真轉(zhuǎn)向信息
    發(fā)表于 04-10 18:24

    智能小車PWM調(diào)速

    想請教一下智能小車PWM調(diào)速的知識,有木有熱心給解答一下
    發(fā)表于 05-01 08:49

    5分鐘教你學會PID

    PID算法在各種自動控制場合都有著非常重要的地位,但學習起來卻并不容易,這篇教程把PID講解的非常透徹,是學習PID難得的資料
    發(fā)表于 06-19 10:03

    智能小車PID調(diào)速簡介

    教你10分鐘完成智能小車PID
    發(fā)表于 09-07 07:17

    Arduino小車PID調(diào)速

    Arduino小車PID調(diào)速——整定參數(shù)初試水在實現(xiàn)了小車較為可靠的測速基礎(chǔ)上,便可以正式開展PID調(diào)速
    發(fā)表于 09-07 09:21

    如何對基于STM32的尋跡小車進行PID調(diào)速

    怎樣去設(shè)計一種基于STM32的尋跡小車呢?如何對基于STM32的尋跡小車進行PID調(diào)速呢?
    發(fā)表于 11-18 07:23

    PWM的調(diào)速原理與應(yīng)用—小車調(diào)速

    17-1.  PWM調(diào)速基本原理17-2.  P89V51RD2的PWM功能模塊結(jié)構(gòu)與應(yīng)用17-3.  智能小車電機調(diào)速案例分析  17-4.&
    發(fā)表于 03-23 12:18 ?130次下載

    PWM調(diào)速+循跡__智能小車程序

    PWM調(diào)速+循跡__智能小車程序
    發(fā)表于 02-07 17:14 ?135次下載

    使用MSP432E401Y單片機設(shè)計智能小車PID調(diào)速功能的代碼免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用MSP432E401Y單片機設(shè)計智能小車PID調(diào)速功能的代碼免費下載。
    發(fā)表于 07-11 17:40 ?39次下載
    使用MSP432E401Y單片機設(shè)計<b class='flag-5'>智能</b><b class='flag-5'>小車</b><b class='flag-5'>PID</b><b class='flag-5'>調(diào)速</b>功能的代碼免費下載

    基于51單片機智能小車PID調(diào)速勻速

    基于51單片機智能小車PID調(diào)速勻速
    發(fā)表于 11-12 14:36 ?44次下載
    基于51單片機<b class='flag-5'>智能</b><b class='flag-5'>小車</b><b class='flag-5'>PID</b><b class='flag-5'>調(diào)速</b>勻速

    PID智能小車入門(位置式和增量式)

    PID智能小車入門(位置式和增量式)PID的公式今年大二,以一個新人的角度來說一下PID及其用法,新人第一次寫,有不對的請各位指正。手動狗
    發(fā)表于 01-14 11:22 ?17次下載
    <b class='flag-5'>PID</b>:<b class='flag-5'>智能</b><b class='flag-5'>小車</b>入門(位置式和增量式)

    2分鐘快速教你如何在華為模擬器ensp上進行抓包?

    2分鐘快速教你如何在華為模擬器ensp上進行抓包?
    的頭像 發(fā)表于 12-05 11:25 ?5062次閱讀