首页>>科技 >>内容

stm32控制步进电机引脚接线,基于STM32单片机的控制步进电机实验

发布时间:2023-08-30 17:12:23编辑:温柔的背包来源:

很多朋友对stm32控制步进电机引脚接线,基于STM32单片机的控制步进电机实验不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

stm32控制步进电机引脚接线,基于STM32单片机的控制步进电机实验

一、 实验原理(以28BYJ48步进电机为例)与51控制步进电机原理一致

1、 五线四相步进电机。当不同的线圈通电时,步进电机的转子会旋转一定角度。如果不同的线圈按照一定的规律通电,步进电机就可以连续转动。下表显示了步进电机。电机和拆解图片,以及四根线的通电顺序。

注:一共有五根线,一根是VCC,其余四根分别接ABCD相。

2、 每次移动位置时,必须给予一定的延迟。否则,转子还没有到位,下一个脉冲就已经到来,肯定会产生误差,导致电机堵转、异常振动。

3、 通过改变延迟时间,可以控制电机的速度。它不应该太慢或太快。只要不断调试到合理范围即可。转向使用枚举类型来控制转向。

4、 连接单片机的IO口和电机的四根线时,不能有错误,一定要按顺序连接。

5、 通过改变接收电源的顺序,可以控制电机的方向。

二、 关键实验代码

//实验中使用的引脚必须先初始化void ULN2003_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,启用); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5 | GPIO_P in_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_WriteBit(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7, Bit_RESET);}//控制转向和速度enum dir{Pos, Neg}; //Pos=0, Neg=1void stepper( UnSIGNED INT DIR, UnSIGNED Int Speed) {if (DIR==POS) {//Step1: In1_high; In2_低; in3_低; Delay_us(速度); //步骤2: In11 _High; in2_高; in3_低; in4_低; Delay_us(速度); //步骤3:IN1_LOW; IN2_高; IN3_低; IN4_低; Delay_us(速度); //步骤4:IN1_LOW; IN2_高; IN3_高; IN4_低; Delay_us(速度); //步骤5:IN1_LOW;低的;延迟_us(速度); //步骤6:IN1_LOW; IN2_低; IN3_高; IN4_高; Delay_us(速度); //步骤7:IN1_LOW; _高的; Delay_us(速度); } else { //步骤1:IN1_HIGH; IN2_低; IN3_低; IN4_高; Delay_us(速度); //步骤2:IN1_LOW; IN2_低; IN3_低; IN4_高; 3_高; IN4_高; Delay_us(速度); //步骤4:IN1_LOW; IN2_低; IN3_高; IN4_低; Delay_us(速度); //步骤5:IN1_LOW; IN2_高; IN3_高; _高的; IN3_低; IN4_低; Delay_us(速度); //步骤7:IN1_HIGH; IN2_高; IN3_低; IN4_低; Delay_us(速度); //步骤8:IN1_HIGH; IN2_低; IN3_低; IN4_低; Delay_us(速度);

以上知识分享希望能够帮助到大家!