电机控制
直播中

陈静

7年用户 1291经验值
私信 关注
[文章]

使用Arduino和电子速度控制器控制无感BLDC外转子电机的速度

  在本篇文章中,我们将使用Arduino开发板和20A电子速度控制器(ESC)控制A2212 / 1T无感BLDC外转子电机(通常用于制作无人机)的速度。
  所需的材料
  ● A2212 / 13T BLDC电机
  ● ESC控制器(20A)
  ● 电源(12V 20A)
  ● Arduino开发板
  ● 电位器
  了解BLDC电机
  BLDC电机表示无刷直流电机,由于其平稳运行,常用于吊扇和电动汽车。与其他电机不同,BLDC电机引出来三根导线,每根导线形成自己的相位,因此对于我们来说,它是一个三相电机。
  是的,虽然BLDC电机被认为是直流电机,它们工作在脉冲波模式下。电子速度控制器(ESC)将来自电池的直流电压转换为脉冲,并将其提供给电机的3根电线。在任何给定时间,只有两相电动机将被供电,因此电流通过一相进入并通过另一相。在此过程中,电动机内的线圈通电,因此转子上的磁铁自身与通电线圈对齐。接下来的两根导线由ESC通电,继续该过程使电机旋转。电动机的速度取决于线圈通电的速度,电动机的方向取决于线圈通电的顺序。我们将在本文后面详细了解ESC。
  有许多类型的BLDC电机可供选择,让我们来看看最常见的分类。
  ● 内转子和外转子BLDC电机:内转子BLDC电机的工作方式与其他电机相同。也就是说,电机内部的轴旋转,而外壳保持固定。外转子BLDC电机正好相反,电机的外壳随着轴一起旋转,而线圈内部保持固定。外转子电机在电动自行车中是非常有优势的,因为外壳(旋转的外壳)本身被制成轮胎的轮辋,因此避免了联接机构。此外,外转子电机往往比内转子电机提供更大的扭矩,因此它成为EV和无人机的理想选择。我们在这里使用的电机也是外转子电机。
  注意:还有另一种电机,称为无芯BLDC电机,也用于袖珍无人机,它们的工作原理不同,本篇文章不对其进行介绍。
  ● 有传感器和无传感器BLDC电机:对于无需任何加速度即可旋转的BLDC电机,需要一个反馈信号。也就是说,ESC必须知道转子中磁铁的位置和极点,以便据此激励定子。这些信息可以通过两种方式获得:一种是将霍尔传感器放在电机内。霍尔传感器将检测磁铁并将信息发送到ESC,这种类型的电机称为Sensord BLDC电机,用于电动车辆。第二种方法是通过使用线圈在磁铁交叉时产生的反电动势,这不需要额外的硬件或电线,相线本身用作反馈来检查反电动势。我们的电机使用的是这种方法,常用于无人机和其他飞行项目。
  为什么无人机和其他多功能直升机使用BLDC电机?
  从四轮直升机到直升机以及滑翔机,有很多类型的无人机,所有这些飞行器都有一个共同的硬件。那就是BLDC电机,但为什么呢?为什么他们使用比直流电机贵一些的BLDC电机?
  这有很多正当理由,其中一个主要原因是这些电机提供的扭矩非常高,这对于快速获得/松动推力来起飞或降落无人机非常重要。这些电动机也可用作外圈,再次增加了电动机的推力。选择BLDC电机的另一个原因是它的平稳振动操作较少,这对我们的无人机在半空中稳定非常理想。
  BLDC电机的功率重量比非常高。这一点非常重要,因为无人机上使用的电机应具有高功率(高速和高扭矩),但重量也应较小。可以提供与BLDC电机相同的转矩和速度的直流电动机将是BLDC电动机的两倍重量。
  为什么我们需要一个ESC,它的作用是什么?
  我们知道每个BLDC电机都需要某种控制器来将电池的直流电压转换成脉冲,为电机的相线供电。该控制器称为ESC,表示电子速度控制器。控制器的主要职责是按顺序激励BLDC电机的相线,以便电机旋转。这是通过检测每根导线的反电动势来完成的,并在磁铁穿过线圈时准确地激励线圈。所以ESC内部有很多硬件亮点,我们这里不打算详细介绍。但是要提一下它有速度控制器和电池消除器电路
  ● 基于PWM的速度控制:ESC可以通过读取橙色线上提供的PWM信号来控制BLDC电机的速度。它的工作原理与伺服电机非常相似,所提供的PWM信号应具有20ms的周期,并且可以改变占空比以改变BLDC电机的速度。由于同样的逻辑也适用于伺服电机来控制位置,我们可以在Arduino程序中使用相同的伺服库。
  ● 电池消除电路(BEC):几乎所有ESC都配有电池消除电路。顾名思义,这个电路不需要为微控制器提供单独的电池,在这种情况下,我们不需要单独的电源为Arduino供电; ESC本身将提供一个+ 5V的稳压电源,可以用来为我们的Arduino供电。有许多类型的电路可以调节这个电压,通常它会对廉价的ESC进行线性调节,但你也可以找到带开关电路的电路。
  ● 固件:每个ESC都有一个由制造商写入的固件程序。该固件极大地决定了您的ESC如何响应;一些流行的固件是Traditional、Simon-K和BL-Heli。该固件也是用户可编程的,但我们在本教程中不会涉及到大部分内容。
  Arduino开发板控制BLDC电机的连接原理图
