2016-08-17 225 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