(11)(3.2) ESC信号问题

文章目录

前言

1 信号电平不足

2 感应噪声

3 ESC过电压尖峰

4 ESC固件错误


前言

本页讨论了 ESC 信号的几个潜在问题,这些问题可能导致不可靠的操作,甚至在起飞时坠毁。这些主要发生在较大的四轮飞机上,这些飞机从动力和自动驾驶仪ESCS 有很长的行程。


1 信号电平不足

大多数自动驾驶仪在其输出端使用 TTL/CMOS 兼容信号,但通常仅在 3.3V 电平。这最终会导致ESC 的信号波形或电平不佳,从而导致操作不可靠。造成这种情况的因素有:

  • 高阻抗(电阻或无功)布线;
  • ESC 输入负载过重。

对于大型、高价值的飞行器,最好在一定范围内检查每个 ESCESC 信号水平,以确保信号干净。这最好通过地面加速至至少 70% 的油门来完成,要么物理固定飞行器,要么暂时反向安装其支柱。

以下是 ESC 的两个 ESC 信号的示例范围轨迹,ESC 的输入负载过高或接线电阻过大。如图所示,第二个 ESC 的模拟电平约为 3V,这有点勉强,但第一个 ESC 迹线仅为 2V 左右,对于可靠运行来说太低了。

也可能出现较差的上升和下降时间,但由于连接中的高电抗,电压水平足够。这也会影响时间和性能,应予以纠正。

可能的解决方案:

  • 布线阻抗越低,布线越大或布线越短;
  • 使用不存在如此高输入负载的 ESC
  • 自动驾驶仪输出添加缓冲器,以提供 5v 信号和更高的驱动电流;
  • 一些自动驾驶仪可以使用 BRD_PWM_VOLT_SEL = 1 将信号电平从 3.3V 增加到 5V。请参阅以下支持此功能的自动驾驶仪列表(如果你可以在地面军事系统参数列表中看到此参数,则你的自动驾驶机具有此功能):

带 BRD_PWM_VOLT_SEL 的自动驾驶仪

2 感应噪声

在大型飞行器上,电源或电机相线通常与信号线并联运行,这为高频噪声耦合提供了机会。这有时会严重损害 ESC 的运行,如本视频所示:

以下是上述情况的范围痕迹:

随着电流的斜坡上升,噪声被引入模拟信号,直到它最终被破坏到足以被 ESC 解释为关机脉冲宽度的程度,ESC 确实这样做了,从而允许信号恢复并重复循环。

展开发生关机的部分,你可以看到模拟信号最终变得足够嘈杂,以至于其数字逻辑电平被错误地解释。

方法

  • 将信号线与 ESC 的电源线物理分离;
  • 在每条 ESC 信号线中放置一个小型环形扼流圈(专为 1-10MHz 范围设计);
  • ESC 的电源输入端添加电容器组。请参阅下一节。

3 ESC过电压尖峰

由于引线电感,大型飞行器上从电池到 ESC 的长电源线可能会产生较大的电压尖峰。这些尖峰不仅增加了噪声,增加了噪声耦合到 ESC 信号控制线的可能性,而且可能直接损坏 ESC。通过在 ESC 电源输入端添加低 ESR 电容,可以减少或消除这种情况。Advanced Power Drives提供了用于这些应用的典型电容器组的示例。

4 ESC固件错误

某些 ESC 固件版本包含错误,可能会严重影响 ArduPilot 的正确操作。下面列出了用户应该注意的一些已知错误。如果有可用的解决方法,它们将被列出。

带防火花接头的APD ESC

运行2022年11月之前固件版本的防火花连接器和 APD ESC 的飞行器可能容易受到过电压限制设置不正确的影响。如果设置不正确(当预充电时间常数超过 200 毫秒时),ESC 将阻止电机制动,直到收到零油门指令。该问题可能导致 ESC 进入油门只能增加的状态,这几乎总是会导致碰撞,并对飞行器附近的人构成危险。

该问题是由于 ESC 固件中的以下逻辑造成的:

  • ESC 启动 200 毫秒后,对电源电压进行采样,其中最大电压取该点的 120%
  • 在此之后的任何时候,如果电源电压高于此水平,则会产生过压错误;
  • 当过电压误差增加时,油门不会减小,除非自动驾驶仪要求零油门。

此功能旨在防止电机制动将过多的功率推回电池,这可能会导致电池过度充电或 ESC 输入上的过多尖峰。

如果电源电压的上升时间足够慢,以至于电压在 200 毫秒内达到实际电源电压的 80% 以下,则会出现问题。当使用防火花连接器连接电池时,尤其是在长接线和大量增加电容的情况下,可能会出现这种情况。

可以在以下链接中找到解决上述问题的固件更新。

HV, HV Pro and UHV firmware.

F-Series firmware.

