original:https://circuitdigest.com/microcontroller-projects/what-is-bldc-motor-and-arduino-bldc-motor-control

什么是无刷直流电机(BLDC)以及如何使用Arduino控制它

What is Brushless DC Motor (BLDC) and How to Control it with Arduino

ARDUINO项目

经过**阿斯温斯·拉吉(Aswinth Raj)** 修改

什么是无刷直流电机(BLDC)以及如何使用Arduino控制它

按照我们想要的方式来构建和使它们工作一直很有趣。在达成共识的同时,建造可以飞翔的东西反而会使业余爱好者和硬件修补匠更加焦虑。是的!我说的是滑翔机,直升机,飞机,主要是多直升机。如今,由于可以在线获得社区支持,因此非常容易自行构建一个。飞行中的所有事物的共同点是它们使用的是**BLDC电机,**那么这台BLDC电机是什么?为什么我们需要它来飞东西?有什么特别之处?如何购买正确的电机并将其与控制器连接?什么是ESC,为什么要使用它?如果您有类似这样的问题,那么本教程就是您的一站式解决方案。

因此,基本上,在本教程中,我们将 使用Arduino控制无刷电机。此处, A2212 / 13T无传感器BLDC电机与20A电子速度控制器(ESC)一起使用。该电动机通常用于制造无人机。

所需材料

  1. A2212 / 13T BLDC电动机
  2. 电调(20A)
  3. 电源(12V 20A)
  4. Arduino的
  5. 电位器

了解BLDC电机

BLDC电动机代表无刷直流电动机,由于其运行平稳,因此常用于吊扇和电动汽车。先前已经详细说明了BLDC电动机在电动汽车中的使用。与其他电动机不同,BLDC电动机有三根导线,每根导线形成自己的相,因此为我们提供了三相电动机。等等…什么!

是的,尽管BLDC电机被认为是DC电机,但它们在脉冲波的帮助下工作。的电子速度控制器(ESC)来自电池的DC电压转换到脉冲并且将其提供给电机的3线。在任何给定时间,仅电动机的两相将被供电,因此电流通过一个相进入而通过另一相流出。在此过程中,电动机内部的线圈通电,因此转子上的磁铁将自身与通电的线圈对齐。然后,ESC将接下来的两根线通电,继续进行此过程以使电动机旋转。电动机的速度取决于线圈的通电速度,电动机的方向取决于线圈的通电顺序。我们将在本文后面的内容中了解有关ESC的更多信息。

BLDC电动机有很多类型,让我们看一下最常见的分类。

*转子内和转子外BLDC电动机:转子内***BLDC电动机的工作原理与其他任何电动机一样。也就是说,在保持外壳固定的同时,电动机内部的轴仍在旋转。当外流式BLDC电动机正好相反时,电动机的外壳与轴一起旋转,而内部线圈保持固定。外轮电动机在电动自行车中是非常有利的,因为外壳(旋转的外壳)本身被制成轮胎的轮辋,因此避免了连接机构。同样,外转轮马达比起转轮类型更倾向于提供更大的扭矩,因此它成为电动汽车和无人机的理想选择。我们在这里使用的也是出局类型。

*注意:*还有另一种类型的电动机,称为无芯BLDC电动机,也用于袖珍无人机,它们具有不同的工作原理,但在本教程中,我们现在跳过它。

*传感器和无传感器BLDC电动机:* 为了使BLDC电动机旋转而不会产生任何冲击,需要反馈。也就是说,电调必须知道转子中磁体的位置和磁极,以便据此为定子通电。该信息可以通过两种方式获取:一种是将霍尔传感器放置在电动机内部。霍尔传感器将检测磁体并将信息发送给ESC,这种类型的电动机称为有传感器的BLDC电动机,用于电动汽车。第二种方法是使用线圈横穿磁体时产生的反电动势,这不需要额外的硬件或将相线本身用作反馈以检查反电动势的导线。这种方法用于我们的电机中,在无人机和其他飞行项目中很常见。

为什么无人机和其他多直升机使用BLDC电机?

从四轴直升机到直升飞机和滑翔机,有许多种凉爽的无人机,所有东西都有一个共同的硬件。那是BLDC电机,但是为什么呢?为什么他们使用BLDC电动机,该电动机比DC电动机贵一些?

