[STM32U5] 【NUCLEO-U5A5ZJ-Q测评】+步进电机细分控制

[复制链接]
1115|3
 楼主| jinglixixi 发表于 2023-12-27 13:25 | 显示全部楼层 |阅读模式
#申请原创#

在以往控制步进电机时,为了提高控制的精度多采用相应的驱动控制器来完成,这里使用的是一款双极微步电机评估板,其特点是功能较完备,适于进行性能的评估和一些基本的应用。
1.jpg
图1双极微步电机控制板

在电机选取上,是选取图2所示的大扭矩步进电机,其引脚的信号排列关系如图3所示。
该电机的适用电压为:9V、12V、24V
2.jpg
图2 步进电机

3.jpg
图3 引脚信号排列

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

控制信号是由NUCLEO-U5A5ZJ开发板提供,所使用的扩展接口如图5所示。
其中:
步进脉冲信号输入端CLK连接PB8(一个脉冲走一步,脉冲频率决定着步进电机速度)
步进方向信号输入端DIR连接PB9(可使用按键来切换步进电机的方向)
使能信号输入端EN连接PC8(低电平时关闭芯片的功率输出)
5.jpg
图5扩展接口

实现引脚输出模式配置的函数为:
  1. voidBSP_BJDJ_Init(void)
  2. {
  3. GPIO_InitTypeDefGPIO_InitStruct;
  4. __HAL_RCC_GPIOB_CLK_ENABLE();
  5. GPIO_InitStruct.Pin  = GPIO_PIN_8|GPIO_PIN_9;
  6. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  7. GPIO_InitStruct.Pull= GPIO_PULLUP;
  8. GPIO_InitStruct.Drive  = GPIO_DRIVE_LEVEL3;
  9. GPIO_InitStruct.Alternate = GPIO_FUNCTION_0;
  10. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  11. __HAL_RCC_GPIOC_CLK_ENABLE();
  12. GPIO_InitStruct.Pin  = GPIO_PIN_8;
  13. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  14. GPIO_InitStruct.Pull= GPIO_PULLUP;
  15. GPIO_InitStruct.Drive  = GPIO_DRIVE_LEVEL3;
  16. GPIO_InitStruct.Alternate = GPIO_FUNCTION_0;
  17. HAL_GPIO_Init(GPIO8, &GPIO_InitStruct);
  18. }
所用引脚输出高低电平的语句定义为:
#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)

测试电机转动的程序为:
  1. int main(void)
  2. {
  3.     uint16_t i,M=2000;
  4.         HAL_Init();
  5.     SystemClock_Config();
  6.     SystemPower_Config();
  7.     MX_ICACHE_Init();
  8.         BJDJ_Init();
  9.     EN_high;
  10.     DIR_high;
  11.     for(i=0 ; i<M ;i++)
  12.     {
  13.          CLK_high ;
  14.          HAL_Delay(1);
  15.          CLK_low;
  16.          HAL_Delay(1);
  17.     }
  18.     HAL_Delay(500);
  19.     DIR_low;
  20.     for(i=0 ; i<M ;i++)
  21.     {
  22.          CLK_high ;
  23.          HAL_Delay(1);
  24.          CLK_low;
  25.          HAL_Delay(1);
  26.     }
  27.     EN_low;
  28. }
经程序编译与下载,其测试效果如图6所示,说明功能设计正确,可以驱动步进电机在指定的细分模式下进行正反转运转。
6.jpg
图6 连接方式及上电测试


Henryko 发表于 2024-1-12 16:59 | 显示全部楼层
端子那两个接的什么啊
 楼主| jinglixixi 发表于 2024-1-12 21:41 | 显示全部楼层
Henryko 发表于 2024-1-12 16:59
端子那两个接的什么啊

多余的2个引脚,放短路给隔离了。
点点111 发表于 2024-2-3 06:13 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部