發布日期:2022-04-26 點擊率:94
下載 PDF 版
作者:K. Robert Bate,
Allegro MicroSystems, LLC
無論是工業自動化和機器人技術,還是電動助力轉向和電機位置傳感,許多應用都需要監測旋轉軸(以軸上或離軸排列形式)的角度。
在設計中使用磁體時,磁場輸入在整個旋轉范圍很可能不均勻,它存在固有誤差。這些磁場輸入誤差會導致系統內的測量誤差。線性化能減少這些輸入誤差。
A1332 和A1335 可采用的諧波線性化能以最多 15 種修正諧波的形式應用線性化,利用快速傅立葉變換 (FFT) 可確定它們的相位和振幅,根據磁體在角度傳感器 IC 周圍的一次旋轉產生的數據可完成 FFT。通過使用 Allegro 提供的軟件計算系數,并對片內 EEPROM 進行編程,可使用這種技術。本應用說明介紹了,當 Allegro 提供的軟件不夠靈活或要使用定制軟件時,客戶能使用的功能和處理流程。
所有軟件都是在使用 .NET 4.0 的 Microsoft Visual Studio 2010 環境下開發的。請為您要使用的器件下載命令庫 (C#/.NET),并添加到其所含的 3 個 DLL 的項目參考中。
首先,關閉所有后線性化算法處理;這包括零點偏移、后線性化旋轉 (RO)、短行程反轉 (IV) 和旋轉晶片位元 (RD)。預線性化調節可保持開啟,如 ORATE 設置、IIR 過濾器 (FI) 和預線性化旋轉 (LR)。
沿角度增加的位置移動編碼器。如果角度傳感器 IC 的輸出未相應增大,可設置 LR 位元以反轉角度傳感器 IC 輸出的反向,或在校準時沿反方向轉動編碼器,在此情況下,可能需要設置后線性化旋轉位元 (RO)。參閱《A1332/ A1335 編程參考》了解更多詳情。
最佳收集方法是按間距相等的步數旋轉目標,這樣產生的數據點數量就是 2 的冪數。通常,32 或 64 個間距均勻的數據點就足夠了。如果不能實現,可收集數據點,然后必須按下節介紹的方法預處理數據。
另一種收集所需數據點的方法是多次旋轉目標,然后按預定義的間隔收集數據。當收集到足夠的數據點覆蓋目標的整個旋轉范圍時,接下來必須按下節介紹的方法預處理數據。
如果收集的數據點數量不是 2 的冪數,或者收集的數據點間距不等,必須調整數據點數組的長度并/或使它們間距相等。要對數據執行此操作,可調用 ResizePointArray 例程。
參數 x 是編碼器數值的數組,參數 y 是在該編碼器數值中收集的器件讀數。參數 newSize 是重新調整的數組大小。如果參數 x 設置為空,則假設已按從 0 開始至 360 結束的相等間距收集數值 y。如果參數 x 不是空,則需要在調整數組大小前,為輸入數組排序。
double[] ResizePointArray(double[] x, double[] y, int newSize)
此例程會在輸入數組上執行三次樣條插值,以采用所需的數據點數量,生成間距相等的數組。
數據收集完畢,并形成長度為 2 的冪數的數組后,就可以計算諧波系數了。要計算諧波系數,可調用 CalculateHarmonicLinearCoefficients 例程。
HarmonicCoefficients[] CalculateHarmonicLinearCoefficients (double[] points, out bool pointError)
其輸入是已收集的角度數組。此例程會執行 FFT,并會返回系數數組和一個警告標記。當一個或多個輸入角比例程計算的角度大 20 度時,需要設置點誤差警告標記。
以一個包含 8 個輸入項的數組為例,例程計算的角度應為 [0, 45, 90, 135, 180, 225, 270, 315]。如果輸入數組是 [0, 45, 90, 135, 180, 204, 270, 315],則例程會設置 pointError,因為第 6 個輸入項的誤差超過 20 度。
當所有諧波系數已計算完畢后,必須選擇所需的諧波。通常,計算例程生成的諧波數量會超過器件能支持的諧波數量,所以,必須選擇一些算法以選擇相關的諧波。
使用諧波的數量還取決于所用的器件種類和功能。A1332 的諧波最大數量是 15,但如果使用最大值,一些可編程的功能會使用默認值,如短行程設置和特定的 I2C 與 SPI 設置。不使用默認值時,這些可編程功能的諧波最大數量是 9。A1335 的諧波最大數量是 11,但要達到此數量,一些可編程功能會使用默認值,如短行程設置。不使用默認值時,這些可編程功能的諧波最大數量是 8。
最簡單的算法是按照所需的諧波數量選擇第一個諧波。這種方法很簡單,它選擇的諧波不會對輸出產生顯著的影響。
Allegro A1335 的示例編程器目前使用的算法是選擇振幅大于 0.3 的諧波。需要注意的是,當前軟件的一個限制是在所選諧波之間只能跳過 4 個諧波。如果跳過的諧波超過 4 個,還需要選擇最后一個選定諧波和所需諧波之間的所有諧波。
諧波選擇完畢后,可調用例程 GenerateHarmonicLinearizationDevicevalues 生成要寫入器件的數值。
HarmonicDevicevalues[] GenerateHarmonicLinearizationDevicevalues (HarmonicCoefficients[] coefficients)
諧波系數傳遞到此例程中,它會返回器件編程所需的一組數值。此例程拋出的唯一異常是在所選系數之間跳過 4 個以上諧波系數的情形。
要對器件進行諧波線性化編程,必須設置 HL 標記,必須將 HAR_MAX 字段設置為要使用的系數數量,同時必須編寫 HARMONIC_PHASE_n、ADV_n 和 HARMONIC_AMPLITUDE_n 字段。
using System;
using Allegro.ASEK;
namespace HarmonicLinearizationExample
{
public class HarmonicLinearizationExample
{
public HarmonicLinearizationExample()
{
}
public void ProgramHarmonicLinearization(string filePath, ASEK asekProgrammer)
{
try
{
HarmonicCoefficients[] hc;
bool pointError = false;
double[] points = null;
string fieldBuffer = File.ReadAllText(filePath);
string line;
List
此文件包含一個角度值列表。如果有兩個數值被逗號隔開,則第一個數值是編碼器角度,第二個數值是器件角度。行可以是空白的,如果它們以 # 打頭,則可將其視為注釋。
角度輸入文件實例:
329.59
354.81
6.832
13.566
17.592
20.228
22.638
24.638
25.956
27.454
28.77
30.054
30.966
包含兩列時:
0,123
22.5,145.5
45,168
67.5,190.5
90,213
112.5,235.5
135,258
157.5,280.5
180,303
202.5,325.5
225,348
247.5,10.5
270,33
292.5,55.5
315,78
337.5,100.5
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV