|
我是學(xué)自動(dòng)化控制的,因?yàn)槎贾赖脑颍瑳]法回到學(xué)校,我們這個(gè)學(xué)期學(xué)習(xí)過程控制,各種各樣的pid控制算法(單回路、串級(jí)、前饋、分程等等),非常想去實(shí)驗(yàn)室親手操作體驗(yàn)他們的控制效果。 剛好老師布置了一個(gè)單容自衡水箱的實(shí)驗(yàn),其實(shí)要說完成這個(gè)實(shí)驗(yàn)非常簡(jiǎn)單,你只需要一個(gè)塑料水瓶和一個(gè)水龍頭就好了。但是我想借此機(jī)會(huì)做一個(gè)除了完成任務(wù)也可以練習(xí)各種控制算法的裝置,以加深我對(duì)各種控制的理解。
一開始我選用的是水壓原理的液位傳感器,但是它的測(cè)量誤差可以達(dá)到5cm,但是對(duì)于我的40cm水箱(酒盒)來說誤差比例太大了。最后經(jīng)過考慮我選用浮板加超聲波傳感器的方法。正好手里有一塊us100超聲波傳感器,看資料說他自帶看門狗、溫度補(bǔ)償?shù)群芎玫墓δ堋N矣脠D中的材料做出來這樣一個(gè)雙容水箱的模型。哈哈,是不是很丑。水泵那個(gè)寶8塊錢買的,當(dāng)時(shí)怕壞我買了兩個(gè),現(xiàn)在看來用這兩個(gè)電機(jī)可以完成分程控制的實(shí)驗(yàn)了,哈哈。大水箱用一個(gè)水桶就可以了。水管是內(nèi)徑8mm的,好像是2元一米。開關(guān)是1元一個(gè),轉(zhuǎn)換頭2元一個(gè)。換買了一個(gè)4分孔的電鉆打孔器好像是3元,還有一些膠帶,防水膠,螺絲等小東西。
控制器我選擇stm32f103zet6,因?yàn)槭掷镎糜羞@個(gè)和其下載器。我打算把液位用波形的形式展現(xiàn)出來,這樣好觀察控制效果。因?yàn)橹白鲋悄苘嚕{(diào)d車的陀螺儀和加速度計(jì)的卡爾曼濾波用的就是這個(gè)方法,輕車熟路還是那個(gè)模擬示波器(師哥寫的),還是那個(gè)協(xié)議。就很快移植完成了(從k60到32)。然后就是讀取us100超聲波傳感器的數(shù)據(jù)了,因?yàn)樗С执谕ㄓ崳砸埠茌p松。給他發(fā)個(gè)字符0x58(好像是,具體見其手冊(cè))。成品做完以后,當(dāng)天下午調(diào)了一下簡(jiǎn)單pid與積分分離式pid,后者比前者要好很多。當(dāng)我的水位離目標(biāo)水位太遠(yuǎn)時(shí),前者的積分會(huì)積很多的誤差,導(dǎo)致系統(tǒng)的超調(diào)特別大,而且到達(dá)平穩(wěn)的時(shí)間很長(zhǎng)。后者積分分離式,把積分調(diào)節(jié)靜態(tài)誤差的能力發(fā)揮到了極致,很棒。
當(dāng)然這個(gè)東西缺點(diǎn)超級(jí)多,也算給大家個(gè)參考吧!加油,努力過好每一天。
第一次寫怎么多的文字,哈哈,獻(xiàn)給親切的51論壇。
e53b4521ba878b34f834f36eb263db9.jpg (133.09 KB, 下載次數(shù): 55)
下載附件
材料展示
2020-6-8 17:58 上傳
e23d9db4ea31c053946bdceaf5b919e.png (901.31 KB, 下載次數(shù): 55)
下載附件
完成!
2020-6-8 18:00 上傳
e52b07ab1876e498c537d048d1df57f.png (122.88 KB, 下載次數(shù): 68)
下載附件
2020-6-8 18:02 上傳
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
-
- int main(void)
- {
- u16 led0pwmval=0;
- u8 dir=1;
- delay_init(); //延時(shí)函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uart_init(115200); //串口初始化為115200
- uart2_init();
- LED_Init(); //LED端口初始化
- TIM2_Int_Init(999,7199);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到100為100ms
- TIM3_PWM_Init(899,0); //不分頻。PWM頻率=72000000/900=80Khz
-
- while(1)
- {
- // delay_ms(10);
- // if(dir)led0pwmval++;
- // else led0pwmval--;
- // if(led0pwmval>900)dir=0;
- // if(led0pwmval==0)dir=1;
- //
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
pi調(diào)節(jié)水位.7z
(189.14 KB, 下載次數(shù): 67)
2020-6-8 22:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
exe文件:
虛擬示波器v0.1.3.zip
(4.22 MB, 下載次數(shù): 48)
2020-6-8 18:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|