1 步進(jìn)電機(jī)驅(qū)動(dòng)原理
使用步進(jìn)電機(jī)之前,我們需要了解步距角的概念:步進(jìn)電機(jī)接收到一個(gè)脈沖轉(zhuǎn)動(dòng)的角度,步進(jìn)電機(jī)步距角通常
為1.8°,即步進(jìn)電機(jī)接收到一個(gè)脈沖轉(zhuǎn)動(dòng)1.8°,則若步進(jìn)電機(jī)接收到360°/1.8°=200個(gè)脈沖,步進(jìn)電機(jī)就能轉(zhuǎn)動(dòng)一圈
步進(jìn)電機(jī)通過(guò)驅(qū)動(dòng)器控制,驅(qū)動(dòng)器如下圖所示(都比較相似)
驅(qū)動(dòng)器側(cè)面有撥碼開(kāi)關(guān),根據(jù)圖中1、2部分可以修改驅(qū)動(dòng)器細(xì)分?jǐn)?shù)和電流大小
細(xì)分?jǐn)?shù):類(lèi)似于將步進(jìn)電機(jī)的分辨率擴(kuò)大,若將SW1設(shè)置為ON、SW2設(shè)置為OFF、SW3設(shè)置為OFF、SW4設(shè)置為OFF,即將驅(qū)動(dòng)器細(xì)分?jǐn)?shù)設(shè)置為2后,此時(shí)步進(jìn)電機(jī)的分辨率擴(kuò)大為200*2=400,即步進(jìn)電機(jī)接收到400個(gè)脈沖才能轉(zhuǎn)動(dòng)一整圈,一個(gè)脈沖只能轉(zhuǎn)動(dòng)0.9°
圖中4處與步進(jìn)電機(jī)相連,連接順序步進(jìn)電機(jī)上面一般會(huì)標(biāo)明,通常為黑線接A+、綠線接A-、紅線接B+、藍(lán)線接B-
圖中3處為控制信號(hào)接口,分為共陰接線法、共陽(yáng)接線法
上圖為購(gòu)物網(wǎng)站提供的資料
共陽(yáng)極接法:分別將PUL+,DIR+,EN+連接到控制系統(tǒng)的電源上, 如果此電源是+5V 則可直接接入,如果此電源大于+5V,則須外部另加限流電阻R,PUL-接脈沖引腳、DIR-接方向引腳、ENA-接使能引腳
共陰極接法:分別將 PUL-,DIR-,EN-連接到控制系統(tǒng)的地端,PUL+接脈沖引腳、DIR+接方向引腳、ENA+接使能引腳
2 程序快速配置
本文以共陽(yáng)接線法為例,用一個(gè)引腳A來(lái)連接ENA-,引腳B來(lái)連接DIR-,引腳A的高低電平輸出就能控制電機(jī)使能與否,引腳B的高低電平輸出控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn),本文重點(diǎn)講解如何利用CubeMX快速實(shí)現(xiàn)PWM輸出固定數(shù)目個(gè)脈沖數(shù),從而實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的精確控制
本文以f407igt6為例,打開(kāi)CubeMX選擇完芯片后首先進(jìn)行SYS、RCC配置,具體配置其他文章均詳細(xì)描述過(guò),此處不再贅述
選擇定時(shí)器8的通道1,輸出模式為PWM(在2處如果找不到圖示選項(xiàng),就轉(zhuǎn)動(dòng)鼠標(biāo)輪,當(dāng)初作者也在此處繞了很多彎),然后設(shè)置分頻系數(shù)(不同定時(shí)器最高頻率可能不同)和計(jì)數(shù)周期,
最后別忘記設(shè)置占空比,否則輸出的脈沖全為高電平或者低電平
最后打開(kāi)定時(shí)器更新中斷
設(shè)置時(shí)鐘頻率
設(shè)置項(xiàng)目名稱以及生成項(xiàng)目格式MDK
將c文件單獨(dú)放置于一文件夾,最后生成并打開(kāi)項(xiàng)目加入如下代碼(記得在USER CODE BEGIN-END之間添加,防止重新生成代碼時(shí)將內(nèi)容覆蓋了)
函數(shù)void PWM_Output(uint32_t pwm_num)即為輸出脈沖的函數(shù),參數(shù)pwm_num為需要輸出脈沖個(gè)數(shù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-741627.html
uint32_t Pulse_Cnt=0;
uint32_t Pulse_exp_Cnt=0;
void PWM_Output(uint32_t pwm_num)
{
/*開(kāi)啟定時(shí)器更新中斷*/
HAL_TIM_Base_Start_IT(&htim8);
/*開(kāi)始輸出PWM*/
HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1);
Pulse_exp_Cnt=pwm_num;
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
/*每輸出一個(gè)脈沖進(jìn)入一次中斷,Pulse_Cnt用于計(jì)數(shù)已經(jīng)產(chǎn)生的脈沖個(gè)數(shù)*/
/*Pulse_exp_Cnt為需要產(chǎn)生的脈沖個(gè)數(shù)*/
/*當(dāng)Pulse_Cnt與Pulse_exp_Cnt為相等時(shí),表示已經(jīng)產(chǎn)生了預(yù)期數(shù)目的脈沖數(shù),從而停止PWM輸出*/
if(htim==(&htim8))
{
Pulse_Cnt++;
if(Pulse_Cnt==Pulse_exp_Cnt)
{
HAL_TIM_Base_Stop_IT(&htim8);
HAL_TIM_PWM_Stop(&htim8,TIM_CHANNEL_1);
Pulse_Cnt=0;
}
}
}
3 注意事項(xiàng)
電機(jī)轉(zhuǎn)動(dòng)的角度通過(guò)控制輸出脈沖個(gè)數(shù)來(lái)控制,電機(jī)轉(zhuǎn)速通過(guò)控制輸出的脈沖頻率來(lái)控制
脈沖頻率越高、電機(jī)轉(zhuǎn)速越快,其輸出扭矩越低
脈沖頻率越低、電機(jī)轉(zhuǎn)速越慢,其輸出扭矩越大
脈沖過(guò)高、過(guò)低都有可能無(wú)法驅(qū)動(dòng)電機(jī);若電機(jī)只發(fā)出聲音不轉(zhuǎn)動(dòng),極有可能是脈沖頻率設(shè)置不合理,則需要重新設(shè)置分頻系數(shù)、重裝載值,最后別忘了設(shè)置占空比!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-741627.html
到了這里,關(guān)于步進(jìn)電機(jī)簡(jiǎn)單使用:STM32 PWM輸出固定數(shù)目的脈沖數(shù)(基于CubeMX)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!