聚豐項目 > 基于AB32VG1的隔震測試臺設計
采用AB32VG1開發板通過PID算法實現隔震測試臺的反饋控制器設計。首先通過開發板上的10位ADC,將隔振臺上的震動速度傳感器上的速度模擬信號進行采樣,然后經過主程序PID算法計算反饋控制電壓,計算結果再經PWM輸出,濾波后控制音圈電機驅動隔振臺,驅動力與震動速度方向相反,以達到隔振的目的。
meibin2016
分享meibin2016
團隊成員
梅斌 博士生
硬件上主要采用AB32VG1開發板,還需要額外的電路和硬件配合:1、光學平臺和支架及懸掛系統;2、Guralp微震儀;3、信號放大電路;4、濾波和壓流轉換電路;5、音圈電機。
軟件開發環境采用RT-Thread Studio2.1.3,設備驅動有:GPIO/ADC/PWM 等。
軟件流程圖如下:
ADC和PWM根據例程稍作修改就可以用了,PID控制算法要根據單片機PID常用算法來編寫。
PID反饋控制采用增量式單片機常用算法。PID算法,大家應該比較熟悉,它在很多地方都有應用,如電機速度控制,恒溫箱溫度控制,四軸飛行器平衡控制等。作為閉環控制系統重要的一種算法,得到了廣泛的應用。
PID算法由比例P,積分I,微分D三部分組成。所謂比例部分,就是與輸入殘差呈線性關系的部分,此值大,控制反應的速度就快,但快到控制目標時,如果還這么快,那就容易控制過頭超過預設值,所以還需要積分部分和微分部分,使最終控制結果逼近目標。
用C語言來實現PID算法,主要是時域上來實現,有位置式和增量式兩種:
位置式:
比例部分: Kp:比例系數 SetValue:預設值 FactValue:當前實際值 Error_1:當前誤差
則比例部分為: Sp = Kp*(SetValue - FactValue)
或者 Sp = Kp*Error_1
注解:Sp大小反應需要控制的量大小,比如Sp越大,功率越大。當Sp為負值時,表示要超過預設值,如果是電機,則需要反轉
積分部分: Ki:積分系數 Error_1:當前誤差 Error_2:上一次誤差 Error_3:上上一次誤差 ........Error_n:開始時的誤差
則積分部分為: Si = Ki*(Error_1+Error_2+Error_3+......+Error_n)
注解:因為整個是一個過程,所以上一次誤差其實就是上一次的當前誤差
微分部分: Kd:微分系數 Error_1:當前誤差 Error_2:上一次誤差
則微分部分為: Sd = Kd*(Error_1-Error_2)
綜上部分的PID得:PID=Sp + Si + Sd = Kp*Error_1 + Ki*(Error_1+Error_2+Error_3+......+Error_n) + Kd*(Error_1-Error_2)
增量式:
將上述推導的PID記作時間為k時刻的PID控制量,則
PID(k) =Sp + Si + Sd = Kp*Error_1(k) + Ki*(Error_1(k)+Error_2(k-1)+Error_3(k-2)+......+Error_n(0)) + Kd*(Error_1(k)-Error_2(k-1))
將上式k=k-1代入得:
PID(k-1) =Sp + Si + Sd = Kp*Error_1(k-1) + Ki*(Error_1(k-1)+Error_2(k-2)+Error_3(k-3)+......+Error_n(0)) + Kd*(Error_1(k-1)-Error_2(k-2))
1-2得:
PID(k) - PID(k-1) = Kp*(Error_1(k)-Error_1(k-1)) + Ki*(Error_1(k)) + Kd*(Error_1(k)-2*Error_2(k-1)+Error_2(k-2))
將PID(k) - PID(k-1)記作detPID
detPID = Kp*(Error_1(k)-Error_1(k-1)) + Ki*(Error_1(k)) + Kd*(Error_1(k)-2*Error_2(k-1)+Error_2(k-2))
這樣就得到了增量式的PID算法,其計算的結果為增加的控制量
增量式的PID有個好處就是只與當前三個誤差量有關系,與其他無關,這樣就簡化的處理過程,而且提高了精度。
參考文獻:單片機之PID算法 - LSWen - 博客園 (cnblogs.com) 作者: LSWen
程序的輸入是ADC采樣的隔振臺運動速度,輸出是控制隔振臺反向運動的控制力。
編譯成功的固件,用Downloader v1.9.7下載到芯片。
程序運行邏輯圖如下:
軟件模塊由主程序和ADC、PWM、PID組成。
調試時串口打印輸出的情況:
地面振動經過“四線擺”被動隔振懸掛系統后濾除了幾赫茲以上的高頻振動,隔振臺上的殘余振動經懸掛的光學平臺上擺放的微震儀(震動速度傳感器)轉換為速度電壓模擬信號,通過放大電路盒后變成適合數字采集的電壓,通過開發板上的10位ADC進行采樣,然后經過主程序PID算法計算反饋控制電壓,計算結果再經PWM輸出,在電路板上濾波后控制音圈電機驅動隔振臺,驅動力與震動速度方向相反,以達到隔振的目的。
代碼地址:
https://gitee.com/meibiny/rtt-seismic-isolation
(6.79 MB)下載