2.jpg
  BLDC电机与Arduino开发板的连接非常简单。 ESC需要一个最小12V/5A的电源。 在本篇文章中,我使用的是RPS作为电源,但您也可以使用Li-Po电池为ESC供电。 ESC的三相线应连接到电机的三相线,这些线的连接没有顺序,您可以按任意顺序连接它们。
  注意:某些ESC控制器上没有连接接口,在这种情况下,请确保连接方式牢固,并使用绝缘胶带保护裸露的电线。由于会有大电流通过相线,任何短路都会导致ESC和电机永久性损坏。
  ESC中的BEC(电池消除器电路)将会调节输出一个+5V,可用于向Arduino开发板供电。 最后为了设置BLDC电机的速度,我们还使用一个电位器,连接到Arduino的A0引脚。
  BLDC电机的Arduino程序
  我们需要创建一个PWM信号,其占空比从0%变化到100%,频率为50Hz。使用电位器控制占空比,以便控制电机的速度。该操作的代码类似于控制伺服电机,因为它们也需要具有50Hz频率的PWM信号;因此我们使用来自Arduino的相同的伺服电机库。完整的代码可以在下面的本页末尾处找到。
  PWM信号只能在硬件支持PWM的引脚上产生,这些引脚通常用〜符号表示。在Arduino UNO开发板上,引脚9可以产生PWM信号,所以我们将ESC信号引脚(橙色线)连接到引脚9;我们使用以下代码来表示这种连接:
  ESC.attach(9);
  我们需要产生从0%到100%的不同占空比的PWM信号。对于0%占空比,POT将输出0V(0),对于100%占空比,POT将输出5V(1023)。这里,电位器连接到引脚A0,因此我们必须使用模拟信号读取函数从POT读取模拟电压,如下所示
  int throttle = analogRead(A0);
  然后我们必须将值从0到1023转换为0到180,因为值0将生成0%PWM,值180将生成100%占空比。任何高于180的值都没有意义。因此,我们使用map函数将值映射到0-180,如下所示。
  throttle = map(throttle, 0, 1023, 0, 180);
  最后,我们需要将此值发送到伺服函数,以便它可以在该引脚上生成PWM信号。由于我们已将伺服对象命名为ESC,因此代码如下所示,其中变量throttle包含0-180的值以控制PWM信号的占空比
  ESC.write(throttle);
  用Arduino控制BLDC电机
  根据电路图进行连接,并将代码上传到Arduino开发板并启动ESC。确保已将BLDC电机安装在某物上,因为电机在旋转时会四处跳转。一旦装置通电,ESC将发出欢迎音并持续发出嘟嘟声,直到throttle信号在阈值限制范围内,只需将POT从0V逐渐增加,然后蜂鸣声将停止,这意味着我们现在提供的PWM信号高于下限阈值,当您进一步增加时,电机将开始缓慢旋转。您提供的电压越高,电机将获得的速度越快,最终当电压达到阈值上限以上时,电机将停止加速。然后,您可以重复此过程。



原作者:一板论坛 一板网电子技术论坛

更多回帖

发帖
×
20
完善资料,
赚取积分