内容概要:本文详细探讨了基于阻尼连续可调减振器(CDC)的半主动悬架系统的控制策略。首先建立了CDC减振器的动力学模型,验证了其阻尼特性,并通过实验确认了模型的准确性。接着,搭建了1/4车辆悬架模型,分析了同阻尼系数对悬架性能的影响。随后,引入了PID、自适应模糊PID模糊-PID并联三种控制策略,通过仿真比较它们的性能提升效果。研究表明,模糊-PID并联控制能最优地提升悬架综合性能,在平顺性稳定性间取得最佳平衡。此外,还深入分析了CDC减振器的特性,优化了控制策略,并进行了系统级验证。 适用人群:从事汽车工程、机械工程及相关领域的研究人员技术人员,尤其是对车辆悬架系统控制策略感兴趣的读者。 使用场景及目标:①适用于研究开发基于CDC减振器的半主动悬架系统的工程师;②帮助理解同控制策略(如PID、模糊PID、模糊-PID并联)在悬架系统中的应用及其性能差异;③为优化车辆行驶舒适性稳定性提供理论依据技术支持。 其他说明:本文仅提供了详细的数学模型仿真代码,还通过实验数据验证了模型的准确性。对于希望深入了解CDC减振器工作原理及其控制策略的读者来说,本文是一份极具价值的参考资料。同时,文中还介绍了多种控制策略的具体实现方法及其优缺点,为后续的研究实际应用提供了有益的借鉴。
#include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit KEY_IN_1 = P2^4; sbit KEY_IN_2 = P2^5; sbit KEY_IN_3 = P2^6; sbit KEY_IN_4 = P2^7; sbit KEY_OUT_1 = P2^3; sbit KEY_OUT_2 = P2^2; sbit KEY_OUT_3 = P2^1; sbit KEY_OUT_4 = P2^0; // 新增电机控制引脚(假设使用P3口控制L298N驱动模块) sbit MOTOR_IN1 = P3^0; // 电机方向控制1 sbit MOTOR_IN2 = P3^1; // 电机方向控制2 sbit MOTOR_EN = P3^2; // 电机使能端(PWM调速) unsigned char code LedChar[] = { // 数码管显示字符转换表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; unsigned char LedBuff[6] = { // 数码管显示缓冲区 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; unsigned char code KeyCodeMap[4][4] = { // 按键功能重映射 { ‘F’, ‘R’, ‘H’, 0x26 }, // F:前进, R:后退, H:停止, 上:加速 { ‘1’, ‘2’, ‘3’, 0x25 }, // 速度档位1/2/3, 左:方向切换 { ‘4’, ‘5’, ‘6’, 0x28 }, // 速度档位4/5/6, 下:减速 { ‘7’, ‘8’, ‘9’, 0x27 } // 速度档位7/8/9, 右:备用 }; unsigned char KeySta[4][4] = { // 按键状态 {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1} }; // 新增全局变量 unsigned char MotorSpeed = 0; // 当前速度档位(0-9) unsigned char MotorDir = 0; // 方向:0停止,1前进,2后退 unsigned char PWM_Counter = 0; // PWM计数器 bit UpdateDisplay = 0; // 显示更新标志 void KeyDriver(); void KeyAction(unsigned char keycode); void ShowMotorStatus(); void main() { EA = 1; // 使能总中断 ENLED = 0; // 使能数码管 ADDR3 = 1; TMOD = 0x01; // 定时器0模式1 TH0 = 0xFC; // 1ms定时 TL0 = 0x67; ET0 = 1; // 使能定时中断 TR0 = 1; // 初始化电机控制引脚 MOTOR_IN1 = 0; MOTOR_IN2 = 0; MOTOR_EN = 0; ShowMotorStatus(); // 初始显示 while (1) { KeyDriver(); if (UpdateDisplay) { ShowMotorStatus(); UpdateDisplay = 0; } } } // 显示电机状态 (格式: [方向][速度]) void ShowMotorStatus() { LedBuff[0] = (MotorDir == 1) ? 0x8E : // F (MotorDir == 2) ? 0xAF : // r 0xB6; // S(停止) LedBuff[1] = 0xFF; // 分隔空位 LedBuff[2] = LedChar[MotorSpeed]; // 速度档位 LedBuff[3] = 0xFF; // 空位 LedBuff[4] = 0xFF; // 空位 LedBuff[5] = 0xFF; // 空位 } // 按键功能重写 void KeyAction(unsigned char keycode) { switch(keycode) { case ‘F’: // 前进 MotorDir = 1; MOTOR_IN1 = 1; MOTOR_IN2 = 0; break; case ‘R’: // 后退 MotorDir = 2; MOTOR_IN1 = 0; MOTOR_IN2 = 1; break; case ‘H’: // 停止 MotorDir = 0; MOTOR_IN1 = 0; MOTOR_IN2 = 0; MotorSpeed = 0; break; case 0x26: // 上键:加速 if (MotorSpeed < 9) MotorSpeed++; break; case 0x28: // 下键:减速 if (MotorSpeed > 0) MotorSpeed–; break; default: // 数字键设置速度档位 if (keycode >= ‘1’ && keycode <= ‘9’) { MotorSpeed = keycode - ‘0’; } } UpdateDisplay = 1; // 触发显示更新 } // 定时中断函数 (添加PWM调速) void InterruptTimer0() interrupt 1 { TH0 = 0xFC; TL0 = 0x67; // PWM生成 (周期10ms) PWM_Counter++; if (PWM_Counter >= 10) PWM_Counter = 0; MOTOR_EN = (PWM_Counter < MotorSpeed) ? 1 : 0; LedScan(); // 数码管扫描 KeyScan(); // 按键扫描 } // KeyDriver、KeyScan、LedScan函数保持原结构变(略) 将代码修改为电机1使用P1.0-P1.3电机2使用P3.0-P3.3电机1使用按键1按键4控制,电机2使用按键5按键9控制,停止键使用按键Esc
07-07
评论 225
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmotionFlying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值