資源描述:
《三相直流無刷電機(jī)驅(qū)動程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、WORD格式可編輯1.檢測霍爾傳感器的值可以判斷出轉(zhuǎn)子的位置,再使能相應(yīng)的上下橋臂,則能驅(qū)動電機(jī)運(yùn)動;若要讓電機(jī)持續(xù)轉(zhuǎn)動,則必須再次檢測傳感器值及使能相應(yīng)的上下橋臂。這里采用的是將霍爾傳感器輸出的三根線相邊的IO口配置成外部中斷,并且為邊沿觸發(fā),在中斷函數(shù)中加入傳感器檢測與上下橋臂切換程序,如此電機(jī)就能持續(xù)運(yùn)轉(zhuǎn)了。2.上橋臂的控制采用IO口置高低電平來控制上橋臂的通斷,下橋臂則使用單片機(jī)內(nèi)部集成的三路PWM波來控制,通過控制PWM波的占空比,可以實(shí)現(xiàn)對電機(jī)的調(diào)速了。實(shí)際測得,占空比與電機(jī)的速度成正比例關(guān)系,在PWM波頻率為20KHz時,占空比增加1%,
2、速度增加60rpm,并在占空比為53%時達(dá)到額定轉(zhuǎn)速3000rpm(空載)。3.速度測量則采用如下公式:電機(jī)每轉(zhuǎn)一圈,霍爾值改變6次x5個周期=30次,記錄邊沿觸發(fā)的中斷次數(shù)N/30=電機(jī)轉(zhuǎn)過的圈數(shù),設(shè)運(yùn)轉(zhuǎn)時間為t(s)則電機(jī)轉(zhuǎn)速v=N/30/t*60rpm。即動轉(zhuǎn)時間為2s時,霍爾值改變次數(shù)即為速度值,單位rpm。4.調(diào)速:給定速度,由電機(jī)驅(qū)動板自動由當(dāng)前速度平滑過渡到給定速度。實(shí)際測試發(fā)現(xiàn),速度變化量很大時,電機(jī)會有突然加速或減速時的沖擊;因此,調(diào)速應(yīng)有一個緩沖的過程。即加速或減速應(yīng)以小步進(jìn)緩慢增加或減少占空比來讓速度漸漸達(dá)到最終值。#includ
3、e"stm32f10x.h"#include"driver_motor.h"#definePWM_PERIOD_T400#defineU_Up_OnGPIOB->BSRR=GPIO_Pin_13#defineU_Up_OffGPIOB->BRR=GPIO_Pin_13#defineU_Dn_OnGPIOA->BSRR=GPIO_Pin_8#defineU_Dn_OffGPIOA->BRR=GPIO_Pin_8#defineV_Up_OnGPIOB->BSRR=GPIO_Pin_14#defineV_Up_OffGPIOB->BRR=GPIO_Pin_1
4、4#defineV_Dn_OnGPIOA->BSRR=GPIO_Pin_9#defineV_Dn_OffGPIOA->BRR=GPIO_Pin_9#defineW_Up_OnGPIOB->BSRR=GPIO_Pin_15#defineW_Up_OffGPIOB->BRR=GPIO_Pin_15#defineW_Dn_OnGPIOA->BSRR=GPIO_Pin_10#defineW_Dn_OffGPIOA->BRR=GPIO_Pin_10#defineSU_HORGPIOA->IDR&GPIO_Pin_15#defineSV_HORGPIOA->IDR
5、&GPIO_Pin_12#defineSW_HORGPIOA->IDR&GPIO_Pin_11//u8Motor_Dir=0;//u8Motor_EN=0;專業(yè)知識整理分享WORD格式可編輯//u8Hor_Value=7;//u16TIM2_Conter=0;u16Hall_Conter=0;MotorStructMotor={CLOCK,40,STOP};/********************************************************************************函數(shù):voidIO_Init(voi
6、d)*描述:IO*參數(shù):*返回:*其它:*******************************************************************************/voidIO_Init(void){GPIO_InitTypeDefGPIO_InitStruct;EXTI_InitTypeDefEXTI_InitStructure;//GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);/*使能SWD禁用JTAG*//*********************
7、*LEDLight***********/GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);/***********************霍爾傳感器中斷**********/GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11
8、GPIO_Pin_12
9、GPIO_Pin_1
10、5;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATI