其他分享
首页 > 其他分享> > stm32 3086A-MFP10S 驱动 步进电机(导轨)

stm32 3086A-MFP10S 驱动 步进电机(导轨)

作者:互联网

目录

博主使用stm32(mini)作为控制器,驱动器选择了以3086A-MFP10S为芯片的模块,电机为42步进电机(连导轨)。

在这里插入图片描述
驱动器链接:https://item.taobao.com/item.htm?spm=a21bo.2017.1997525049.9.5af911d9SHxll6&id=13122246267
步进电机/导轨:https://item.taobao.com/item.htm?spm=2013.1.1997525049.6.c0af2676UvcVCG&id=593133358835
滑台参数:
有效行程:150mm、200mm、250mm、300mm 可选。
滑台总长:(有效行程+75mm)42mm40mm (长高 不含电机)。
驱动电压:5-12V / 500mA-2A。
电机尺寸:424225mm。
步 距 角:1.8° 。(电机转一圈需要200个脉冲(360/1.8))
在这里插入图片描述
不过这家店不能开发票,当时看这家店东西全,我们时间也比较紧就买了这家店。驱动板 16元还是划算的,导轨若是步进电机可以在其他店看看,都差不多。

时序与引脚

在这里1图片描述
在这里插入图片描述
具体芯片资料:
在这里插入图片描述

实际的In1In2波形,原理大概就是其中一个脉冲要比另一个慢一拍。In1In2互换一下就能实现正反转。在这里插入图片描述
步进电机具体原理可以参考http://www.elecfans.com/zt/452/
在这里插入图片描述

具体实现:

57Hz大概17ms一周期,快一点,有响声。
选择32ms一周期,慢一点,稍微流畅一点。

在这里插入图片描述
随便选了两个独立io做为in12的输入:PB0 PB2在这里插入图片描述

main.c

#include "delay.h"
#include "sys.h"

void Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	//使能端口时钟
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;	  // 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);	  				      //推挽输出 ,IO口速度为50MHz
 GPIO_SetBits(GPIOB,GPIO_Pin_0); 						            //输出高 
}


 int main(void){	 
	int i;
	delay_init();	    	 //延时函数初始化
	Init();
	GPIO_SetBits(GPIOB,GPIO_Pin_0);
   	while(1)	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_0);
		GPIO_ResetBits(GPIOB,GPIO_Pin_1);
    delay_ms(8);
		for(i=0;i<1000;i++)
		{
		GPIO_SetBits(GPIOB,GPIO_Pin_1);
		delay_ms(8);
		
		GPIO_SetBits(GPIOB,GPIO_Pin_0);
		delay_ms(8);		
		
		GPIO_ResetBits(GPIOB,GPIO_Pin_1);
		delay_ms(8);

		GPIO_ResetBits(GPIOB,GPIO_Pin_0);
		delay_ms(8);
		}
		
	}
}



标签:GPIOB,Pin,电机,MFP10S,stm32,InitStructure,步进,GPIO,3086A
来源: https://blog.csdn.net/qq_45539458/article/details/111403209