2016-08-17 226 views
1

我正在使用Raspberry Pi 3尝试通过QBrain ESC控制无刷直流马达。ESC的树莓派PWM频率和占空比

为此,我使用RPI雷电驱动器来创建PWM DMA信号。不幸的是我没有做任何事情会让电机转动。

有人可以建议我应该用什么频率和占空比输出到ESC?谷歌搜索会建议PWM频率为50赫兹占空比在0.05%和0.1%之间(以1毫秒和2毫秒之间的脉冲),但这似乎不适用于我。这里

示例代码(C#视窗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); 
+0

请在您的问题中发布相关的代码。否则很难说出什么问题。 – Munir

+0

这只是猜测,但我相信你的意思_between 1毫秒和2ms_而不是_between 1000毫秒和2000ms_。如果是这种情况,那么你的代码应该是'ScaleBetween(userInputThrust,0.05,0.1);',假设'ScaleBetween'完成它所做的事情。要调试这样的事情,你可能会被钩住范围,12脚,看什么样的信号它的输出保存自己很多头痛。试验和错误只会让你如此。 –

+0

你是对的,1ms到2ms,错别字。我真的想要建立一个范围,但不幸的是没有一个。 – Slicc

回答

0

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

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

  1. 向ESC发送一个2ms高脉冲,周期为20ms;然后,开启它。
  2. 等待发出哔哔声。
  3. 向ESC发送一个带20ms窗口的1ms高脉冲。
  4. 等待发出哔哔声。
  5. 关闭电调。

确保您在全油门时不会启动ESC,否则ESC将重新进入校准模式。建议在低油门时开启电源。

校准之后你应该注意到的是,ESC将开始转动电机在与1070us高脉冲为20ms的时期。 (即有1000US和1070us之间的死区)如果不能确定作为对输出管脚产生什么时期,那么你应该用示波器范围,并测量它

。 ESC只能做它所讲的内容。

+0

谢谢,这在很大程度上是我所期望的,但它似乎并没有工作。我会看看我是否可以在某处找到范围。 – Slicc