1.序言
半年沒(méi)寫過(guò)博客了,不過(guò)這對(duì)于我的博客來(lái)說(shuō)似乎是常態(tài)?這半年來(lái)忙著做畢業(yè)論文,沒(méi)弄什么自己的研究,而實(shí)驗(yàn)室的東西實(shí)在是不好泄露出來(lái),所以我也是“雖欲言無(wú)可進(jìn)者”了。
上星期趁著論文提交的空擋,把一直拖著的一個(gè)小項(xiàng)目開(kāi)了個(gè)頭,其實(shí)是朋友有個(gè)外快小項(xiàng)目要做,具體內(nèi)容不說(shuō),項(xiàng)目的基礎(chǔ)是XY平臺(tái)的視覺(jué)控制,因此在前期研究中主要要做平臺(tái)選型、控制購(gòu)買、接線研究、模擬實(shí)驗(yàn)等工作,這里記述下來(lái)以防忘記,順便也給其他人做個(gè)參考。
本次控制通過(guò)相機(jī)采集圖像,以此為反饋信號(hào)做控制,使平臺(tái)上的某個(gè)點(diǎn)位移到指定的位置。然后本文寫得更像隨筆形式,內(nèi)容可能有點(diǎn)雜亂,見(jiàn)諒了。
2.平臺(tái)選型與硬件接線
2.1 XY平臺(tái)選型
項(xiàng)目中需要做到精度較高的位移控制,且承重要求3kg以上,因此XY平臺(tái)選型時(shí)主要考慮步進(jìn)電機(jī)的XY平臺(tái),淘寶上一搜就是一大片。
從中挑選了一臺(tái)二手日本平臺(tái),由于價(jià)錢便宜店家不提供技術(shù)支持,接線什么的得自己搞。
2.2 步進(jìn)電機(jī)驅(qū)動(dòng)
步進(jìn)電機(jī)驅(qū)動(dòng)不需要購(gòu)買,我手上有一塊前輩留下來(lái)的,正好可以用,同樣沒(méi)有任何資料。從其電路板上發(fā)現(xiàn)驅(qū)動(dòng)芯片是TA8435H,于是查到其引腳功能表。

根據(jù)這個(gè)功能表可以確定驅(qū)動(dòng)上幾個(gè)引腳的功能,并用一個(gè)四相步進(jìn)電機(jī)測(cè)試,發(fā)現(xiàn)驅(qū)動(dòng)板功能完好。
在電機(jī)供電上,考慮到要驅(qū)動(dòng)兩臺(tái)步進(jìn)電機(jī),并獲得足夠的驅(qū)動(dòng)力,因此我試用了一個(gè)12V 4.5A的開(kāi)關(guān)電源。
2.3采集卡
為了使計(jì)算機(jī)能夠控制電機(jī)驅(qū)動(dòng),這里還需要一個(gè)電腦IO卡,我用的依然是以前留下來(lái)mc100 USB Card,方便好用還便宜,淘寶上一搜一大把。這個(gè)東西IO口波紋比較大,而且沒(méi)做好隔離容易燒,不過(guò)既然是實(shí)驗(yàn)用,那就將就一下了,實(shí)際產(chǎn)品中是肯定不能用這個(gè)的。

2.4平臺(tái)接線
平臺(tái)到貨后檢查發(fā)現(xiàn)電機(jī)型號(hào)查不到,只知道是三洋1.5A的步進(jìn)電機(jī),沒(méi)辦法只好電機(jī)的線給撥了,用物理方法來(lái)測(cè)極性。撥開(kāi)線后發(fā)現(xiàn)步進(jìn)電機(jī)是8相的,于是要測(cè)出四組通路,通過(guò)萬(wàn)用表測(cè)通,發(fā)現(xiàn)相通的幾根線是這樣的:
紅-綠
藍(lán)-白
黃-棕
黑-灰
為了測(cè)出四組線的相性,需要進(jìn)行多次接線測(cè)試,并匯總結(jié)果得到下表(只保留了幾組數(shù)據(jù),實(shí)際中我為了完全確認(rèn)相性,各種接線組合都測(cè)了):

