网上有很多关于pos机固件校验,使用TMC4671驱动直线电机的知识,也有很多人为大家解答关于pos机固件校验的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!
本文目录一览:
1、pos机固件校验
pos机固件校验
在上一篇博文中,我们能够确定级联控制器回路的稳定P-I参数。有了这些知识,我们想向您展示我们是如何创建一个小的示例程序的,并放入Landungsrbücke的固件中。
此代码的基本功能是初始化步进电机控制的TMC4671。这是在init_Basics(…)中通过编写几个配置寄存器来完成的,而reset_Basics(…)将此工作中使用的所有寄存器重置为定义的0状态。这将取代IDE配置向导中使用默认按钮的第一步。
配置ABN(…)-功能将在功率因数调整转子至0后将ABN计数设置为0。要做到这一点,我们还需要对磁通施加电压。
init_PosMode(…)设置TMC4671进入位置模式的正确寄存器。
使用TMC4671_setAbsolutTargetPosition(…)将控制器的目标位置设置为所需值,使电机转动,直到达到目标位置。这里的绝对位置总是指我们在configure_ABN(…)函数中配置的零位置。
注:如果您希望相对于实际位置移动,可以使用函数TMC4671_setRelativeTargetPosition(…)。
为了找到我的设置的最小和最大位置,我在“查找目标位置”(…)中选择了两个无法到达的目标位置。对我来说,这是500000和-500000。控制器等待一定时间以确保它到达结束位置。然后用函数TMC4671_getActualPosition(…)保存实际位置。另一个方向也进行同样的设置。两个端点的值现在可以用于新的目标位置,可以再次使用TMC4671_setAbsolutTargetPosition(…)来设置。
运行时也可以使用线性坡道加速和减速, 使用函数TMC_ramp_linear_compute(…)和类型为TMC_LinearRamp的结构来实现这个功能(您可以在文件LinearRamp1.h和LinearRamp1.c中的API中找到更多信息)。这将在软件中创建一个包含我们的轨迹信息的斜坡。我还使用上述文件中的相应函数设置了结构的一些参数。我可以使用结构中的TMC_ramp_linear_set_target position(…)设置渐变的目标位置。之后,我使用TMC4671_setAbsolutTargetPosition(calculated_ramp)中计算出的斜坡位置, 循环工作直到达到实际目标位置,。
斜坡有什么作用?我们不是设定一条指令可以到达的绝对目标位置,而是将轨迹划分为多个子目标位置。在循环的每次迭代中,我们增加目标位置,控制器将调整到新的目标。然而,Landungsbrücke增加目标位置的速度比我们控制器的自适应速度高,因此随着时间的推移,目标位置和实际电机位置之间的差异增大。当实际位置和目标位置之间的偏移量增加时,这会导致电机加速。
减速则相反。Landungsbrücke将降低设定目标位置的速度,控制器将慢慢跟上,直到到达终点位置。
为了提高马达的速度,我把实际的斜坡位置乘以1024倍。这必须通过将软件斜坡的目标位置除以1024来补偿。这样我们就可以根据我们的应用来调整斜坡,并增加马达的加速度和速度。
为什么要使用(软件)渐变?基本上,它给了我们一个更稳定的方法来达到我们的目标位置,因为我们有一个确定的加速和减速的方法,它大大减少了超过目标的可能性。
Landungsbrücke在TMC4671寄存器中交替这些目标位置,因此电机将交替滑动的位置。
使用完成的代码,我为Landungsrbücke的引导加载程序生成一个十六进制文件,并使用TMCL-IDE更新它。
希望你能利用一些显示的例子,以便你转换数字信息为你的项目的物理运动!
使用以下代码,将初始化我的驱动器,执行编码器初始化,并在两个末端停止上执行重设原点。然后,执行来回运动。
我可以用TMCL-IDE将固件上传到Landungsbrücke,开机后它会自动启动。我可以通过RTMI监控系统行为。
代码示例:#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中国区代理商深圳智联微 更多TMC系列型号推荐 +VX王工13924655249 可技术支持 可样品支持 可产品调试
以上就是关于pos机固件校验,使用TMC4671驱动直线电机的知识,后面我们会继续为大家整理关于pos机固件校验的知识,希望能够帮助到大家!
