天天看點

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

Odrive無刷驅動器 開發過程學習記錄(2)

——電機系統的參數配置和校準

開發說明:

*ODrive 硬體版本: v3.6-56V

ODrive 硬體内部固件版本: fw-v0.5.1

odrivetool版本: 0.5.1.post0 (pip install odrive==0.5.1.post0)*

配置環境: windows10

上次在windows環境下,将odrive的基礎配置進行了詳細的講解,本次文章将進行電機參數的配置,并使電機進入閉環控制狀态。

首先按下述方式連接配接好odrive:

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

連接配接流程:24V電源——USB接口——功率耗散電阻——盤式無刷電機——編碼器

配置主要經過四大步驟:

1.配置電機限制值以及硬體參數

2.編碼器配置

3.參數儲存

4.點選校準

一、 電機基礎配置

1.Win+R打開運作框, 輸入cmd打開指令終端

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

2.Odrive連接配接電腦,并電源供電,PWR燈亮

3.在指令終端輸入“odrivetool”,打開Odrive工具

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

打開後顯示已連接配接 Odrive驅動器

4.進行電機限制值配置

- 1.設定限制電流
odrv0.axis0.motor.config.current_lim = ?   (A)

該指令作用是:設定無刷電機運作時的最大電流
           

例如:本次設定M0電機最大電流為10A,則輸入:

odrv0.axis0.motor.config.current_lim = 10

電機電流限制

odrv0.axis0.motor.config.current_lim 機關為 [A]

出于安全考慮,ODrive固件内部預設電流限制設定為10A。 這是相當小的,但是對于初次調試驅動器是有好處的。 配置完 ODrive 後,可以将其增加到60A以提高性能。 請注意:重新設定電流限制值後需要重新設定電流采樣範圍

- 2.設定電流采樣
odrv0.axis0.motor.config.requested_current_range = ? (A)

該指令作用是:odrive電流采樣就隻會采樣範圍以内的電流值。
這個值通常可以設定相比限制電流值更大一些。
           

例如:本次設定M0電機電流采樣值為90A,則輸入:

odrv0.axis0.motor.config.current_lim = 90

- 3.電機轉速限制值
odrv0.axis0.controller.config.vel_limit = ? (turn/s)

該指令作用是:控制電機最大轉速,電機将被限制為該轉速,
電機轉速超過此值将報錯。可以改成感覺合适的值,
或者可以最大調到超過電機本身最大轉速的值,
那麼電機将以它本身最大速度去響應控制。
           

例如:本次設定M0電機轉速限制值為2000.0 (turn/s),則輸入:

odrv0.axis0.controller.config.vel_limit = 2000.0

- 4.電機校準電流限制值
 odrv0.axis0.motor.config.calibration_current = ? (A)

該指令作用是:此值為電機在校準過程中,運作通過的最大電流值。
同樣可以改成感覺合适的值,如果您使用的是小功率電機(即15A額定電流),
則可能需要将此值适當調小。
           

5.設定相關硬體參數

- 1.功率耗散電阻的電阻值
 odrv0.config.brake_resistance = ? (Ohm)

該指令作用: 耗散電阻就是刹車電阻,如果不使用設定為0。
請注意,您的接線和螺釘端子中可能會有一些額外的電阻。
是以,如果使用時遇到問題,
則可能需要将此參數在功率耗散電阻阻值的基礎上增加約0.05歐姆。
           

例如:本次M0電機使用耗散電阻為3.35 (Ohm)(加入額外電阻),則輸入:

odrv0.config.brake_resistance = 3.35

- 2.永磁電機中的磁極對數(磁鋼個數除以2)
 odrv0.axis0.motor.config.pole_pairs = ? 

該指令作用是: 設定無刷電機中磁極對數,
這是電機固有參數,可以通過數磁極數或者電機廠家提供的磁極參數獲得。
           

下圖為本次使用電機的參數。

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

例如:因為定子極數為28 ,28 / 2 = 14,極對數為14,則輸入:

odrv0.axis0.motor.config.pole_pairs = 14

- 3.選擇電機類型
 odrv0.axis0.motor.config.motor_type = ? 
 
 目前支援兩種類型的電機:
 大電流電機(MOTOR_TYPE_HIGH_CURRENT)
 雲台電機(MOTOR_TYPE_GIMBAL)。
           

注意:不要把非小電流雲台電機配置為 MOTOR_TYPE_GIMBAL ,這樣可能會使電機或 ODrive 過熱。

部落客就因設定錯誤導緻燒掉Odrive的mos管!

本次選用的是大電流電機,則輸入:

odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT

二、編碼器的配置

- 1.使用編碼器 cpr
odrv0.axis0.encoder.config.cpr = ? (編碼器每轉計數)

該指令作用:
設定編碼器每轉計數 [CPR],這是每轉産生的脈沖數(PPR)值的4倍。
通常,這在編碼器的手冊中會有說明。
           

例如:本次編碼器使用cpr = 16384 ,則輸入:

odrv0.axis0.encoder.config.cpr = 16384

如果不使用編碼器,則設定無傳感器模式運作

三、儲存設定

輸入代碼:

odrv0.save. confguratin()

作用:将所有帶有 .config 的參數儲存到 ODrive 内部 FLASH 中,以便 ODrive 在重新開機後配置的參數仍然有效。

參數設定一覽:

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

配置完成之後,你可以直接輸入指令檢視,你的參數設定是否正确:

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

輸入指令回車,就會輸出目前指令設定的參數值。

輸入代碼:

odrv0.reboot()

或者 對重新Odrive上電一次,

檢測并完成設定項目的儲存

Odrive無刷驅動器 開發過程學習記錄(2)——電機系統的參數配置和校準Odrive無刷驅動器 開發過程學習記錄(2)

四、電機校準

- 1.進行電機特性測量和編碼器校準
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

該指令輸入後,大約2秒鐘後,應聽到電機發出哔聲。 
然後電機将在一個方向上緩慢旋轉幾秒鐘,然後在另一方向上緩慢旋轉幾秒鐘。

           

這個過程是在做什麼?

ODrive 首先測量電機的電氣特性(即電機相電阻和相電感),然後進行編碼器偏移校準。

Odrive無刷驅動器電機校準視訊

- 2.儲存校準結果
odrv0.axis0.motor.config.pre_calibrated =True

輸入此指令後,校準結果就會被Odrive儲存。
           
- 3.使用此指令進入位置控制狀态
 odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL

每次重新開機後,都可以輸入此指令來進入位置控制狀态。

           

此時 ODrive 将保持電機轉子的位置。如果用手去扭動電機軸,電機會試圖阻止轉子被扭動,您可以調高odrv0.axis0.motor.config.current_lim,

這樣電機将能提供更大的扭力去對抗您的旋轉。如果電機進入閉環運作後開始抖動,或在您用手去扭動電機軸後開始抖動,您需要降低控制器增益。

本次電機系統的參數配置和校準完成,下面将設定電機PID與位置控制指令。