在以往控制步进电机时,为了提高控制的精度多是采用相应的驱动控制器来完成,其外观如图1和图2所示。其细分模式是通过蓝色的指拨开关来完成的,伴随细分模式的不同,指拨开关的位数也会随着改变。在接入信号电源的情况下,其绿色的电源指示灯即被点亮。
图1 驱动控制器
图2 控制电源连接
相对于本次测评的双极微步电机评估板,其特点是功能较完备,无需封装即可直接使用,但在价格方面会较高。而测评的评估板,在性价比上会相对高一些,适于进行性能的评估和一些基本的应用。
图3 双极微步电机评估板
在电机的选取方面,多是选取图4所示的大扭矩步进电机,其引脚的信号排列关系如图5所示。
该电机的适用电压为:9V、12V、24V
图4 步进电机
图5 引脚信号排列
步进电机与评估板的连接连接如图6所示,VM与GND引脚则连接12V直流电源。
图6 电机与评估板连接
至于评估板的信号引脚,则由ACM32G103开发板提供,所使用的扩展接口如图7所示。
其中:
步进脉冲信号输入端CLK连接PB8(一个脉冲走一步,脉冲频率决定着步进电机速度)
步进方向信号输入端DIR连接PB9(可使用按键来切换步进电机的方向)
使能信号输入端EN连接PA5(低电平时关闭芯片的功率输出)
图7 扩展接口
实现引脚输出模式配置的函数为:
voidBSP_BJDJ_Init(void)
{
GPIO_InitTypeDefGPIO_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_highHAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
#define CLK_lowHAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)
#define DIR_highHAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET)
#define DIR_lowHAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET)
#define EN_highHAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET)
#define EN_lowHAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET)
测试电机转动的程序为:
int main(void)
{
uint16_ti = 0 ;
HAL_Init();
SystemClock_Config();
BSP_UART_Init();
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;
}
复制代码经程序的编译与下载,其运行效果如图8所示。
图8 整体连接及运行效果