【问题标题】:PWM frequency and duty cycle on raspberry pi for ESC用于 ESC 的树莓派上的 PWM 频率和占空比
【发布时间】:2016-08-17 20:02:19
【问题描述】:

我正在使用 Raspberry Pi 3 尝试通过 QBrain ESC 控制无刷直流电机。

为此,我使用 RPI 闪电驱动程序来创建 PWM DMA 信号。不幸的是,我所做的任何事情都不会让电机转动。

谁能告诉我应该使用什么频率和占空比来输出到 ESC?谷歌搜索会建议 50Hz 的 PWM 频率,占空比在 0.05% 和 0.1% 之间(给出 1ms 和 2ms 之间的脉冲),但这似乎对我不起作用。

此处的示例代码(C# windows IoT):

        var controllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider());
        var pwmController = controllers[1];
        pwmController.SetDesiredFrequency(50);

        int pin = 12;

        var motor = pwmController.OpenPin(pin);
        motor.Start();

        do
        {
            double userInputThrust = ...value between 0 and 100 provided by user...
            // scale user input from 0 to 100 to between 0.05 and 0.1
            double thrust = ScaleBetween(userInputThrust, 0.05, 0.1);
            motor.SetActiveDutyCyclePercentage(thrust);
        } while (true);

【问题讨论】:

  • 请在您的问题中发布相关代码。否则很难说是哪里出了问题。
  • 这只是猜测,但我假设您的意思是 在 1 毫秒和 2 毫秒之间,而不是 在 1000 毫秒和 2000 毫秒之间。如果是这种情况,那么你的代码应该是ScaleBetween(userInputThrust, 0.05, 0.1);,假设ScaleBetween 做了它所说的。要调试这类事情,您可能会省去很多麻烦,只需将示波器连接到引脚 12 并查看它输出的信号类型。试验和错误只能让你走这么远。
  • 你是对的,1ms 到 2ms,错字了。我真的很想设置一个范围,但遗憾的是没有。
  • 我现在已将帖子更正为正确的值

标签: raspberry-pi windows-10-iot-core pwm


【解决方案1】:

可以在校准期间调整 QBrain 的预期占空比。 20ms 窗口是常态,但高值和低值有一些差异。理想情况下,您应该校准 1ms 低和 2ms 高。

QBrain ESC 使用 Atmel 微控制器和 SimonK 固件。因此,您应该遵循也可以在网上找到的 SimonK 校准程序。程序如下:

  1. 向电调发送一个周期为20ms的2ms高脉冲;然后,打开电源。
  2. 等待蜂鸣序列发生。
  3. 向 ESC 发送一个 1ms 高脉冲和 20ms 窗口。
  4. 等待蜂鸣序列发生。
  5. 关闭电调。

确保您永远不要在全油门的情况下打开电调,否则电调将重新进入校准模式。建议低油门开机。

校准后,您应该注意到 ESC 将以 1070us 的高脉冲开始转动电机,持续 20ms 周期。 (即1000us到1070us之间有死区)

如果您不确定输出引脚生成的周期,那么您应该使用示波器对其进行测量并进行测量。 ESC 只能做它被告知的事情。

【讨论】:

  • 感谢您的信息,这在很大程度上是我所期望的,但它似乎不起作用。我看看能不能在某个地方找到一个范围。
猜你喜欢
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 2012-12-04
  • 2014-01-18
  • 2015-06-19
相关资源
最近更新 更多