根據(jù)這個(gè)表,可以確定最終的接線方法,此處使用的是并聯(lián)接法,連線如下表。

8相步進(jìn)電機(jī)還有另外一種串聯(lián)接法如下圖:

2.5硬件組裝結(jié)果
最后把兩個(gè)電機(jī)都接到步進(jìn)電機(jī)驅(qū)動(dòng)上,USB采集卡插好,XY平臺(tái)鎖死,相機(jī)固定。
得到了個(gè)凌亂的實(shí)驗(yàn)現(xiàn)場(chǎng),圖中上面那坨黑的是工業(yè)相機(jī)。
3.平臺(tái)控制算法
控制這一塊我已經(jīng)丟了差不多三年了,現(xiàn)在再撿起來(lái)發(fā)現(xiàn)PID都不會(huì)寫了,再加上步進(jìn)電機(jī)的控制我也沒(méi)做過(guò),總之是不好弄啊。
首先極力回憶一下本科時(shí)微機(jī)原理課程設(shè)計(jì)里做步進(jìn)電機(jī)控制那題是什么做控制的,想起有兩種控制方式,一是控制步進(jìn)電機(jī)的步長(zhǎng),二是控制其步數(shù)。那么這里既然要控制的是位移量,那么控制步數(shù)應(yīng)該是比較好的選擇。但對(duì)步進(jìn)電機(jī)來(lái)說(shuō),每秒走1000步幾乎已經(jīng)是極限了,再快的話電機(jī)扭矩會(huì)不夠,而1000步轉(zhuǎn)換到XY平臺(tái)上實(shí)際也就位移了1cm,所以當(dāng)位移量較大時(shí),控制的滯后環(huán)節(jié)可能會(huì)較大。但走幾步就再控制一下也不現(xiàn)實(shí),畢竟相機(jī)的采樣時(shí)間擺在那,幾步就采樣控制一下那么控制花費(fèi)的時(shí)間可能會(huì)較長(zhǎng)……
想來(lái)想去也沒(méi)想到一個(gè)最佳的控制方案,總之先用PID控制試試看。
于是搜索增量式PID公式,花十幾分鐘把C++版本的PID控制器寫出來(lái):
然后設(shè)計(jì)控制周期為100ms,死區(qū)5個(gè)像素,胡亂設(shè)置一下PID參數(shù),只做x方向的平臺(tái)控制。結(jié)果…好嘛,不管怎么樣調(diào)試系統(tǒng)震蕩都很嚴(yán)重,大概是這樣子的:

最后我實(shí)在是懶得整定PID參數(shù)了,于是重新設(shè)計(jì)控制算法。
當(dāng)誤差大于50像素,用PD控制快速移動(dòng)平臺(tái)。
當(dāng)誤差在50像素以內(nèi)時(shí),根據(jù)事先做好的標(biāo)定[注1],查表獲得位移的步長(zhǎng)進(jìn)行一次移動(dòng)。
移動(dòng)完成后再次檢查還有多少誤差,以1的步長(zhǎng)慢慢消除該誤差。
[注1]這里目標(biāo)點(diǎn)的位置是固定的,因此可以實(shí)現(xiàn)進(jìn)行多次標(biāo)定,確定圖像上各個(gè)坐標(biāo)上的點(diǎn)要位移目標(biāo)點(diǎn)處需要走多少步,但考慮到相機(jī)畸變這個(gè)標(biāo)定是無(wú)法完全準(zhǔn)確的,因此為盡量減少畸變?cè)斐傻恼`差,位移的目標(biāo)點(diǎn)應(yīng)放在相機(jī)視野中心,且只做該點(diǎn)半徑50像素內(nèi)的點(diǎn)的位移步數(shù)標(biāo)定。
根據(jù)上述控制流程,能夠較為快速地完成控制,控制精度可在0.5像素以內(nèi),具體可以達(dá)到多少由于現(xiàn)在相機(jī)的安裝位置角度都沒(méi)定下來(lái),所以我暫時(shí)也沒(méi)仔細(xì)測(cè)了。
4.程序結(jié)構(gòu)設(shè)計(jì)
XY平臺(tái)涉及到X方向與Y方向的控制,兩個(gè)控制是相互獨(dú)立的,因此我采用了兩個(gè)線程對(duì)它們分別控制,下面是隨手亂畫的結(jié)構(gòu)圖:

程序運(yùn)行后開(kāi)辟三個(gè)線程,其中兩個(gè)分別負(fù)責(zé)驅(qū)動(dòng)兩臺(tái)電機(jī),主線程則負(fù)責(zé)計(jì)算控制量,該控制量也就是另外兩個(gè)控制線程的步數(shù)。
在架構(gòu)上尚未做設(shè)計(jì),但為了提高程序的可拓展性(畢竟實(shí)用化后相機(jī)、采集卡都得換),項(xiàng)目?jī)?nèi)的幾個(gè)操作類都通過(guò)基類設(shè)計(jì)好了統(tǒng)一的接口,以方便今后更換硬件。

5.圖像處理算法
這里圖像處理算法偷懶了,采用的是《相機(jī)位姿估計(jì)2:[應(yīng)用]實(shí)時(shí)位姿估計(jì)與三維重建相機(jī)姿態(tài)》中跟蹤紅點(diǎn)的方法,原理是差不多的,只是這里改成了追蹤黑點(diǎn)而已,就不詳細(xì)寫了。
實(shí)際項(xiàng)目里圖像算法當(dāng)然不會(huì)那么簡(jiǎn)單,不過(guò)這里目前還是一片空白,是下一步的工作重點(diǎn)了。
6.實(shí)驗(yàn)截圖
最后隨便給兩張程序運(yùn)行時(shí)的截圖,控制臺(tái)坐標(biāo)是當(dāng)前黑點(diǎn)坐標(biāo),控制目標(biāo)是[500,500],u1是x平臺(tái)的控制量,u2是y平臺(tái)的控制量。
運(yùn)行過(guò)程中
兩秒后完成位移,黑點(diǎn)被移動(dòng)到設(shè)定位置。
完成控制
-
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
153文章
3258瀏覽量
152521 -
反饋信號(hào)
+關(guān)注
關(guān)注
0文章
32瀏覽量
8459
發(fā)布評(píng)論請(qǐng)先 登錄
多功能步進(jìn)電機(jī)驅(qū)動(dòng)控制板設(shè)計(jì):適配多場(chǎng)景的集成化方案
為什么步進(jìn)電機(jī)的力矩會(huì)隨轉(zhuǎn)速的升高而下降
步進(jìn)電機(jī)發(fā)熱問(wèn)題及對(duì)策
告別選型困惑:直線模組驅(qū)動(dòng)電機(jī)的優(yōu)缺點(diǎn)與選型指南
步進(jìn)電機(jī)的控制原理
伺服電機(jī)和步進(jìn)電機(jī)的核心區(qū)別
基于MT6835磁編碼器IC的步進(jìn)電機(jī)全閉環(huán)伺服控制策略
高精度磁位置反饋:麥歌恩MT6835賦能閉環(huán)步進(jìn)電機(jī)性能躍升
單片機(jī)怎么控制步進(jìn)電機(jī)的
步進(jìn)電機(jī)和伺服電機(jī)的區(qū)別是什么?
步進(jìn)電機(jī)在高速運(yùn)行時(shí)反電動(dòng)勢(shì)波形與其動(dòng)態(tài)響應(yīng)變化
以反饋信號(hào)控制的步進(jìn)電機(jī)XY平臺(tái)選型
評(píng)論