使用IFX007T和磁角傳感器TLE5012B如何實(shí)現(xiàn)平穩(wěn)運(yùn)行與精確的速度和位置控制
掃描二維碼
隨時(shí)隨地手機(jī)看文章
SimpleFOC(場定向控制)庫實(shí)現(xiàn)了一種先進(jìn)的算法,可確保平穩(wěn)運(yùn)行和高度的扭矩,速度和位置控制。無論您是剛剛開始并尋找一種簡單直觀的方法來控制您的BLDC和步進(jìn)電機(jī),還是您是想要深入研究FOC算法的復(fù)雜性以優(yōu)化特定應(yīng)用程序和硬件的代碼的高級(jí)用戶,本指南都適合您。
通過利用IFX007T BLDC電機(jī)驅(qū)動(dòng)器屏蔽和TLE5012B磁角傳感器的功能,您將學(xué)習(xí)如何使用Arduino的SimpleFOClibrary來創(chuàng)建精確高效的電機(jī)控制系統(tǒng)。本指南將引導(dǎo)您完成設(shè)置和配置,確保您徹底了解如何實(shí)現(xiàn)最佳性能。
了解無刷直流電機(jī)和閉環(huán)控制
無刷直流電機(jī)缺乏物理電刷來換向繞組。相反,它們依賴于電子換向,其中控制器根據(jù)轉(zhuǎn)子位置在電機(jī)相位之間切換功率。
開環(huán)控制(例如,基本PWM驅(qū)動(dòng))迫使電機(jī)遵循預(yù)定義的相位模式?jīng)]有反饋。雖然簡單,但這種方法難以應(yīng)對(duì)不同的負(fù)載,缺乏扭矩精度,并且有失速的風(fēng)險(xiǎn)。
閉環(huán)控制通過連續(xù)監(jiān)測(cè)轉(zhuǎn)子位置并相應(yīng)地調(diào)整相電流來解決這些問題。這需要兩個(gè)關(guān)鍵組成部分:
角度傳感器:測(cè)量轉(zhuǎn)子位置(TLE5012B)??刂扑惴ǎ簞?dòng)態(tài)調(diào)節(jié)電流(FOC)。
為什么是場定向控制(FOC)?
傳統(tǒng)的控制方法如梯形換向?qū)﹄姍C(jī)相進(jìn)行獨(dú)立處理,導(dǎo)致轉(zhuǎn)矩脈動(dòng),效率低下。FOC采用了更聰明的方法:
數(shù)學(xué)轉(zhuǎn)換:FOC將三相電流轉(zhuǎn)換為旋轉(zhuǎn)的兩軸系統(tǒng)(d-q坐標(biāo)),將扭矩產(chǎn)生(q軸)與磁通(d軸)解耦。
精確控制:通過直接控制扭矩和磁通組件,F(xiàn)OC最大限度地減少損失,減少熱量,即使在低速下也能平穩(wěn)運(yùn)行。
硬件
1. IFX007T屏蔽疊加
IFX007T電機(jī)驅(qū)動(dòng)屏蔽與英飛凌的XMC4700 Relax Kit或任何其他arduino兼容板集成。只需將IFX007T屏蔽板堆疊在XMC板的頂部。這提供了:
3x PWM輸出電機(jī)相位
過電流/熱保護(hù)
高達(dá)40V電機(jī)電源兼容性
注意:對(duì)于非xmc板(例如Arduino Uno),請(qǐng)手動(dòng)連接IFX007T的PWM引腳(U/V/W)并啟用引腳(EN_U/EN_V/EN_W)。
2. 連接TLE5012B角度傳感器
TLE5012B的3線SPI接口簡化了集成:
CS (Chip Select):連接到GPIO引腳。SCK/MISO/MOSI:連接到電路板的專用SPI引腳(見原理圖)。
關(guān)鍵步驟:安裝傳感器的磁鐵同心電機(jī)軸。即使是1毫米的偏差也會(huì)降低精度。
軟件安裝
1. 開始使用Arduino IDE和XMC板
要開始使用XMC板編程,您需要設(shè)置Arduino IDE。按照我們的分步指南開始使用XMC for Arduino文檔。
開始吧!
準(zhǔn)備好一切后,我們準(zhǔn)備將第一個(gè)代碼示例閃爍到微控制器。為了做到這一點(diǎn),你必須在Arduino IDE中執(zhí)行以下步驟:
1.選擇合適的棋盤
一旦安裝了XMC板系列,您可以從菜單中選擇支持的板之一:Tools > board >英飛凌的XMC微控制器。在我們的情況下,我們必須選擇XMC4700放松套件,以便選擇正確的板。
SFOC和TLE5012B(磁角傳感器)
TLE5012是一種通過SPI通信的磁性角度傳感器。它提供了精確的角度測(cè)量,這是必不可少的電機(jī)控制應(yīng)用。要將其與SimpleFOC一起使用,我們需要?jiǎng)?chuàng)建一個(gè)自定義傳感器類,該類擴(kuò)展SimpleFOC提供的sensor基類。
我們創(chuàng)建了一個(gè)自定義類stle5012sensor,它擴(kuò)展了Sensor類。這個(gè)類將處理從TLE5012傳感器的初始化和角度讀取。
TLE5012傳感器類有:
?用SPI引腳初始化傳感器的構(gòu)造函數(shù)。
?初始化傳感器硬件的init()方法。
?一個(gè)以弧度為單位讀取角度的getSensorAngle()方法。
在setup()函數(shù)中,我們通過調(diào)用TLE5012Sensor類的init()方法來初始化TLE5012傳感器。這將設(shè)置SPI通信并確保傳感器準(zhǔn)備好提供數(shù)據(jù)。
在loop()函數(shù)中,我們使用sensor類提供的update()、getAngle()和getVelocity()方法連續(xù)讀取傳感器角度和速度。這些值被打印到Arduino的串行監(jiān)視器上進(jìn)行調(diào)試。
TLE5012傳感器提供以度為單位的角度。我們將其轉(zhuǎn)換為弧度,因?yàn)镾impleFOC使用弧度進(jìn)行角度計(jì)算。換算公式為:
在初始化過程中,我們檢查錯(cuò)誤并將它們打印到串行監(jiān)視器(如果有的話)。這有助于調(diào)試硬件或通信問題。
將代碼上傳到XMC4700并打開串行監(jiān)視器(設(shè)置為115200波特)。您應(yīng)該看到每100毫秒打印一次角度和速度值。這確認(rèn)傳感器工作正常。
通過遵循這些步驟并使用提供的代碼,您可以成功地將TLE5012傳感器與SimpleFOC庫集成!
SFOC和IFX007T(開環(huán)控制)
?這將創(chuàng)建一個(gè)BLDCMotor類的實(shí)例。
構(gòu)造函數(shù)參數(shù)為:
極對(duì):電機(jī)中的極對(duì)數(shù)(這里為4)。
R:電機(jī)的相電阻,以歐姆為單位(這里為0.73歐姆)。
?這些線定義了用于電機(jī)相位(U, V, W)和使能引腳(EN_U, EN_V, EN_W)的引腳。
?創(chuàng)建了一個(gè)BLDCDriver3PWM實(shí)例,它使用三個(gè)PWM信號(hào)控制電機(jī)。
?Target_position是一個(gè)浮點(diǎn)變量,以弧度為單位保存電機(jī)的目標(biāo)位置。Commander用于串行通信,允許通過串行命令設(shè)置目標(biāo)位置,電壓限制和速度限制等參數(shù)。
?設(shè)置函數(shù)初始化引腳、串行通信和電機(jī)驅(qū)動(dòng)器。
?設(shè)置電源電壓(driver.voltage_power_supply)為12V,限制驅(qū)動(dòng)電壓為6V。
?電機(jī)的電壓限制設(shè)置為3V,速度限制為5 rad/s。
?運(yùn)動(dòng)控制類型設(shè)置為angle_openloop,這意味著電機(jī)將在開環(huán)控制中運(yùn)行,其中角度控制無反饋。
?Commander配置為允許串行命令設(shè)置目標(biāo)角度,電壓限制和速度限制。
?回路功能使用開環(huán)控制將電機(jī)連續(xù)移動(dòng)到target_position。
?command.run()允許通過串行命令實(shí)時(shí)調(diào)整電機(jī)參數(shù)。
SFOC和IFX007T(閉環(huán)控制)
TLE5012傳感器向電機(jī)控制器提供實(shí)時(shí)角度反饋。閉環(huán)控制:電機(jī)利用傳感器反饋精確達(dá)到目標(biāo)角度。串行命令:您可以使用串行監(jiān)視器通過發(fā)送T命令,然后以弧度為單位發(fā)送所需的角度來設(shè)置目標(biāo)角度。
這些引腳用于與TLE5012傳感器進(jìn)行SPI通信。
TLE5012Sensor對(duì)象用SPI引腳初始化。
BLDCMotor對(duì)象表示電機(jī),BLDCDriver3PWM對(duì)象使用PWM信號(hào)控制電機(jī)。
target_angle變量存儲(chǔ)所需的電機(jī)位置。Commander類允許通過串行監(jiān)視器設(shè)置目標(biāo)角度
setup()函數(shù)初始化電機(jī)、傳感器和驅(qū)動(dòng)器,并配置控制參數(shù)。
loop()函數(shù)持續(xù)運(yùn)行FOC算法,并根據(jù)目標(biāo)角度更新電機(jī)位置。
總結(jié)
通過結(jié)合XMC4700, IFX007T的強(qiáng)大驅(qū)動(dòng)和TLE5012B的精密傳感,您創(chuàng)建了一個(gè)非常強(qiáng)大的電機(jī)控制系統(tǒng)。簡單的FOC抽象了復(fù)雜的數(shù)學(xué),讓您專注于應(yīng)用程序邏輯,無論您是構(gòu)建CNC機(jī)器,機(jī)械臂還是自主無人機(jī)。
本文編譯自hackster.io