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.

[参考译文] 编译 μ C/PGA460:雷达测量结果返回值不正常

Guru**** 2559210 points
Other Parts Discussed in Thread: PGA460, ENERGIA, PGA460-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/635689/pga460-radar-measurement-results-return-value-is-not-normal

器件型号:PGA460
主题中讨论的其他器件: Energia

工具/软件:TI C/C++编译器

详情如下:

配置过程(0x0c 指令 EEPROM->等待100ms->0x0E 指令配置 TVG->等待100ms->0x10指令配置阈值->等待100ms->burg_listen_PRESET1开始测量->等待500ms->0x05指令读取测量结果)。

返回的结果:返回的测量结果为字节0至0x40、但返回的第一组测量值较小(几乎不变)、从第二组随机测量值开始、测量值不随障碍物的距离而变化。

3.PGA460配置

#define UART_ADD 0

#define measure_OBJNUM 8 //要测量的对象数(1~8)

//================================ cmd=========================
#define BURST_Listen_PRESET1 (0 +(UART_Add<5))
#define BURST_Listen_PRESET2 (1 +(UART_Add<5))
#define Listen_PRESET1 (2 +(UART_Add<5))
#define Listen_PRESET2 (3 +(UART_Add<5))

#define READ_MESure_RESULT (5 +(UART_Add<5))

#define SYSTEDIAGNOSTICS (8 +(UART_ADD<<5))//系统诊断
#define REGISTER_READ (9 +(UART_ADDE<<5))
#define REGISTER_WRITE (10 +(UART_Add<<5))
#define EEPROM_READ (11 +(UART_ADDE<<5))
#define EEPROM_WRITE (12 +(UART_Add<<5))
#define TVG_READ (13 +(UART_Add<5))
#define TVG_WRITE (14 +(UART_Add<5))
#define threshold_read (15 +(UART_Add<5))
#define threshold_write (16 +(UART_Add<5))

//================================ EEPROM CFG 值(完全闭合的探测器)===================
#define USER_Data1 0
#define USER_DATA2 0
#define USER_DATA3 0
#define USER_DATA4 0
#define USER_Data5 0
#define USER_DATA6 0
#define USER_DATA7 0
#define USER_DATA8 0
#define USER_DATA9 0
#define USER_DATA10 0
#define USER_DATA11 0
#define USER_DATA12 0
#define USER_DATA13 0
#define USER_DATA14 0
#define USER_DATA15 0
#define USER_DATA16 0
#define USER_DATA17 0
#define USER_DATA18 0
#define USER_DATA19 0
#define USER_DATA20 0

#define TVGAIN0 0x88
#define TVGAIN1 0x88
#define TVGAIN2 0x88
#define TVGAIN3 0x82
#define TVGAIN4 0x08
#define TVGAIN5 0x20
#define TVGAIN6 0x80 //50%电平
#define INIT_GAIN 0x54 //01010100
#define 频率0x32/0x8F
#define 死区时间0xa0
#define PULSE_P1 0x04 //4脉冲
#define PULSE_P2 0x10
#define CURR_LIM_P1 0x55 //电流限制21*7+50(MA)
#define CURR_LIM_P2 0x55
#define REC_LENGTH 0x19
#define FREQ_DIAG 0x33
#define SAT_FDIAG_TH 0xee
#define FVOLT_DEC 0x7c
#define DECPL_TEMP 0x4f //52~84dB
#define DSP_SCALE 0x00
#define TEMP_TRIM 0x00
#define P1_GAIN_CTRL 0x09
#define P2_GAIN_CTRL 0x09


