【ACM32G103RCT6开发板测评】+步进电机细分控制
[复制链接]
本帖最后由 jinglixixi 于 2023-12-27 01:10 编辑
在以往控制步进电机时,为了提高控制的精度多采用相应的驱动控制器来完成, 这里使用的是一款双极微步电机评估板,其特点是功能较完备,适于进行性能的评估和一些基本的应用。
图1 双极微步电机评估板
在电机选取上,是选取图2所示的大扭矩步进电机,其引脚的信号排列关系如图3所示。
该电机的适用电压为:9V、12V、24V
图2 步进电机
图3 引脚信号排列
步进电机与评估板的连接连接如图4所示,VM与GND引脚则连接12V直流电源。
图4 电机与评估板连接
评估板的控制信号是由ACM32G103开发板提供,所使用的扩展接口如图5所示。
其中:
步进脉冲信号输入端CLK连接PB8(一个脉冲走一步,脉冲频率决定着步进电机速度)
步进方向信号输入端DIR连接PB9(可使用按键来切换步进电机的方向)
使能信号输入端EN连接PA5(低电平时关闭芯片的功率输出)
图5 扩展接口
实现引脚输出模式配置的函数为:
void BSP_BJDJ_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull= GPIO_PULLUP;
GPIO_InitStruct.Drive = GPIO_DRIVE_LEVEL3;
GPIO_InitStruct.Alternate = GPIO_FUNCTION_0;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull= GPIO_PULLUP;
GPIO_InitStruct.Drive = GPIO_DRIVE_LEVEL3;
GPIO_InitStruct.Alternate = GPIO_FUNCTION_0;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
所用引脚输出高低电平的语句定义为:
#define CLK_high HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
#define CLK_low HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)
#define DIR_high HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET)
#define DIR_low HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET)
#define EN_high HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET)
#define EN_low HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET)
测试电机转动的程序为:
int main(void)
{
uint16_t i = 0 ;
uint16_t M=2000;
HAL_Init();
SystemClock_Config();
get_reset_source();
BSP_MCO_Init();
BSP_BJDJ_Init();
EN_high;
DIR_high;
for(i=0 ; i<M ;i++)
{
CLK_high ;
HAL_DelayUs(200);
CLK_low;
HAL_DelayUs (200) ;
}
HAL_Delay(500);
DIR_low;
for(i=0 ; i<M ;i++)
{
CLK_high ;
HAL_DelayUs(200);
CLK_low;
HAL_DelayUs (200) ;
}
EN_low;
}
经程序编译与下载,其测试效果如图6所示,说明功能设计正确,可以驱动步进电机在指定的细分模式下进行正反转运转。
图6 连接方式及上电测试
步进电机细分控制
|