首页

步进电机与STM32F103C8T6接口

在本教程中,我将向您展示步进电机与STM32F103C8T6单片机基于STM32蓝色药丸板接口的过程。我将首先简要概述步进电机,它的类型,它的驱动技术,最后如何接口一个步进电机STM32。

介绍

步进电机是一种重要类型的电机用于工业和商业应用。它们是简单的无刷电机,将数字脉冲转换成角旋转。

步进电机的独特之处在于每一次旋转都被分成不同数目的相等步长,通常是200步。因为360步有200步0的旋转,每一步将导致一个1.8的旋转0.为了从一个步骤移动到另一个步骤,必须发送一个单独的脉冲,旋转速度与脉冲的频率成正比。

另一件重要的事情要知道关于步进电机是有两种类型的步进电机。它们是单极步进电机和双极步进电机。这两者之间的主要区别是,在单极步进电机,每相有一个绕组与中心抽头,而在双极步进电机,只有一个绕组每相。

双极单极步进电机

另一个区别是这些马达的驱动方式。由于线圈中磁铁的极性可以在单极类型中反转,而无需切换电流方向,驱动它们是非常容易的。你只需要一个简单的基于晶体管的电机驱动器,例如ULN2003 IC。

但在双极步进电机的情况下,很难逆转磁极直接因为只有一个绕组每相。我们通常需要一个专用的h桥型电机驱动IC,如L293D或L298N IC驱动双极步进电机。

步进电机与STM32F103C8T6接口

在这个项目中,我将使用一个简单的5V单极步进电机,其中两个绕组的中心龙头是共同的。这意味着电机将只有5根电线而不是6根。

一个常见的类型的业余爱好者单极步进电机,是非常流行和便宜的是28BYJ-48。如果你看一下这台电机的数据表,上面提到它的传动比是64,大步角是5.6250.这意味着一个旋转所需的步数是360 / 5.625,也就是64。

此外,由于传动比是64,输出轴的有效步骤数是每转的步骤乘以传动比,即64 * 64 = 4096。

在这个项目中,我将使用这个步进电机和ULN2003驱动IC,并使用STM32 MCU控制它。该项目将在一个循环中进行顺时针方向和逆时针方向的旋转扫描。

组件的要求

  • 基于STM32F103C8T6单片机的STM32蓝色药丸板
  • 5V单极步进电机(5线)
  • ULN2003驱动器集成电路
  • 连接电线
  • USB来UART转换器(如果通过UART编程)

线路图

下图为步进电机与STM32F103C8T6单片机接口的电路图。

步进电机与STM32F103C8T6接口电路图

连接解释

首先将步进电机的红线连接到5V上。接下来,ULN2003 IC的前四路输入IN1到IN4连接到PA0到PA3。ULN2003的前四个输出(OUT1 ~ OUT4)按以下顺序连接到步进电机导线上:

  • 着干活——>蓝色
  • OUT2 - >粉红
  • OUT3 - >黄
  • OUT4 - >橙色

并将ULN2003、STM32的GND端子与5V电源连接。

STM32编程用于步进电机控制

首先,选择从PA0到PA3的引脚作为ULN2003的输入,并将其初始化为STM32的output。

现在使用一个变量来表示最大步骤数为4095。这代表的是一个完整旋转的计数。现在假设初始方向为顺时针,采用半步技术启动步进电机。

一旦步进数达到0,表示电机完成了一次旋转。现在,稍微延迟一两秒钟,然后把方向改为逆时针。将步长计数重置为最大值,即4095,并以相反的顺序开始该序列。步进电机将开始向相反方向旋转。在循环中重复这个过程。

在此代码中不需要任何库,您甚至可以修改代码以接受用户输入以选择方向和步骤数。

如果你有一个不同的步进电机,然后参考它的数据表,计算步进角,齿轮传动比和一个旋转所需的总步数。

代码

#定义IN1 PA0
#定义IN2 PA1
#定义IN3回目
#定义IN4阿兹卡班的囚徒第三章
int Steps = 0;
boolean Direction = true;
无符号长prevTime;
无符号长流米利斯;
int stepsLeft = 4095;
长时间;
无效的设置()

pinMode(三机一体、输出);
pinMode (IN2、输出);
pinMode (IN3、输出);
pinMode (IN4、输出);

无效循环()

而(stepsLeft > 0)

currentMillis =微指令();
如果(currentMillis-prevTime > = 1000)

步进(1);
time = time + micros() - pretime;
prevTime =微指令();
stepsLeft -;


延迟(2000);
方向= !方向;
stepsLeft = 4095;

空步进(int x)

for (int i = 0;我< x;我+ +)

开关(步骤)

例0:
digitalWrite(三机一体、低);
digitalWrite (IN2、低);
digitalWrite (IN3、低);
digitalWrite (IN4、高);
打破;
案例1:
digitalWrite(三机一体、低);
digitalWrite (IN2、低);
digitalWrite (IN3、高);
digitalWrite (IN4、高);
打破;
案例2:
digitalWrite(三机一体、低);
digitalWrite (IN2、低);
digitalWrite (IN3、高);
digitalWrite (IN4、低);
打破;
案例3:
digitalWrite(三机一体、低);
digitalWrite (IN2、高);
digitalWrite (IN3、高);
digitalWrite (IN4、低);
打破;
案例4:
digitalWrite(三机一体、低);
digitalWrite (IN2、高);
digitalWrite (IN3、低);
digitalWrite (IN4、低);
打破;
例5:
digitalWrite(三机一体,高);
digitalWrite (IN2、高);
digitalWrite (IN3、低);
digitalWrite (IN4、低);
打破;
例6:
digitalWrite(三机一体,高);
digitalWrite (IN2、低);
digitalWrite (IN3、低);
digitalWrite (IN4、低);
打破;
例7:
digitalWrite(三机一体,高);
digitalWrite (IN2、低);
digitalWrite (IN3、低);
digitalWrite (IN4、高);
打破;
默认值:
digitalWrite(三机一体、低);
digitalWrite (IN2、低);
digitalWrite (IN3、低);
digitalWrite (IN4、低);
打破;

SetDirection ();


空白SetDirection ()

如果(方向= = 1)

步骤+ +;

如果(方向= = 0)

步骤-;

如果>(步骤7)

步骤= 0;

如果(步骤< 0)

步骤= 7;

结论

本文通过一个简单的工程实现,演示了基于STM32蓝丸板的步进电机与STM32F103C8T6单片机的接口。

留下一个回复

您的电子邮件地址将不会被公布。必需字段被标记

Electronicshub图标
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu