然后在驱动板上面有CLK为输入时钟信号,这个信号的快慢与M0-M3来决定步进电机运行的快与慢。
驱动板的DIR是用高低电平来确定电机顺时针或者是逆时针运动,也就是运动方向。
驱动板的EN是确定驱动是运行状态还是设置状态。
由于驱动板有三个跳线开关了,所就不用跳M0-M3也可以进行运行,但是如何需要再细的调整,可以接入单片机或其他的跳线进行调整。
我这里的时钟驱动信号采用航芯ACM32G103来产生PwM信号来给驱动板运运行信号。
整体的接线如下:
在MCU中,使用定时器产生1KHz50%占空比的PWM信号经过CLK提供给驱动板。在主程序中给驱动板一个DIR与EN高平信号,就可以成功的驱电机了。
- ******************************************************************************
- *@file : main.c
- *@brief : main program
- ******************************************************************************/
- #include "main.h"
- #include "app.h"
- #define EN_high HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
- #define EN_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)
- 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);
-
- }
- /*********************************************************************************
- * Function : main
- * Description :
- * Input :
- * Outpu :
- * Author : xwl Date : 2022-06
- **********************************************************************************/
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
-
- BSP_UART_Init();
-
- printfS("\r\n\r\n****************************************************************************************************\r\n");
- printfS("system startup\r\n\r\n");
-
- printfS("HCLK: %uHz\r\n", HAL_RCC_GetHCLKFreq());
- printfS("PCLK1: %uHz\r\n", HAL_RCC_GetPCLK1Freq());
- printfS("PCLK2: %uHz\r\n", HAL_RCC_GetPCLK2Freq());
- printfS("\r\n");
- EN_high;
- DIR_high;
- Timer_PWM_Output_Test();
- while(1)
- {
-
- }
- }