//================================================ threshold========================================================================
#define P1_THR_0 0x88
#define P1_THR_1 0x88
#define P1_THR_2 0x88
#define P1_THR_3 0x88
#define P1_THR_4 0x88
#define P1_THR_5 0x88
#define P1_THR_6 0x84
#define P1_THR_7 0x21
#define P1_THR_8 0x42
#define P1_THR_9 0x10
#define P1_THR_10 0x10
#define P1_THR_11 0x80
#define P1_THR_12 0x80
#define P1_THR_13 0x80
#define P1_THR_14 0x80
#define P1_THR_15 0x00
#define P2_THR_0 0x88
#define P2_THR_1 0x88
#define P2_THR_2 0x88
#define P2_THR_3 0x88
#define P2_THR_4 0x88
#define P2_THR_5 0x88
#define P2_THR_6 0x84
#define P2_THR_7 0x21
#define P2_THR_8 0x42
#define P2_THR_9 0x10
#define P2_THR_10 0x10
#define P2_THR_11 0x80
#define P2_THR_12 0x80
#define P2_THR_13 0x80
#define P2_THR_14 0x80
#define P2_THR_15 0x00

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我现在使用40KHz、可以检测40cm 以上的距离、40cm 将无法检测、但我的应用需要检测10cm 的距离。 我想问是否可以实现200kHz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    I 查尔斯、

    1.您的配置过程是有效的,因此我对此没有任何顾虑。

    2.您能否共享整个超声波测量结果命令的所有值? 我假设如果这些值大部分保持不变、则必须优化阈值。

    • 您是如何设置阈值的?  您似乎正在使用来自 Energia 示例代码的中间代码值示例。
    • 您是否有可用于进一步优化和映射阈值的 EVM?
    • 如果将要检测的物体数量增加到8、这些值中是否有任何一个值会根据物体的实际距离发生变化?
    • 您能否还在 DEV_STAT0寄存器中检查 THR_CRC_ERR 的位状态。 为了启用突发+监听命令、该位的值必须为0。 如果批量阈值命令成功执行、该位将自动清零。
    • 我看到您正在使用 DECPL 引脚。 您是否使用时间或温度去耦模式? 由于变压器通过 DECPL FET 接地、因此必须对变压器驱动器使用时间去耦模式。  注意:DECPL 引脚是一项可选功能;如果不需要此功能、您可以直接将变压器和调谐电容器接地。
    • 您是否已确认在突发+监听期间通过探测传感器正极端子来正确激励传感器? 峰间电压是多少?
    • 您使用的是什么传感器器件型号?

    我怀疑您遇到了 PGA460常见问题解答中讨论的类似问题(具体而言、www.ti.com/.../slaa733);、常见问题解答 5.2和5.6 (链接的文档包括支持图像):

    5.2 如何检测超过八个物体?

    我是否可以设置阈值、以便在突发突发后的给定时间内忽略振铃衰减纹波或物体? 如何使用阈值偏移? 当阈值级别设置为255时、可以将阈值映射设置为在记录窗口的任意点忽略超声波活动。 用户可能需要考虑在初始突发和衰减期间将阈值设置为255。 即使在突发窗口期间或强返回峰值等返回数据饱和时、阈值比较器也不会在最大化阈值时触发。 对于阈值水平1-8、只有当阈值水平最大化到248、且阈值偏移设置为最大正值+7时、才能达到255。 此偏移适用于所有1-8电平。 对于9-12级、偏移不适用、这些级可被独立设定为255。

    5.6 超声波测量结果数据是随机的、非常短的、始终是最大值、或永远不会更新。

    在超声波测量结果可用于任何用途之前、必须根据回波数据转储曲线映射阈值以进行物体检测。 使用中代码阈值时序和电平选项可绕过手动阈值优化的需要。 中间代码选项将阈值设置为固定的50%检测级别。

    如果阈值已正确设置、并且返回的值始终小于10cm、则阈值最初设置过高、但未最大化。 在低模拟增益下、提供给数据比较器的 DSP 输出用于检测突发和衰减窗口期间阈值交叉最初斜升的情况。 因此、回波数据转储等效值不会立即饱和、因为它在模拟域中表示、因此阈值比较器可能会由最初斜升的 DSP 输出错误触发。 为了防止这种误触发、首先将阈值设置为最大值255、增加阈值抗尖峰脉冲时间或降低阈值、使斜升处于高于阈值电平的初始值。 或者、将初始增益设置为一个较大的值、这样斜升被饱和、并且不会触发阈值。

    最佳做法是在预期的突发和初始衰减窗口期间将 TVG 和/或 SR 数字增益初始化为大值、并在衰减周期的稍后部分将 TVG 从根本上降低为低值、以实现短距离检测。

    如果阈值始终为最大值、则阈值在整个系统配置中设置得过高、或者未检测到任何物体。 降低阈值电平以强制触发阈值比较器。 强制触发将确认突发和监听命令是否真正执行。 如果超声波测量结果(UMR)未更新、请确保禁用 EE_CNTRL 寄存器的 DATAMUMP_EN 位(默认)。 如果启用了 DATAMUMP_EN 位、则回波数据转储存储器将被填满、并且由于阈值比较器被禁用、UMR 将不会更新。 只能填充回波数据转储存储器、或者捕获超声波测量结果、但不能同时捕获这两个结果。 当 GUI 显示回波数据转储并捕获超声波测量结果时、会按顺序运行两个独立的突发和监听命令。


    您还可以运行 传感器回波数据转储读取(命令7)以目视检查回波数据转储配置文件。

    • 您能否在物体位于30cm 处的情况下提供128字节 EDD 输出?

    如果您需要在单静态配置中可靠地检测10cm 的向下、则可以使用180-480kHz 范围内的高频传感器。 请参阅 https://e2e.ti.com/support/sensor/ultrasonic/f/991/p/628579/2343961上最近的 E2E 讨论 、其中讨论了高频传感器半桥驱动器的实现。

    您还可以使用变压器驱动器来激励高频传感器。 如果您正在寻找一个频率接近200kHz 的传感器谐振、我建议您使用 Massa 200639-501 (E-188/220型)传感器。

    您可以在 https://e2e.ti.com/support/sensor/ultrasonic/f/991/t/620399上找到高频传感器和变压器的完整列表

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的应用是传感器为5~40cm 以检测物体的距离、现在使用40kHz 传感器、发现检测35cm 以上是有效的、检测以下35cm 物体、接收到的反馈值不准确、对于我的应用、 由于我的换能器面向天空、当使用40kHz 换能器时、我收到的反馈结果是固定的、我想根据反馈值的变化确定是否有物体、 只要反馈不是为了确定物体的存在、我就不需要获得特定距离、是否可行?是否存在风险?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、
    如果您的应用需要5~40cm 的检测、您可以选择使用:
    •双静态低频(40kHz)传感器对。
    •单静态高频(180-480kHz)传感器。

    PGA460可以实现对检测对象存在的描述。 PGA460的阈值允许您将阈值打包为无对象配置文件。 对于您的应用、当传感器面向天空且没有物体时、您会将阈值环绕在突发和监听模式周围。 每当对象超过三个售出的对象时、它将指示对象是否存在。 PGA460将计算距离计算的飞行时间、并将该值作为非0xFFFF 值报告给主器件。

    有关 如何相对于本底噪声设置阈值的示例、请参阅 PGA460常见问题解答5.3的图像(www.ti.com/.../slaa733.pdf):

    5.3我能否自动设置阈值映射?
    PGA460不会实现自动阈值映射、但主控制器可以实现
    函数、根据无物体突发和监听的平均回波数据转储来设置阈值
    (NOBAL)配置文件。 应运行并记录 NOBAL 命令的多个迭代(如100)
    以收集本底噪声的可靠运行平均值。 然后映射阈值、以便进行时序
    在所有12个阈值点中、间隔点以刚好在相应阈值的记录时间长度内或其长度之外
    复位。 这些级别将根据中各级别之间的最坏情况值进行设置
    问题和后续级别。 应添加8个或更多小数点空格的额外裕度
    阈值电平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查尔斯
    我还建议您观看"使用 PGA460-Q1进行超声波感应"视频系列(training.ti.com/ultrasonic-sensing-pga460-q1) 、了解如何设置阈值的示例。