工具/软件:
您好、
1)是否在 AM243的 C 代码中硬编码了位置命令、或者是否有通过主机发送命令的方法?
2)使用 LUT -你能详细说明为什么? 我以前使用 FIR 滤波器时会用到它们、但在本例中您使用的是同步滤波器
谢谢
Geoffrey
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好、
1)是否在 AM243的 C 代码中硬编码了位置命令、或者是否有通过主机发送命令的方法?
2)使用 LUT -你能详细说明为什么? 我以前使用 FIR 滤波器时会用到它们、但在本例中您使用的是同步滤波器
谢谢
Geoffrey
您好 Geoffrey、
请查找我的答案:
1) 位置数据通过以太网协议 SORTEG 传输、时序在 PRU FW 中预配置。 所以、有点硬编码。 SORTE_G 主器件将在预定义的时隙向 SORTE_G 器件发送请求、然后在每个 PWM 周期内接收到6轴位置数据。 例如16kHz
2) LUT 用于存储时间的倒数、因为 PRU 没有除法命令。 您指的是同步滤波器?
此致、
Chen
尊敬的 Geoffrey:
请在下面找到我的答案。
2)编码器软件利用三个查找表(LUT)。
第一个 LUT 包含方向信息、按顺时针方向指示为0、按逆时针方向指示为1、"F"表示无效状态。 通过组合 A 和 B 信号的先前和当前状态来形成索引值来确定方向、然后使用该索引值从 LUT 检索相应的方向。
第二个 LUT 存储时间转换的计算值:(1/T)*(2^32)、其中 T 表示以纳秒为单位的时间范围。 这基本上是用32位小数以 Q 格式反转时间、并在计算电机转速时非常有用。
使用以下公式计算电机转速:((62.5µs 窗口内 A 和 B 边沿的数量/ 4000)*(1/x)* 60)。 变量"x"表示第一个边沿和最后一个边沿之间的时间、该时间根据电机转速而变化。 由于没有直接的 asm 指令来计算反向、因此将 LUT 用于此目的。 在此公式中、4000表示编码器中的总边沿数、其中预先计算的常量值(1/4000)直接在代码中使用。 可访问来自 LUT 的两个值并进行内插、以便在必要时估算中间计算。
要确定240RPM 以上的速度、请使用上述方法。 相反、对于较低的 RPM、会在使用第三个 LUT 和预先计算的 RPM 值的代码的不同部分之间进行切换。 同样、可访问来自 LUT 的两个值并进行内插、以便在必要时估算中间计算。