本帖最后由 jinglixixi_457498010 于 2023-12-27 01:14 编辑

在以往控制步进电机时,为了提高控制的精度多是采用相应的驱动控制器来完成,其外观如图1和图2所示。其细分模式是通过蓝色的指拨开关来完成的,伴随细分模式的不同,指拨开关的位数也会随着改变。在接入信号电源的情况下,其绿色的电源指示灯即被点亮。
image.png
1 驱动控制器

image.png
2 控制电源连接

相对于本次测评的双极微步电机评估板,其特点是功能较完备,无需封装即可直接使用,但在价格方面会较高。而测评的评估板,在性价比上会相对高一些,适于进行性能的评估和一些基本的应用。
image.png
3 双极微步电机评估板

在电机的选取方面,多是选取图4所示的大扭矩步进电机,其引脚的信号排列关系如图5所示。
该电机的适用电压为:9V、12V、24V
image.png
4 步进电机

image.png
5 引脚信号排列

步进电机与评估板的连接连接如图6所示,VM与GND引脚则连接12V直流电源。
image.png
6 电机与评估板连接

至于评估板的信号引脚,则由ACM32G103开发板提供,所使用的扩展接口如图7所示。
其中:
步进脉冲信号输入端CLK连接PB8(一个脉冲走一步,脉冲频率决定着步进电机速度)
步进方向信号输入端DIR连接PB9(可使用按键来切换步进电机的方向)
使能信号输入端EN连接PA5(低电平时关闭芯片的功率输出)
image.png
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所示。
    image.png
    8 整体连接及运行效果