有很多有效的理由,一个主要的原因是这些电动机提供扭矩非常高,这对于迅速获得/松开推力以起飞或降落无人机非常重要。这些电机也可以作为流道使用,这又增加了电机的推力。选择BLDC电动机的另一个原因是其平稳的振动和较少的运转,这对于我们在空中稳定的无人机非常理想。

BLDC电机功率重量比非常高。这非常重要,因为在无人机上使用的电动机应具有高功率(高速和高扭矩),但重量也应较小。可以提供与BLDC电动机相同的转矩和速度的DC电动机的重量将是BLDC电动机的两倍。

为什么需要ESC,它的功能是什么?

众所周知,每台BLDC电机都需要某种控制器,以将来自电池的DC电压转换为脉冲以为电机的相线供电。该控制器称为ESC,它表示电子速度控制器。控制器的主要职责是按顺序向BLDC电机的相线通电,以使电机旋转。这是通过感测每条导线的反电动势并在磁铁穿过线圈时准确地为线圈通电来完成的。因此,ESC内部有很多硬件功能,这超出了本教程的范围。但仅举几例,它具有速度控制器和电池消除器电路

基于PWM的速度控制: ESC可以通过读取橙色线上提供的PWM信号来控制BLDC电机的速度。它的工作原理与伺服电机非常相似,所提供的PWM信号的周期应为20ms,并且可以改变占空比以改变BLDC电机的速度。由于相同的逻辑也适用于伺服电动机来控制位置,因此我们可以在Arduino程序中使用相同的伺服库。在此处学习如何将Servo与Arduino结合使用。

**电池消除器电路(BEC):**几乎所有ESC都带有电池消除器电路。顾名思义,该电路消除了微控制器需要单独的电池的麻烦,在这种情况下,我们不需要单独的电源来为Arduino供电。ESC本身将提供可调节的+ 5V电压,可为我们的Arduino供电。通常有多种类型的电路可调节此电压,在便宜的ESC上将是线性调节,但您也可以找到带有开关电路的电路。

**固件:**每个ESC都有制造商写入的固件程序。该固件极大地决定了ESC的响应方式。一些流行的固件是Traditional,Simon-K和BL-Heli。该固件也是用户可编程的,但是在本教程中我们将不做过多介绍。

BLDC和ESC的一些常用术语:

如果您刚刚开始使用BLDC电机,则可能遇到过诸如制动,软启动,电机方向,低电压,响应时间超前这样的术语*。*让我们看一下这些术语的含义。

**制动:**制动是您的BLDC电机在卸下节气门后便立即停止旋转的能力。对于多直升机而言,此功能非常重要,因为他们必须更频繁地更改其RPM才能在空中进行机动。

**软启动:**当BLDC电机与齿轮关联时,软启动是要考虑的重要功能。启用软启动的电动机不会突然突然开始旋转,无论节气门的开启速度如何,它始终会逐渐提高速度。这将有助于我们减少与电动机相连的齿轮(如果有)的磨损。

**电动机方向:**在运行期间,BLDC电动机中的电动机方向通常不会改变。但是组装时,用户可能需要改变电动机的旋转方向。改变电动机方向的最简单方法是简单地相互改变电动机的任意两根电线。

**低压停止:**校准后,我们始终需要BLDC电动机以特定的节气门值以相同的特定速度运行。但这很难实现,因为随着电池电压的降低,电动机趋于以相同的节气门值降低速度。为了避免这种情况,我们通常将ESC编程为在电池电压达到阈值以下时停止工作,此功能称为Low Voltage Stop(低压停止),在无人机中很有用。

**响应时间:**电动机根据油门变化快速改变速度的能力称为响应时间。响应时间越短,控制效果越好。

**进阶:**进阶是一个问题,或更像是BLDC马达的错误。所有BLDC电机都有一点进步。就是说,当定子线圈通电时,转子会由于其上存在永磁体而被吸引。在被吸引之后,转子趋向于在线圈断电然后再下一个线圈通电之前沿相同的方向向前移动一点。这种运动称为“前进”,它将产生诸如抖动,发热,发出噪音等问题。因此,这是一个好的电调应该单独避免的事情。

好的,现在有足够的理论让我们通过将电机与Arduino连接来开始使用硬件。

Arduino BLDC电机控制电路图

下面是用Arduino控制无刷电机的电路图**:**

BLDC电机与Arduino接口的连接非常简单。ESC需要至少12V和5A左右的电源。在本教程中,我将RPS用作电源,但您也可以使用锂电池为ESC供电。ESC的三相线应与电机的三相线连接,无连接顺序,可以任意顺序连接。

**警告:**某些ESC上没有连接器,在这种情况下,请确保连接牢固,并使用绝缘胶带保护裸露的电线。由于将有高电流流经各相,因此任何短路都会导致电调和电动机永久损坏。

ESC本身的**BEC(电池消除器电路)**将调节+ 5V,可用于为Arduino板供电。最后,为了设置BLDC电机的速度,我们还使用了电位计,该电位计连接到Arduino的A0引脚

使用Arduino进行BLDC速度控制的程序

我们必须创建一个PWM信号,其占空比从0%到100%不等,频率为50Hz。应该通过使用电位计来控制占空比,以便我们可以控制电动机的速度。这样做的代码类似于控制伺服电动机,因为它们还需要频率为50Hz的PWM信号。因此,我们使用来自Arduino的相同伺服库。将完整的代码可以在这个页面的底部找到下面进一步解释我的小片段的代码。如果你是新来的Arduino或PWM那么,先通过使用[PWM与Arduino的](file:///F:/circuit digest/upload in microcontrollers/Arduino Based LED Dimmer using 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);//throttle油门

然后,我们必须将值从0转换为1023,**再将0转换为180,**因为值0将生成0%PWM,值180将生成100%占空比。任何大于180的值都没有意义。因此,我们使用如下所示的map函数将值映射到0-180。

throttle = map(throttle,0,1023,0,180); //油门

最后,我们必须**将此值发送到伺服功能,**以便它可以在该引脚上生成PWM信号。由于我们已将伺服对象命名为ESC,因此代码如下所示,其中可变油门包含0-180之间的值,以控制PWM信号的占空比

ESC.write(throttle);//throttle油门

Arduino BLDC电机控制

根据电路图进行连接,然后将代码上传到Arduino并打开ESC的电源。确保已将BLDC电动机安装在某些物体上,因为电动机在旋转时会突然跳动。设置开启后,您的ESC会发出欢迎音并持续发出蜂鸣声,直到油门信号在阈值限制内,逐渐将POT从0V逐渐增加,并且蜂鸣声将停止,这意味着我们现在正在提供PWM信号高于下阈值,并且随着您进一步增大,电动机将开始缓慢旋转。您提供的电压越多,电动机的启动速度就越快,最后,当电压达到阈值上限以上时,电动机将停止。然后,您可以重复该过程。

您也可以在下面的视频链接中找到该Arduino BLDC控制器的完整工作。如果您在使用此工具时遇到任何问题,请随时使用评论部分或使用论坛获取更多技术帮助。

#include <Servo.h> //Use the Servo librarey for generating PWM
Servo ESC; //name the servo object, here ESCvoid setup()
{
ESC.attach(9); //Generate PWM in pin 9 of Arduino
}void loop()
{
int throttle = analogRead(A0); //Read the voltage from POT
throttle = map(throttle, 0, 1023, 0, 180); //Map the values of 0-102 from pot to 0-180 bcs servo works only from 0-180
ESC.write(throttle); //based on the value of throttle generate PWM signal
}

什么是无刷直流电机(BLDC)以及如何使用Arduino控制它相关推荐

  1. 无刷直流电机(BLDC)建模与仿真

    文章目录 一.BLDC建模 二.BLDC仿真 三.参考文献 按照最常用的定义,无刷直流电机有两种,一种是梯形波反电动势无刷直流电机,也就是通常说的BLDC,另一种是正弦波反电动势无刷直流电机,也就是P ...

  2. 直流电机-(有刷直流电机-无刷直流电机)-伺服电机-步进电机

    直流电机 玩具车中十分常见 两根引线,只能正转.反转.调速 转速快,购买时确定基本参数和型号:工作电压.工作电流等 需要额外的电机驱动电路来控制转速.转向和供电 有刷直流电机 BDC 定子为永磁体.转 ...

  3. 【市场趋势】专为无刷直流电机设计的单片机现世!取代有刷已成大势?

    在节能减排已经成为消费者的新需求时,各种工业企业也开始了转型,配合国家的政策向节能减排发展.在动力部分,要想配合节能减排的方针政策,主要就是提高技术,选择适合的电机,那么什么电机既能满足生产需求又能做 ...

  4. 使用matlab设计电机控制器,如何使用Matlab进行无刷直流电机控制系统建模的仿真方法资料说明...

    在分析无刷直流电机(BLDC)数学模型的基础上,提出了一种无刷直流电机控制系统仿真建模的新方法.在Matlab/Simulink环境下,把独立的功能模块和S函数相结合,构建了无刷直流电机系统的仿真模型 ...

  5. Arduino基础篇(九)-- 无刷直流电机转速和方向控制

    本文选择Arduino MEGA 2560开发板做调试,通过调整PWM的占空比,控制BLDC3525,内置有感有霍尔驱动,实现对无刷直流电机的转速控制,通过调整数字口输出高低电平,从而实现电机方向控制 ...

  6. 无刷直流电机自适应模糊PID控制及仿真

    1.内容简介 247 2.内容说明 针对iECar永磁无刷直流电机转速 PID 控制精度低.控制不稳定和响应滞后等缺点,介绍了一种具有智能性质的自适应模糊 PID控制器设计思路,提出了一种模糊控制器量 ...

  7. BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序

    BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...

  8. 【零基础玩转BLDC系列】基于反电动势过零检测法的无刷直流电机控制原理

    无刷直流电动机基本转动原理请参考<基于HALL传感器的无刷直流电机控制原理>,基本原理及基础知识本篇不再赘述. 位置传感器的存在限制了无刷直流电机在某些特定场合中的应用,如:使电机系统的体 ...

  9. STC单片机驱动BLDC无刷直流电机(无HALL)官方示例

    STC单片机驱动BLDC无刷直流电机(无HALL)官方示例 示例代码在STC8系列文档第20章里面:http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pd ...

  10. 无刷直流电机(BLDC)无传感器控制,采用的是容积卡尔曼观测,能够很好的估计转速和转子位置,有对应的simulink文件跟ckf代码

    无刷直流电机(BLDC)无传感器控制,采用的是容积卡尔曼观测,能够很好的估计转速和转子位置,有对应的simulink文件跟ckf代码,ckf由s函数编写,提供模型说明和参考文献. ID:7715067 ...

最新文章

  1. matlab能修图吗,相机上这个“功能”,不打开会影响修图效果,别等拍完照片才知道...
  2. CentOS7中关闭selinux
  3. Swoole报错Failed to execute ‘send’ on ‘WebSocket’: Still in CONNECTING state. a
  4. user_all_tables,user_tables等视图的说明
  5. 今天,给我妈打电话聊了我爸
  6. idea 鼠标变量_IntelliJ IDEA鼠标悬停方法显示Java Doc
  7. TIOBE 5 月编程语言排行榜:暴涨的 C,逆袭的 Scala
  8. 被外包程序员植入了后门程序,触发后删除数据库但他们死不承认,该怎么办?...
  9. java 钩子 64位 操作系统_Java与系统钩子
  10. leetcode探索动态规划(三)
  11. pandas读取与存储操作详解
  12. 浅谈单片机工程师职业规划
  13. 多线程QThread的两种启用用法
  14. 客户要管理,就靠crm吗?
  15. 回环接口(loop-back/loopback)
  16. 使用selenium和chromedriver实现12306抢票
  17. 学一点django基础
  18. 计算概论(一)计算起源、图灵机、计算原理
  19. php word 开发指南大全 点击目录查看所有功能
  20. 维乐美学系列:美丽背后的匠心打造

热门文章

  1. VSCode连接远程服务器
  2. [附源码]Python计算机毕业设计SSM基于Yigo平台库房管理系统(程序+LW)
  3. 西门子PLC如何使Q区输出点在CPU停止后能够常ON或常OFF或实现断电保持?
  4. HTML图片映射矩形坐标,HTML图片热区map area的用法(转载)
  5. Centos 6 yum安装出错
  6. Compose for Desktop (Kolin跨平台编写Mac微信应用)
  7. android九宫格控件,IKNinePhotoView是一个开源的Android九宫格控件
  8. CISCO 思科2960G CONSOLE口越过登陆账号密码访问
  9. Excel 和Word 常用小技巧
  10. ABP AOP 用例