#申请原创#
在以往控制步进电机时,为了提高控制的精度多采用相应的驱动控制器来完成,这里使用的是一款双极微步电机评估板,其特点是功能较完备,适于进行性能的评估和一些基本的应用。
图1双极微步电机控制板
在电机选取上,是选取图2所示的大扭矩步进电机,其引脚的信号排列关系如图3所示。 该电机的适用电压为:9V、12V、24V
图2 步进电机
图3 引脚信号排列
步进电机与评估板的连接连接如图4所示,VM与GND引脚则连接12V直流电源。 图4 电机与评估板连接
控制信号是由NUCLEO-U5A5ZJ开发板提供,所使用的扩展接口如图5所示。 其中: 步进脉冲信号输入端CLK连接PB8(一个脉冲走一步,脉冲频率决定着步进电机速度) 步进方向信号输入端DIR连接PB9(可使用按键来切换步进电机的方向) 使能信号输入端EN连接PC8(低电平时关闭芯片的功率输出) 图5扩展接口
实现引脚输出模式配置的函数为: 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_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_8;
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(GPIO8, &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(GPIOC,GPIO_PIN_8, GPIO_PIN_SET)
#define EN_lowHAL_GPIO_WritePin(GPIOC,GPIO_PIN_8, GPIO_PIN_RESET)
测试电机转动的程序为: int main(void)
{
uint16_t i,M=2000;
HAL_Init();
SystemClock_Config();
SystemPower_Config();
MX_ICACHE_Init();
BJDJ_Init();
EN_high;
DIR_high;
for(i=0 ; i<M ;i++)
{
CLK_high ;
HAL_Delay(1);
CLK_low;
HAL_Delay(1);
}
HAL_Delay(500);
DIR_low;
for(i=0 ; i<M ;i++)
{
CLK_high ;
HAL_Delay(1);
CLK_low;
HAL_Delay(1);
}
EN_low;
}
经程序编译与下载,其测试效果如图6所示,说明功能设计正确,可以驱动步进电机在指定的细分模式下进行正反转运转。 图6 连接方式及上电测试
|