找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1786|回復(fù): 4
收起左側(cè)

關(guān)于單片機(jī)PID驅(qū)動(dòng)步進(jìn)電機(jī)控制閥門的思路

[復(fù)制鏈接]
ID:997026 發(fā)表于 2023-1-3 16:30 | 顯示全部樓層 |閱讀模式
大家好,

我現(xiàn)在需要做一個(gè)產(chǎn)品,該產(chǎn)品主要用來穩(wěn)定氣體流量,也就是通過一個(gè)步進(jìn)電機(jī)來控制閥門開合,流量大了,就把閥門開小一點(diǎn),流量小了,就把閥門開達(dá)一點(diǎn),通過步進(jìn)電機(jī)不斷調(diào)節(jié)閥門開度來把氣體流量最終穩(wěn)定在某一個(gè)值。
這個(gè)閥門是自帶流量檢測傳感器的,可以實(shí)時(shí)測量從閥門流過的氣體流量。

比如我現(xiàn)在要把流量穩(wěn)定在10L/min,閥門傳感器檢測到當(dāng)前流量是5L/min,那么單片機(jī)需要控制步進(jìn)電機(jī)把閥門開大一點(diǎn),這里是閉環(huán)控制,10L是目標(biāo)值,5L是測量值,通過PID算法控制步進(jìn)電機(jī),進(jìn)而控制閥門開合。

這里有個(gè)問題,這種應(yīng)用場景,我理解是不是不需要計(jì)算步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角度了?也就是不需要計(jì)算步進(jìn)電機(jī)當(dāng)前在什么位置,然后轉(zhuǎn)動(dòng)多少位置了?所以也不需要編碼器之類的東西來記錄步進(jìn)電機(jī)位置了?不知道我的理解對(duì)不對(duì)?

因?yàn)槲业淖罱K被控對(duì)象是流量大小,當(dāng)單片機(jī)接收到設(shè)置流量與當(dāng)前流量的差值后,將差值反饋給單片機(jī)PID,PID根據(jù)這個(gè)差值計(jì)算出一個(gè)值,然后用這個(gè)值去控制步進(jìn)電機(jī)驅(qū)動(dòng)閥門轉(zhuǎn)過一定角度,所以這里要把這個(gè)流量誤差值轉(zhuǎn)換為對(duì)應(yīng)的閥門轉(zhuǎn)動(dòng)的角度值,這里不知道怎么對(duì)應(yīng)起來?

假設(shè)我的閥門的最大開度是720度(開度范圍0~720度),如果0開度對(duì)應(yīng)流量是0,720度開度對(duì)應(yīng)流量20L,此時(shí)PID計(jì)算后得到的增量值為X, 設(shè)閥門需要轉(zhuǎn)動(dòng)的角度為Y,那么20/720=X/Y,通過這個(gè)式子可以計(jì)算出Y的值,也就是步進(jìn)電機(jī)驅(qū)動(dòng)閥門轉(zhuǎn)動(dòng)的角度。不知道我的理解對(duì)不對(duì)?

所以總結(jié)下,
應(yīng)該全程都不需要記錄步進(jìn)電機(jī)的位置,只需要計(jì)算流量誤差值與閥門轉(zhuǎn)動(dòng)的角度的對(duì)應(yīng)關(guān)系就行了。
比如這次我把流量穩(wěn)定在10L,然后我關(guān)機(jī)了,然后再開機(jī),設(shè)置流量穩(wěn)定到15L,那么上一次電機(jī)和閥門應(yīng)該停在10L位置,這次設(shè)置到15L后,PID啟動(dòng),檢測到誤差值,PID會(huì)不斷調(diào)整電機(jī)位置然后讓其穩(wěn)定在15L。所以我理解是,不管什么應(yīng)用場景,我應(yīng)該都不需要管步進(jìn)電機(jī)的位置了,不知道這個(gè)理解對(duì)不對(duì)?

以前沒用PID算法,寫了大量代碼來檢測步進(jìn)電機(jī)的位置,也就是電機(jī)轉(zhuǎn)過多少角度對(duì)應(yīng)多少流量,這個(gè)對(duì)應(yīng)關(guān)系是死的。現(xiàn)在用了PID,我想了下,好像不需要檢測電機(jī)位置了,因?yàn)镻ID會(huì)根據(jù)測到的流量誤差來調(diào)整閥門開度,位置好像不重要了。剛開始做PID,理解不是很深入,希望給位前輩不吝賜教!
回復(fù)

使用道具 舉報(bào)

ID:891041 發(fā)表于 2023-1-3 17:10 | 顯示全部樓層
是 你把自己當(dāng)成PID。 你能看到反饋流量的話。  你就知道流量不夠該往哪個(gè)方向擰。 這個(gè)過程你并不需要知道絕對(duì)位置。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-1-3 17:19 | 顯示全部樓層
步進(jìn)電機(jī)本來就是個(gè)低成本方案,當(dāng)然不需要位置檢測,如果真的需要位置檢測,閉環(huán)控制,請(qǐng)換伺服電機(jī)。

當(dāng)然,步進(jìn)電機(jī)在系統(tǒng)里面往往還是要有個(gè)初始位置檢測,上電后先運(yùn)轉(zhuǎn)到初始位置,以后就完全靠開環(huán)控制,單片機(jī)或PLC等控制器內(nèi)部計(jì)算實(shí)際位置,并不檢測。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2023-1-3 20:42 | 顯示全部樓層
氣體通過閥門之后,要先有一個(gè)緩沖,其實(shí)就是一節(jié)大點(diǎn)的管子,然后再檢測.作用相當(dāng)于濾波
先看看整體有反應(yīng)速度,如果不是太慢的話,用PI控制就行了,很多時(shí)候沒有必要用PID的
步進(jìn)電機(jī)不需要檢測位置的,你只管控制就行了,流量大了就減小角度,流量小了就增加角度
PID控制代碼,來去就是那幾行,但更多的是實(shí)際參數(shù)的調(diào)節(jié)
回復(fù)

使用道具 舉報(bào)

ID:1060215 發(fā)表于 2023-1-4 11:00 | 顯示全部樓層
第一、其實(shí)這個(gè)并不一定要用PID控制  直接檢測流量然后調(diào)整步進(jìn)就行了。
第二、步進(jìn)電機(jī)也要有初始位置檢測或者最大位置檢測,另外步進(jìn)電機(jī)容易丟步,要考慮到丟步情況,最后,當(dāng)供氣故障或者氣流最大值小于設(shè)定值時(shí),若沒有最大位置檢測,會(huì)造成步進(jìn)或設(shè)備的損壞,建議加一個(gè)編碼器來增加穩(wěn)定性。
第三、有個(gè)東西叫比例閥,感覺比你這個(gè)步進(jìn)控制方式好一些,并且直接用電信號(hào)控制閥的開度,控制更簡單,可以發(fā)揮PID的優(yōu)勢。
第四、我去年做了一款相同的產(chǎn)品,有需要可以進(jìn)一步交流。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表