亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 无刷电机控制教程 |电调 |无刷直流

在本教程中,我们将学习如何使用 Arduino 和 ESC 控制无刷电机。如果您想详细了解 BLDC 电机的工作原理,可以查看另一篇文章或观看以下视频,其中包含无刷电机工作原理的说明以及如何使用 Arduino 和 ESC 控制无刷电机。

概览

在这个例子中,我有一个外转子 BLDC 电机,其规格如下:它的 KV 额定值为 1000,可以使用 2S、3S 或 4S 锂聚合物电池供电,并且需要 30A ESC。无刷电机的 KV 额定值定义了电机在空载时每伏特的转速。

在这种情况下,1000KV意味着,例如,如果我们为电机提供电压为7.4伏的2S LiPo电池,则电机可以达到7.4乘以1000的最大RPM,即7400 RPM。

无刷电机很耗电,最常见的为其供电的方法是使用锂聚合物电池。 LiPo电池的“S”数字表示电池有多少个电芯,每个电芯的电压为3.7V。

在这个例子中,我将使用 3 节锂聚合物电池,它有 3 节电池,电压为 11.1V。所以,我可以期待我的电机达到 11100 的最大 RPM。

最后,这是一个 30A ESC,我将在此示例中使用它并与电机要求相匹配。电调一侧有三根线控制电机的三相,另一侧有两根线VCC和GND,用于供电。

还有另外一组三根线从ESC出来,那就是信号线,+5V和地线。 ESC 的此功能称为电池消除器电路,顾名思义,它消除了微控制器对单独电池的需求。有了这个,ESC 提供了可用于为我们的 Arduino 供电的稳压 5V。

我们可以在这里注意到,这种连接实际上与我们在伺服电机上看到的连接相同。

因此,使用 ESC 和 Arduino 控制无刷电机就像使用 Arduino 控制伺服一样简单。电调使用与舵机相同类型的控制信号,即标准的 50Hz PWM 信号。

这很方便,因为例如在搭建RC飞机时,我们通常需要舵机和无刷电机,这样我们就可以用同类型的控制器轻松控制它们。

因此,使用 Arduino,我们只需要生成 50Hz PWM 信号,并根据脉冲宽度或高态持续时间(应在 1 毫秒到 2 毫秒之间变化),ESC 将驱动电机从最小到最大 RPM。

Arduino 无刷电机控制 - 电路图

这是此示例的电路图。除了电调,我们只用一个简单的电位器来控制电机速度。

您可以从以下链接获取本 Arduino 教程所需的组件:

  • 无刷电机…………………………
  • 电调30A……………………………………。
  • 锂聚合物电池……………….……..……
  • Arduino 开发板…………………………
  • 电位器…………………………。
  • 面包板和跳线……

用于 BLDC 电机控制的 Arduino 代码

Arduino代码非常简单,只需几行代码。

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

说明: 所以,我们需要定义Servo库,因为有了Servo库我们可以很容易地产生50Hz的PWM信号,否则Arduino产生的PWM信号是不同频率的。然后我们需要为 ESC 控制创建一个伺服对象,并定义一个变量来存储来自电位器的模拟输入。在设置部分,使用 attach() 函数,我们定义了哪个 Arduino 引脚是连接的 ESC 的控制信号,还定义了 PWM 信号的最小和最大脉冲宽度(以微秒为单位)。

在循环部分,首先我们读取电位器,将其值从 0 到 1023 映射为从 0 到 180 的值。然后使用 write() 函数将信号发送到 ESC,或生成 50Hz PWM 信号。 0 到 180 的值对应设置部分中定义的 1000 到 2000 微秒的值。

所以,如果我们把这段代码上传到我们的Arduino,然后用电池给所有东西上电,那么我们就可以用电位器控制无刷电机从零到最大的速度。

但是,这里有几件事需要注意。最初为电机供电时,信号值必须等于或小于最小值 1 毫秒。这称为 ESC 布防,电机发出确认蜂鸣声,以便我们知道它已正确布防。如果我们在通电时有更高的值,这意味着我们有一个油门,ESC 不会启动电机,直到我们将油门降低到正确的最小值。这在安全方面非常方便,因为如果我们在通电时踩油门,电机将不会启动。

ESC校准

最后,让我们解释一下 ESC 校准的工作原理。每个 ESC 都有自己的高点和低点,它们可能会略有不同。例如,低点可能是 1.2 毫秒,高点可能是 1.9 毫秒。在这种情况下,我们的油门在前 20% 内不会做任何事情,直到达到 1.2 毫秒的低点值。

为了解决这个问题,我们可以校准电调或根据需要设置高低点。为此,在为 ESC 供电之前,首先我们需要将电位器调至最大值或至少大于当前中间点的值。然后我们可以给电调上电,我们会听到电机发出几声哔哔声,这实际上确认我们已经设置了新的高点。

然后 2 秒后,我们应该将电位器移动到新低点的位置。我们将再次听到确认蜂鸣声,这样我们就完成了 ESC 校准。现在我们的油门会立即响应,我们可以在这两个新点内控制电机。

这几乎就是本教程的所有内容。如果您想学习如何无线制作这个 Arduino 无刷电机控制,您可以查看我之前构建的视频和基于 Arduino 的 RC 发射器,并解释了如何使用它来控制 BLDC 电机。

我希望你喜欢这个教程并学到了一些新东西。随时在下面的评论部分提出任何问题,不要忘记查看我收集的 Arduino 项目。


制造工艺

  1. Arduino RFID 锁教程
  2. 使用 Arduino 控制硬币接收器
  3. Arduino 控制中心
  4. Arduino 带蓝牙控制 LED!
  5. 线跟随机器人
  6. Arduino 加湿器控制
  7. Arduino 培训平台
  8. Arduino 指纹传感器教程
  9. Arduino 教程:迷你钢琴
  10. Arduino教程01:入门
  11. BLDC 电机和自动化
  12. BLDC 电机简介