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:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL3lEVNNTVE9UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zRQpkLwkjN2IjNyYTM5ETMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
連接配接流程:24V電源——USB接口——功率耗散電阻——盤式無刷電機——編碼器
配置主要經過四大步驟:
1.配置電機限制值以及硬體參數
2.編碼器配置
3.參數儲存
4.點選校準
一、 電機基礎配置
1.Win+R打開運作框, 輸入cmd打開指令終端
2.Odrive連接配接電腦,并電源供電,PWR燈亮
3.在指令終端輸入“odrivetool”,打開Odrive工具
打開後顯示已連接配接 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 = ?
該指令作用是: 設定無刷電機中磁極對數,
這是電機固有參數,可以通過數磁極數或者電機廠家提供的磁極參數獲得。
下圖為本次使用電機的參數。
例如:因為定子極數為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 在重新開機後配置的參數仍然有效。
參數設定一覽:
配置完成之後,你可以直接輸入指令檢視,你的參數設定是否正确:
輸入指令回車,就會輸出目前指令設定的參數值。
輸入代碼:
odrv0.reboot()
或者 對重新Odrive上電一次,
檢測并完成設定項目的儲存
四、電機校準
- 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與位置控制指令。