日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

倒立摆系统说明

發(fā)布時(shí)間:2023/12/20 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 倒立摆系统说明 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

控制對(duì)象:旋轉(zhuǎn)倒立擺 控制器:XS128

關(guān)于控制對(duì)象的基本說明

控制目標(biāo)

  • 擺桿從初始時(shí)刻能夠自己起振到最高位置,并在最高位置保持不動(dòng)或者在很小范圍內(nèi)運(yùn)動(dòng)
  • 擺桿受到外部干擾(硬幣或手等的敲打使其偏離豎直向上的位置)時(shí)可以自動(dòng)恢復(fù)到目標(biāo)位置

控制對(duì)象基本參數(shù)以及控制方式的選取

  • 電機(jī)PWM控制頻率
    • 10KHz
    • 理由
      • 頻率特別小時(shí),電機(jī)雖然死區(qū)比較小,但是電機(jī)特性比較硬,很小的占空比即可以產(chǎn)生較大的速度,而且速度調(diào)節(jié)精度很難控制(給調(diào)節(jié)參數(shù)帶來困難)。
      • 頻率小時(shí),電機(jī)有可能工作在電流斷續(xù)狀態(tài),對(duì)點(diǎn)擊有害,而且電機(jī)產(chǎn)生的噪聲比較大
  • 控制周期
    • 0.5ms
      • 將控制系統(tǒng)分為2事件,事件1進(jìn)行速度控制(外環(huán)),事件2進(jìn)行角度控制(內(nèi)環(huán)),外環(huán)控制周期為100ms,內(nèi)環(huán)控制周期為1ms;事件2中進(jìn)行電機(jī)PWM的輸出。故相當(dāng)于每1ms輸出1次PWM波
    • 理由
      • 控制周期太小,系統(tǒng)震蕩;控制周期太大,系統(tǒng)反應(yīng)不及時(shí)
      • 此處的控制周期是參考學(xué)長(zhǎng)的控制周期
  • 2級(jí)PID的選取
    • 角度環(huán)
      • 位置式PID
    • 速度環(huán)
      • 增量式PID
      • 速度環(huán)的輸出作為角度環(huán)的輸入,而在此時(shí)角度環(huán)的初始設(shè)定值為250,因此如果用位置式的PID算法,得到的角度還需要進(jìn)行處理(在靜止不動(dòng)時(shí)輸出為250)才能賦值給角度環(huán)的輸入
  • 起振

    • 在擺桿豎直向下時(shí),當(dāng)擺角小于某一角度值時(shí),輸出固定占空比的PWM波,當(dāng)擺角大于某一值時(shí),電機(jī)
    • 擺動(dòng)過程中判斷擺桿的方向,使得無論擺桿無論在哪個(gè)方向上擺動(dòng),電機(jī)的轉(zhuǎn)動(dòng)方向都會(huì)使它繼續(xù)沿著那個(gè)方向加速擺動(dòng)

      • 實(shí)現(xiàn)方法:同時(shí)判斷擺桿角度和運(yùn)動(dòng)方向,再進(jìn)行控制
      • 代碼

        if( (PID4Pend.GetVal < LimA) || ( PID4Pend.GetVal >= ( 500 - LimA ) ) ) {OutDuty = 1200;if(PendDir==1) dir=2;else dir=1; } if( (PID4Pend.GetVal < (500 - LimA)) && (PID4Pend.GetVal > 260 )) {OutDuty = 0; } if( (PID4Pend.GetVal > LimA) && (PID4Pend.GetVal < 240 )) {OutDuty = 0; } SetMotorVoltage( OutDuty , dir );
  • 編碼器讀取的方式

    • 外部中斷
    • 注意事項(xiàng)
      • 在初始化時(shí)刻將外部中斷優(yōu)先級(jí)設(shè)置為最高
      • 在進(jìn)入串口中斷或者定時(shí)中斷時(shí),均需要再次調(diào)用EnableInterrupts使能中斷
      • 因?yàn)閿[桿在擺動(dòng)的時(shí)候會(huì)產(chǎn)生零偏,即編碼器的值會(huì)逐漸偏離原點(diǎn)(振動(dòng)產(chǎn)生,對(duì)應(yīng)此處的250);解決辦法:用Z進(jìn)行復(fù)位,記錄Z相脈沖低電平時(shí)對(duì)應(yīng)的脈沖個(gè)數(shù),每次Z相外部中斷觸發(fā)時(shí),直接改變脈沖計(jì)數(shù)的值。
      • 編碼器需要A、B、Z相需要加上拉電阻,可以通過軟件配置上拉電阻即可。
  • 速度環(huán)的輸出方式

    • 斜坡輸出

      • 目前采用的是這種方式,將得到的輸出量按照斜坡的方式繼續(xù)擰輸出
    • 階躍輸出

      • 還沒有嘗試

調(diào)試過程中遇到的問題

  • 電機(jī)死區(qū)的處理

    • 計(jì)算輸出占空比小于死區(qū)占空比時(shí),電機(jī)不轉(zhuǎn)動(dòng)
      • 目前采用的是這種方法
    • 電機(jī)輸出占空比小于死區(qū)占空比時(shí),電機(jī)按照最小速度運(yùn)動(dòng)
    • 將計(jì)算得到的占空比得到輸出占空比按照一次函數(shù)關(guān)系進(jìn)行輸出,如OutDuty = 0.94 * OutDuty + 0.06,其中0.06是電機(jī)死區(qū)對(duì)應(yīng)的占空比
  • 關(guān)于系統(tǒng)動(dòng)態(tài)與穩(wěn)態(tài)的協(xié)調(diào)問題

    • 問題說明:采用PI控制時(shí),擺桿由自由下垂能夠自動(dòng)擺到豎直向上的位置,并保持運(yùn)動(dòng)在90度的范圍內(nèi)(一般在45度范圍內(nèi)),說明系統(tǒng)的穩(wěn)態(tài)性能達(dá)到要求,此時(shí)如果用外力使擺桿發(fā)生抖動(dòng),抖動(dòng)較小時(shí),擺桿可以回到穩(wěn)態(tài),但是如果比較大的時(shí)候,就不能回到穩(wěn)態(tài),比如施加干擾使其超過PID的控制角度范圍;采用PD控制時(shí),擺桿可以自起振,同時(shí)受到外界干擾可以比較好地恢復(fù),但是它不能保持在90度的范圍內(nèi),而是沿著某個(gè)方向緩慢旋轉(zhuǎn),即動(dòng)他性能達(dá)到要求,而穩(wěn)態(tài)性能不符合要求。
    • 解決辦法:在擺桿處于PID的控制模式時(shí),采用PI控制,滿足系統(tǒng)的穩(wěn)態(tài)指標(biāo),處于啟動(dòng)模式時(shí)(即偏離豎直向上的角度大于某個(gè)值),采用PD控制,滿足系統(tǒng)的動(dòng)態(tài)要求。

一些管腳定義

串口

  • PS0 -> RXD0
  • PS1 -> TXD0

L298N驅(qū)動(dòng)

  • IN1 -> PB1
  • IN2 -> PB0
  • ENA-> PP1

編碼器

  • 擺桿編碼器
    • A相(黑線) :PA0(GPIO讀取方向)
    • B相(白線) :PH0(外部中斷讀取脈沖)
    • Z相(橙線) :PH1(外部中斷清零操作)
    • 藍(lán)線:GND
    • 棕線:VCC(5V~12V)
  • 旋轉(zhuǎn)電機(jī)編碼器
    • 1、2 :可以不接
    • pin3 :VCC通過100歐姆的電阻(限流)和該管腳連接
    • pin4 :PA1(GPIO讀取方向)
    • pin5 :PH2(外部中斷讀取脈沖)
    • pin6 :GND

關(guān)于編程方法的一些說明

  • 在.c文件里定義,在對(duì)應(yīng)的.h文件中用extern聲明
  • 如果要引用該變量,可以在.h文件中#include一下,或者用extern int value

總結(jié)

以上是生活随笔為你收集整理的倒立摆系统说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。