網(wǎng)上有很多關(guān)于pos機固件校驗,使用TMC4671驅(qū)動直線電機的知識,也有很多人為大家解答關(guān)于pos機固件校驗的問題,今天pos機之家(www.shbwcl.net)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機固件校驗
pos機固件校驗
在上一篇博文中,我們能夠確定級聯(lián)控制器回路的穩(wěn)定P-I參數(shù)。有了這些知識,我們想向您展示我們是如何創(chuàng)建一個小的示例程序的,并放入Landungsrbücke的固件中。
此代碼的基本功能是初始化步進電機控制的TMC4671。這是在init_Basics(…)中通過編寫幾個配置寄存器來完成的,而reset_Basics(…)將此工作中使用的所有寄存器重置為定義的0狀態(tài)。這將取代IDE配置向?qū)е惺褂媚J按鈕的第一步。
配置ABN(…)-功能將在功率因數(shù)調(diào)整轉(zhuǎn)子至0后將ABN計數(shù)設(shè)置為0。要做到這一點,我們還需要對磁通施加電壓。
init_PosMode(…)設(shè)置TMC4671進入位置模式的正確寄存器。
使用TMC4671_setAbsolutTargetPosition(…)將控制器的目標位置設(shè)置為所需值,使電機轉(zhuǎn)動,直到達到目標位置。這里的絕對位置總是指我們在configure_ABN(…)函數(shù)中配置的零位置。
注:如果您希望相對于實際位置移動,可以使用函數(shù)TMC4671_setRelativeTargetPosition(…)。
為了找到我的設(shè)置的最小和最大位置,我在“查找目標位置”(…)中選擇了兩個無法到達的目標位置。對我來說,這是500000和-500000。控制器等待一定時間以確保它到達結(jié)束位置。然后用函數(shù)TMC4671_getActualPosition(…)保存實際位置。另一個方向也進行同樣的設(shè)置。兩個端點的值現(xiàn)在可以用于新的目標位置,可以再次使用TMC4671_setAbsolutTargetPosition(…)來設(shè)置。
運行時也可以使用線性坡道加速和減速, 使用函數(shù)TMC_ramp_linear_compute(…)和類型為TMC_LinearRamp的結(jié)構(gòu)來實現(xiàn)這個功能(您可以在文件LinearRamp1.h和LinearRamp1.c中的API中找到更多信息)。這將在軟件中創(chuàng)建一個包含我們的軌跡信息的斜坡。我還使用上述文件中的相應(yīng)函數(shù)設(shè)置了結(jié)構(gòu)的一些參數(shù)。我可以使用結(jié)構(gòu)中的TMC_ramp_linear_set_target position(…)設(shè)置漸變的目標位置。之后,我使用TMC4671_setAbsolutTargetPosition(calculated_ramp)中計算出的斜坡位置, 循環(huán)工作直到達到實際目標位置,。
斜坡有什么作用?我們不是設(shè)定一條指令可以到達的絕對目標位置,而是將軌跡劃分為多個子目標位置。在循環(huán)的每次迭代中,我們增加目標位置,控制器將調(diào)整到新的目標。然而,Landungsbrücke增加目標位置的速度比我們控制器的自適應(yīng)速度高,因此隨著時間的推移,目標位置和實際電機位置之間的差異增大。當實際位置和目標位置之間的偏移量增加時,這會導(dǎo)致電機加速。
減速則相反。Landungsbrücke將降低設(shè)定目標位置的速度,控制器將慢慢跟上,直到到達終點位置。
為了提高馬達的速度,我把實際的斜坡位置乘以1024倍。這必須通過將軟件斜坡的目標位置除以1024來補償。這樣我們就可以根據(jù)我們的應(yīng)用來調(diào)整斜坡,并增加馬達的加速度和速度。
為什么要使用(軟件)漸變?基本上,它給了我們一個更穩(wěn)定的方法來達到我們的目標位置,因為我們有一個確定的加速和減速的方法,它大大減少了超過目標的可能性。
Landungsbrücke在TMC4671寄存器中交替這些目標位置,因此電機將交替滑動的位置。
使用完成的代碼,我為Landungsrbücke的引導(dǎo)加載程序生成一個十六進制文件,并使用TMCL-IDE更新它。
希望你能利用一些顯示的例子,以便你轉(zhuǎn)換數(shù)字信息為你的項目的物理運動!
使用以下代碼,將初始化我的驅(qū)動器,執(zhí)行編碼器初始化,并在兩個末端停止上執(zhí)行重設(shè)原點。然后,執(zhí)行來回運動。
我可以用TMCL-IDE將固件上傳到Landungsbrücke,開機后它會自動啟動。我可以通過RTMI監(jiān)控系統(tǒng)行為。
代碼示例:#include "boards/Board.h"#include "hal/derivative.h"#include "hal/HAL.h"#include "tmc/IdDetection.h"#include "tmc/TMCL.h"#include "tmc/VitalSignsMonitor.h"#include "tmc/BoardAssignment.h"#include "tmc/ramp/LinearRamp1.h"#include "TMC-API/tmc/ic/TMC4671/TMC4671.h"#include "TMC-API/tmc/ic/TMC4671/TMC4671_Register.h" //As I use the names of its registers this needs to be included//mydefines#define STATE_START_INIT 1#define STATE_RUN_1 2#define STATE_RUN_2 3#define UD_EXT 3202//Torque-Flux Limits 15000#define TORQUE_FLUX_LIMIT 10000//Velocity Limit 10000#define VELOCITY_LIMIT 10000//P-I-defines#define TORQUE_FLUX_P4952#define TORQUE_FLUX_I 10939#define VELOCITY_P2200#define VELOCITY_I2000#define POSITION_P 45#define POSITION_I 0//for checking motor supply voltage
ADI-Trinamic中國區(qū)代理商深圳智聯(lián)微 更多TMC系列型號推薦 +VX王工13924655249 可技術(shù)支持 可樣品支持 可產(chǎn)品調(diào)試
以上就是關(guān)于pos機固件校驗,使用TMC4671驅(qū)動直線電機的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機固件校驗的知識,希望能夠幫助到大家!









