Bootstrap

STM32驱动步进电机

前言

(1)本章介绍用stm32驱动42步进电机,将介绍需要准备的硬件器材、所需芯片资源以及怎么编程及源代码等等。

(2)实验效果:按下按键,步进电机顺时针或逆时针旋转90度。

(3)参考资料:

【入门教程】STM32驱动步进电机_哔哩哔哩_bilibili

硬件准备

在这里插入图片描述

购买链接:

【淘宝】https://m.tb.cn/h.5TEAcrO?tk=Quv6W01YhgP CZ3457 「42步进电机42BYGH34S扭矩0.28N.M长34mm丝杆滑台3D打印机配件马达」
点击链接直接打开 或者 淘宝搜索直接打开

在这里插入图片描述

接线

1、接控制器三个普通的GPIO即可,用作普通推挽输出模式

2、步进电机有四个引脚,接到驱动器上的A、B相即可

3、12V供电

在这里插入图片描述

步进电机驱动设置

由驱动器旁边的拨码开关进行设置

在这里插入图片描述

代码讲解

在这里插入图片描述
在这里插入图片描述
见代码注释

main.c

#include "stm32f10x.h"
#include "bsp_key.h"
#include "bsp_stepmotor.h"

void Delay(__IO uint32_t nCount){
	for (; nCount != 0; nCount--)
		;
};

void Step_90_Degrees(){
	// NC = 1600, 800 toggles means 90 degree motor rotation
	for (int i = 0; i < 800; i++)
	{	
		MOTOR_PUL_Toggle;  //翻转800次
		// The delay time determines the motor speed
		Delay(0xfff);  //delay时间的长短决定电机旋转的速度,这个延时是不准确的,若需要精准的延时,可采用定时器
	}
}
//
int main(void)
{
	Key_GPIO_Config();   //按键的配置,初始化
	Stepper_Pin_Init();  //步进电机配置
	Delay(0xfffff);      //进行延时,单片机更好初始化
	// Keep detecting the Key status
	while(1){
		if (Key_Scan(KEY1_GPIO_PORT, KEY1_GPIO_PIN) == KEY_ON){
			// Counter Clock Wise for KEy1
			MOTOR_DIR_CCW;     //设置步进电机为逆时针旋转方向
			Step_90_Degrees(); //控制脉冲端口,使步进电机旋转90度
		}
		if (Key_Scan(KEY2_GPIO_PORT, KEY2_GPIO_PIN) == KEY_ON){
			// Counter Clock Wise for KEy2
			MOTOR_DIR_CW;       //设置步进电机为顺时针旋转方向
			Step_90_Degrees();
		}
	}
}

代码开源链接(这是up主的代码,主控不是c8t6。但是可以参考驱动程序)
https://github.com/Fiercewill/STM32-42StepMotor

;