優(yōu)化直流電機(jī)控制方案,實(shí)現(xiàn)精確旋轉(zhuǎn)
近期在進(jìn)行一個(gè)小項(xiàng)目時(shí),需要控制直流電機(jī)旋轉(zhuǎn)指定角度,而手頭上只有帶編碼器的直流電機(jī)。下面分享一下如何通過(guò)控制直流電機(jī)旋轉(zhuǎn)來(lái)實(shí)現(xiàn)精確角度控制。 準(zhǔn)備工作:選擇合適的編碼器要控制直流電機(jī)旋轉(zhuǎn)指定角度,關(guān)
近期在進(jìn)行一個(gè)小項(xiàng)目時(shí),需要控制直流電機(jī)旋轉(zhuǎn)指定角度,而手頭上只有帶編碼器的直流電機(jī)。下面分享一下如何通過(guò)控制直流電機(jī)旋轉(zhuǎn)來(lái)實(shí)現(xiàn)精確角度控制。
準(zhǔn)備工作:選擇合適的編碼器
要控制直流電機(jī)旋轉(zhuǎn)指定角度,關(guān)鍵是選用帶編碼器的直流電機(jī),以便單片機(jī)可以通過(guò)編碼器讀取脈沖,并將計(jì)數(shù)作為反饋信息。建議使用正交編碼器,我個(gè)人采用的是帶編碼器的蝸輪蝸桿減速電機(jī)。
編程準(zhǔn)備:配置STM32定時(shí)器
在開(kāi)始編程前,我選擇使用stm32f103rct6作為主控芯片。該芯片的定時(shí)器具有讀取正交編碼器脈沖的功能,只需要簡(jiǎn)單的配置即可。重點(diǎn)在于設(shè)置雙邊沿計(jì)數(shù),確保一個(gè)脈沖記兩次數(shù)。這對(duì)于正交編碼器的雙通道結(jié)構(gòu)尤為重要。
脈沖計(jì)數(shù)與轉(zhuǎn)動(dòng)角度的關(guān)系
在程序設(shè)計(jì)中,我將脈沖計(jì)數(shù)保存在TIM3->CNT寄存器中。同時(shí),需要了解直流電機(jī)轉(zhuǎn)動(dòng)一圈所產(chǎn)生的脈沖數(shù),以便進(jìn)行角度與脈沖計(jì)數(shù)值的轉(zhuǎn)換。我的電機(jī)每轉(zhuǎn)一圈會(huì)產(chǎn)生11個(gè)脈沖,因此轉(zhuǎn)動(dòng)特定角度所需的脈沖數(shù)為:angle/360*11。
考慮減速比的影響
考慮到蝸輪蝸桿減速器的存在,我們還需要將減速比考慮在內(nèi)。以我的減速比為564為例,期望旋轉(zhuǎn)的角度對(duì)應(yīng)的脈沖數(shù)需乘以這一減速比,即:angle/360*11*564。
實(shí)現(xiàn)精確控制:旋轉(zhuǎn)電機(jī)至目標(biāo)角度
最后一步,我們可以給電機(jī)施加速度,讓其旋轉(zhuǎn)至目標(biāo)角度。根據(jù)旋轉(zhuǎn)方向,TIM3->CNT會(huì)相應(yīng)增加或減小??梢岳枚〞r(shí)器中斷或者while循環(huán),判斷期望脈沖數(shù)與實(shí)際脈沖數(shù)之間的差值,設(shè)定一個(gè)容錯(cuò)范圍。當(dāng)達(dá)到設(shè)定范圍后,停止電機(jī)旋轉(zhuǎn)即可實(shí)現(xiàn)精確控制。
通過(guò)以上步驟,我們可以優(yōu)化直流電機(jī)的控制方案,實(shí)現(xiàn)精準(zhǔn)的角度控制。這對(duì)于需要精確旋轉(zhuǎn)的項(xiàng)目來(lái)說(shuō),將大有裨益。