(失敗)實(shí)驗(yàn)3:ardunio 最簡(jiǎn)單的PID實(shí)驗(yàn)

? ? ? ? PID是控制領(lǐng)域的最常見方法,入門必備。在看了關(guān)于PID的相關(guān)教程后,想在ardunio上實(shí)踐一下,鑒于手頭的元器件不多,而且掌握的知識(shí)也不多,因此我開始想怎么才能做一個(gè)最簡(jiǎn)單的PID實(shí)驗(yàn)。在第一節(jié)實(shí)驗(yàn)中學(xué)習(xí)了最簡(jiǎn)單的PWM操作,那這次就做一個(gè)跟PWM相關(guān)的吧。

? ? ? ?實(shí)驗(yàn)大體思路:PWM占空比控制輸出電壓。固定占空比的PWM波通過一階的RC電路濾波后,輸出電壓波形會(huì)從方波轉(zhuǎn)化為接近直線的恒壓波形。其中電壓的大小與占空比成相近的線性關(guān)系。那么下面給出PID的方框圖,來分析一下這個(gè)實(shí)驗(yàn)中的輸入、偏差、輸出、被控量都是什么。

PID控制器方框圖

? ? ? PID屬于閉環(huán)控制,閉環(huán)控制區(qū)別于開環(huán)控制的最顯著的區(qū)別就是反饋的引入,那我們就從反饋入手,在這個(gè)實(shí)驗(yàn)里反饋就是電路最終輸出的電壓值,也就是我們想要控制的那個(gè)值。與之相對(duì)應(yīng)我們想要得到的電壓的那個(gè)值(設(shè)定值),就是PID的輸入了,輸入與反饋的差是偏差值,偏差值經(jīng)過PID控制器計(jì)算后得到一個(gè)輸出值,我們需要通過這個(gè)輸出值來控制電路來產(chǎn)生我們需要的電壓,這個(gè)電路里唯一可以控制的就是PWM的占空比,而且占空比與電壓大致呈線性關(guān)系,因此PID控制器的輸出就是占空比了。?

? ? 下一步我們需要搭建電路了,在搭建電路之前我們需要一些簡(jiǎn)單的電路分析,ardunio的針腳的PWM輸出的電壓0V-5V,那么作為反饋引入計(jì)算時(shí),需要用ardunio測(cè)量輸出電壓,ardunio有15個(gè)模擬量輸入口,默認(rèn)可以測(cè)量0-5V電壓,每個(gè)口的最大通過電流值是40mA。電壓值這里可以不用擔(dān)心了,因?yàn)檩敵鲎畲蟛攀?V,那么需要考慮電流值,5V/40mA=125Ω,那么當(dāng)電路中存在125歐姆時(shí),就不會(huì)燒ardunio了。下面我們?cè)诳碦C濾波電路的設(shè)計(jì),RC電路上是一個(gè)低通濾波器,根據(jù)電路知識(shí)可知道RC的頻率一般取值是PWM頻率的1/10,我們假設(shè)還采用實(shí)驗(yàn)2中2分頻PWM波,那么pwm的頻率是,16Mhz/256/2=31.25Khz,那么RC電路頻率為3125hz,即f=1/(2π*RC)=3125.那么RC=0.00005093,如果我們電阻選擇200Ω的話,C=0.0000002546f=0.2546μf,我手頭上正好有0.1μf的104瓷片電容,那么我把電阻增加到500Ω,C=0.1018μf。這時(shí)我從淘寶上買到了一包500Ω的電阻,

編程之前簡(jiǎn)單構(gòu)思一下:setup()中完成計(jì)時(shí)器的設(shè)置,com端口的設(shè)置。LOOP()中等待接收com口發(fā)來的電壓值,如果電壓值在正常范圍內(nèi)則交給PID進(jìn)行運(yùn)算,這時(shí)候?qū)?shí)際電壓值通過com口輸出到ide中。


經(jīng)過實(shí)際驗(yàn)證。。。完全不可行,經(jīng)過RC電路后電壓依舊身份不穩(wěn)定,即使不用PID控制,波峰與波谷電壓依舊相差很大,而且跳躍的頻率是大于PID控制的執(zhí)行周期,因此并不可行,實(shí)驗(yàn)失敗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容