STM32控制启动步进电机
概述
正在做的項(xiàng)目需要用STM32控制步進(jìn)電機(jī),本篇主要講解利用STM32定時(shí)器外設(shè)輸出脈沖來(lái)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。
STM32定時(shí)器
使用STM32芯片類(lèi)型:STM32c8t6。
使用外設(shè)接口:選用TIM4的CH1通道,對(duì)應(yīng)輸出脈沖IO口為PB6。
步進(jìn)驅(qū)動(dòng)器介紹
(這里以兩相步進(jìn)驅(qū)動(dòng)器為例,詳細(xì)見(jiàn)說(shuō)明書(shū))
- 接口
步進(jìn)驅(qū)動(dòng)器可分為兩部分:環(huán)形分配器、功率放大器。
環(huán)形分配器:接收3種信號(hào)分別為:脈沖信號(hào)(PUL),方向信號(hào)(DIR),脫機(jī)信號(hào)(ENA)。
脈沖信號(hào):環(huán)形分配器對(duì)脈沖信號(hào)進(jìn)行分配,去控制功率放大器相應(yīng)的晶體管,使步進(jìn)電機(jī)的線圈得電。所以,步進(jìn)電機(jī)要運(yùn)轉(zhuǎn)就必須有脈沖輸入,所以需要一個(gè)驅(qū)動(dòng)器來(lái)給步進(jìn)電機(jī)的各項(xiàng)繞組依次通電。
方向信號(hào):控制AB通電的相序,A-B順時(shí)針,B-A逆時(shí)針
脫機(jī)信號(hào):步進(jìn)電機(jī)停止時(shí),AB線圈有一相得電,得電的功能使轉(zhuǎn)子鎖住,使轉(zhuǎn)子不能動(dòng),需要收去撥動(dòng)轉(zhuǎn)子的時(shí)候,需要給脫機(jī)信號(hào),使AB相繞組完全斷電,轉(zhuǎn)子處于自由轉(zhuǎn)動(dòng)狀態(tài)。(也就是說(shuō)控制電機(jī)停止除了不給脈沖之外,還可以控制脫機(jī)信號(hào)來(lái)鎖死電機(jī),此處用不著脫機(jī)信號(hào))
- 細(xì)分
為了提高步進(jìn)電動(dòng)機(jī)控制的精度,現(xiàn)在的步進(jìn)驅(qū)動(dòng)器都有細(xì)分的功能,所謂細(xì)分,就是通過(guò)驅(qū)動(dòng)器中電路的方法把步距角減小。比如把步進(jìn)驅(qū)動(dòng)器設(shè)置成5細(xì)分,假設(shè)原來(lái)步距角1.8°那么設(shè)成5細(xì)分后,步距角就是0.36°。也就是說(shuō)原來(lái)一步可以走完的,設(shè)置成細(xì)分后需要走5步。一般步進(jìn)電動(dòng)機(jī)的細(xì)分表在驅(qū)動(dòng)器上可以直接看到。(設(shè)置合適細(xì)分能夠避免電機(jī)轉(zhuǎn)動(dòng)時(shí)震動(dòng)過(guò)大,但過(guò)高的細(xì)分?jǐn)?shù)會(huì)導(dǎo)致電機(jī)輸出力矩減小)
- 驅(qū)動(dòng)電源:
需要9-42V直流電源,需要使用變壓器將220V交流電轉(zhuǎn)為24V直流電
定時(shí)器頻率與步進(jìn)電機(jī)的關(guān)系
-
接線
將驅(qū)動(dòng)器PUL+端接入STM32輸出脈沖的IO口(PB6),PUL-端接地
將驅(qū)動(dòng)器DIR+端接入STM32的任意一個(gè)閑置IO口(這里選PB5),DIR-端接地
驅(qū)動(dòng)器ENA±端不接
A+、A-、B+、B-接入步進(jìn)電機(jī)
電源接到變壓器 -
頻率與速度的關(guān)系
確定輸出脈沖頻率與電機(jī)轉(zhuǎn)速的關(guān)系,對(duì)于兩相步進(jìn)電機(jī)而言:
轉(zhuǎn)速 = 脈沖頻率 * 60 /((360/T)*x) T是步進(jìn)電機(jī)步距角(1.8°),x是驅(qū)動(dòng)器細(xì)分倍數(shù)(16) 脈沖頻率= 時(shí)鐘頻率(72Mhz)/ ((arr+1)*(psc+1))根據(jù)以上公式,可以得到:
Speed = 15r/min時(shí),若確定arr為199,則psc為449
其他速度可根據(jù)需要自行設(shè)定。
代碼
編寫(xiě)流程:TIM4配置 -> DIR對(duì)應(yīng)IO口配置 -> main調(diào)用初始化函數(shù)并設(shè)置占空比
//TIM4配置 void TIM4_PWM_Init(u16 arr,u16 psc) //初始化arr=200,psc = 450得到電機(jī)速度為15r/min { //初始化結(jié)構(gòu)體NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//使能時(shí)鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //設(shè)置該引腳為復(fù)用輸出功能,輸出TIM4 CH1的PWM脈沖波形 GPIOB.6GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM4_CH1GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);//計(jì)數(shù)模式TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //定時(shí)中斷配置TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); /NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //初始化TIM4 Channel1 PWM模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC1Init(TIM4, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_Cmd(TIM4,ENABLE); //使能定時(shí)器 } /*PB5電機(jī)方向引腳配置*/ void DIR_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } int main() {DIR_Init();TIM4_PWM_Init(200,450);TIM_SetCompare1(TIM4,200/2); //設(shè)置占空比為50%(=arr/2),不設(shè)置的話電機(jī)啟動(dòng)不了while(){;} }對(duì)應(yīng)工程文件:
CSDN:STM32c8t6啟動(dòng)步進(jìn)電機(jī)
GitHub: STM32-drives-step-motor
總結(jié)
以上是生活随笔為你收集整理的STM32控制启动步进电机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通达信波段王指标公式主图_通达信波段操盘
- 下一篇: win8 磁贴