最近需要用到TB6600驅動57步進電機,在網上找了一些資源后,決定把自己編程中遇到的問題和一些經驗分享出來,讓新學的朋友少走彎路;
TB6600和57步進電機具體就不介紹了,話不多說,下面開始
IQF4J`7E(DII_N4PWAS9RCI.jpg.png (378.02 KB, 下載次數: 25)
下載附件
2022-7-10 17:23 上傳
首先是硬件連接: VCC接電源VCC GND接電源與單片機GND(單片機與電源和驅動器要共地)
ENA- DIR- PUL-接TB6600驅動器GND
ENA+接單片機3.3V或5V
DIR+接單片機PC0
PUL+接單片機PB0
電機A+ A- B+ B-與驅動器A+ A- B+ B-相連接
定時器PWM,電機初始化代碼如下:
//////////////////////////////////////////////////////////////////////////////////
電機初始化
void Drive_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//普通輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50M
GPIO_Init(GPIOC, &GPIO_InitStructure);
// GPIO_ResetBits(GPIOC,GPIO_Pin_0);
}
//定時器初始化
//定時器3通道3PB0
void TIM3_Int_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //GPIOB時鐘使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //tim3 時鐘使能
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//推挽復用輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50M
GPIO_Init(GPIOB, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值 計數到5000為500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值 10Khz的計數頻率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性低
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //根據T指定的參數初始化外設TIM1 4OC1
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM2在CCR1上的預裝載寄存器
TIM_ARRPreloadConfig(TIM3,ENABLE);//ARPE使能
TIM_Cmd(TIM3, ENABLE); //使能TIMx外設
}
//主程序如下
int main(void)
{
delay_init(); //延時函數初始化
Drive_Init();
TIM3_Int_Init(1000-1,72-1);//10Khz的計數頻率,計數到5000為500ms
while(1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare3(TIM3,400);
delay_ms(1000); //注意:正點原子官方延時函數delay_ms(),對72M條件下,nms<=1864 ,所以這里延時超過1864的話延時就會不準
delay_ms(1000);
delay_ms(1000);
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare3(TIM3,400);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
}
}
Keil代碼下載:
Keil代碼.7z
(184.25 KB, 下載次數: 115)
2022-7-10 20:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|