BLDC微型汽车电机的电子控制

电子说

1.2w人已加入

描述

背景:原始提案

我们的项目专注于改进电动汽车电机的控制系统,该系统以前由 UDA E-Team(厄瓜多尔阿苏埃大学的简称)在赛车比赛中使用。该项目提出了控制器的第三个版本(第一个和第二个版本是用不同的微控制器建模的)。借助新的 Arduino Portenta,我们不仅希望提高电机能效,增加新的电流和电压传感器,还希望改善控制器多个阶段的整体电子设计,例如预驱动器、功率级等等。

背景:UDA 电子团队

Universidad del Azuay 此前曾参加过电动汽车竞赛。在其中一个内容中,UDA 的学生和教授设计并实现了电动赛车卡丁车。该实施包括开发主要用于控制和监控中型无刷直流 (BLDC) 电机的电气和电子电路。

学生设计了很多电路,其中包括许多不同类型的晶体管,例如 MOSFET、IGBT、COOLMOS 等。这些器件用于为电机创建三相驱动器。然而,这项任务是系统中最复杂和最关键的任务之一。需要许多设计和尝试来创建能够根据用户命令使电机移动的三相驱动器。

除了最初的问题,该团队还面临许多其他缺点:由于运输和定制时间,我国的 PCB 制造速度较慢。由于电路板内附近设备中大电流的影响,电源系统的 PCB 设计要困难得多。糟糕的设计也会导致散热问题。预算限制以及测试它们的电子设备和设备的可用性是团队必须克服的另一个限制。

因此,电机有一个专为开环控制而设计的电路。电机运行良好,但我们需要监控其他参数并添加闭环控制以提高各种情况下的性能。

提案

  • 改进我们的 BLDC 电机的三相驱动器
  • 闭环控制器:梯形控制和磁场定向控制(FOC)
  • 获取电机的霍尔传感器信号和电流传感器信号
  • 使用 Arduino Portenta 集成所有部件
  • 使用 Altium Designer 为所有部件设计新的 PCB

新设计

新设计由多个 PCB 组成,适合使用 Arduino Portenta 调整所有部件。

驱动器

由于 Portenta 使用 3.3 V,我们决定创建一个小型适配器板来为我们的新控制器提供电压水平。

驱动器

前置驱动板由STRDRIVE601芯片组成,三路半桥高压门极驱动,兼容3.3V输入(如Portenta),一般用于驱动下一级功率晶体管. 该芯片周围环绕着其他元素,以适应其所有功能。例如,我们可以使用带有放大器和几个无源元件的简单电路来监控来自电机相位的电流。对于输入,我们可以完全控制电机的三相,也可以简单地输入一个电压电平来加速或制动电机。

驱动器

驱动器

电源驱动板由六个半桥 MOSFET 驱动器组成。由于电机使用的电流超过了单个 MOSFET 可以驱动的最大电流,因此我们为每个驱动器相位并联了三个 MOSFET,总共有 18 个器件。

驱动器

为了能够监控电机各相吸收的电流,在每个驱动器相中添加了精密大功率电阻器。

驱动器

编码

我们将代码基于一个名为SimpleFOC的开源库,该库是为 Arduino 制作的。该库为 BLDC 和其他电机实现了 FOC 算法。该算法允许根据每个电机上可用的反馈(传感器)完全控制 BLDC 电机,包括位置、扭矩和速度。

我们基于 SimpleFOC 库的示例创建了三个不同的代码来测试电机:

  1. Vel1.ino。这个 Arduino 草图是第一个测试。它只是由一个模拟输入(加速器/油门)组成,它决定了电机的速度。这个简单的测试使我们能够评估电机特性和 PCB 功能。在此模式下,电机以开环控制运行。
  2. Vel2.ino。制作这个 Arduino 草图是为了使用嵌入在电机中的霍尔传感器来测试之前的功能。我们对此进行了测试以检查霍尔传感器读数的准确性,以便我们可以对常数进行一些调整。
  3. Vel3.ino。在最后的草图中,我们调用库中的函数进行 FOC 速度控制并设置 PID 控制器参数。

驱动器

结论和注释

  • 与新的 Arduino Portenta 合作,我们感到非常高兴和兴奋。在本次比赛之前,我们回顾了这款设备的新功能,我们期待看到我们还能用它做些什么。
  • 因为这是一款新设备,新 Portenta 的一些功能无法与 SimpleFOC 库一起使用。例如,我们有 Portenta 分线板,但库与分线板的库不兼容。因此,即使有超过 9 个 PWM 端口可用,我们也只能使用其中的 6 个(Portenta 板上的那些)。这足以控制电机驱动器。但是,我们需要更改库中的几个值以使用所有 PWM 引脚。最后,我们需要做更多的实验,这样我们才能驱动我们的半桥驱动器的所有高端和低端。目前,Portenta Board 及其库与 SimpleFOC 库并不完全兼容。
  • 为了利用 Portenta 处理器的速度,我们想读取功率晶体管板上的分流电阻器中的所有电流值。但是,Arduino 中的命令analogRead() 的处理似乎仍然很慢。同样,我们需要做更多的实验(例如,使用板的多线程能力)来运行与 PID 和 FOC 算法分离的模拟读取()过程。
  • 我们对结果非常满意,但我们需要对代码进行更多的实验和改进,以实现一个只使用 Portenta 板及其所有功能的干净实现。
  • 此演练中可用的其他文件包含此项目中使用的设计和代码。此外,图片和视频显示了系统的运行情况。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分