前言
(1)本章介绍用stm32驱动42步进电机,将介绍需要准备的硬件器材、所需芯片资源以及怎么编程及源代码等等。
(2)实验效果:按下按键,步进电机顺时针或逆时针旋转90度。
(3)参考资料:
硬件准备
购买链接:
【淘宝】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