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.

[参考译文] OPT3101:使用不同颜色目标时测量错误

Guru**** 1641220 points
Other Parts Discussed in Thread: OPT3101, OPT3101EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1308991/opt3101-wrong-measures-with-different-color-target

器件型号:OPT3101

我已经在  AutoHDR 模式下针对10-20cm 的范围执行了 SDK 校准的步骤1。 现在、OPT3101会根据颜色目标报告不同的测量值、但使用黑色目标时、测量值毫无意义。

白色目标、尺寸为520 mm

|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
|000,398,001001741,001066、0、0|-|000,000,000000000,000000、0、 0、0|-|011,910,052052077,000004、0、0、1|-|069、0x1d、 +35、-128.0000|0000161/0003000|

但误差是可以接受的。

白色目标、间距为310mm

|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
|000,270,001001181,001896、0、0、1|-|000,000,000000000,000000、0、 0、0|-|011,364,049689,000003、689,000、0、0|-|068,0x18、 +35、-128.0000|0000697/0003000|

黑色目标、间距为310mm

|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
|000,020,000000090,000443、0、0|-|000,000,000000000,000000、0、 0、0|--|01,192,052052170,000004、0、0、1|--|068、0x14、 +35、-128.0000|0001232/0003000|

在大约500mm

|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
|014,887,065065093,000284、0、0、1|-|000,000,000000000,000000、0、 0、0|--|011,948,052242,000003、242,000、0、0|-|068,0x10、 +34、-128.0000|0001767/0003000|

为什么黑色目标的测量是完全错误的?

此致

罗伯托·塞拉蒂

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

    Roberto、

    在 HDR 模式下、电流可在一个 TX 通道上的2种电流设置之间切换、而借助超级 HDR、TX1可用于添加2种以上的电流设置。

    对于每种电流设置、相位偏移测量都没有在适当的振幅下进行。

    该文档建议在振幅在16000到24000之间的目标距离内进行相位偏移校准。 SDK 中的预设值是任意值、绝对不遵循此规则。 这些值的设置方式如下所示、在 OPT3101Coefficience.cpp 中。

    void environmentalController::manuallySetReferenceDistances(){

    this->refDistancesInmm[0][0]=50;

    this->refDistancesInmm[0][1]=120;

    this->refDistancesInmm[1][0]=60;

    this->refDistancesInmm[1][1]=150;

    this->refDistancesInmm[2][0]=0;

    this->refDistancesInmm[2][1]=0;

    refDistancesInMM 上的索引为[Tx 通道]和[当前设置、0为 H、1为 L]。 为了让他们找到为每个电流和 TX 设置设置设置的正确距离、您需要更改配置、只执行一个电流、对其进行刷写、并查看在多远的距离您可以得到该特定电流的16000代码或 LSB。 在较高的电流下、该距离在白色背景下很远、因此您可以使用较暗的背景以获得较低的振幅设置、但随后您需要记住在执行校准时、哪些电流设置使用了哪些颜色背景。

    知道这些距离后、可以将其输入到 OPT3101Coefficients.cpp 中、然后使用超级 HDR 配置并执行校准。

    该方法用于获取更广的范围、因为它会将 IQ 数据计算移动到其他象限中。 如需更多信息、请查找 IQ 解调技术。

    需要注意的是、该部件不是直接 ToF、而是间接 ToF、需要根据相位角而不是单个脉冲时间计算距离。 这就是该器件要好得多且准确得多的原因。

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

    选择的距离:150mm 和300mm、带有反射目标

    信息::加载相位偏移集

    PhOfft、rfDCod、ilmScl、ilmDac、fqCnt
    017,066,000655、3、31,16384、
    相位、Amplt、SigOl、AmbOl、Amb、tMain、tIlum、tMain (C)、tIlum (C)
    17,721,20106、0、0,070,23623600000、 +39、-128.0000


    PhOfft、rfDCod、ilmScl、ilmDac、fqCnt
    015,594,001311、0、31,16384、
    相位、Amplt、SigOl、AmbOl、Amb、tMain、tIlum、tMain (C)、tIlum (C)
    16,905,11943、0、0,069,23623600000、 +39、-128.0000

    信息::加载相位温度系数集
    信息::加载相位环境系数集

    白色目标测量正常、而黑色目标测量错误。

    300mm 处的黑色目标

    |Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
    |014,960,065413,000397, 0,413,000 0, 0, 1|-|000000, 000000, 0, 0, 0、0|-|013530 059,159,000006、0、0、1|-|069、0x08、 +39、-128.0000|0000441/0003000|

    150mm 处的黑色靶标

    |Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
    |000,030,000000132,000766、0、0、1|-|000,000,000000000,000000、0、 0、0|-|012,463,054493、493,000003、0、0、1|-|068,0x16、 +39、-128.0000|0000813/0003000|

     300mm 白色目标

    |Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
    |000,243,001001064,001789、0、0、1|-|000,000,000000、0、 0、0|-|013,613,059059522,000003、0、0、1|-|068、0x0e、 +39、-128.0000|0002209/0003000|

    白色目标 在150mm 处

    |Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
    |000,155,000000681,004932、0、0、1|-|000,000,000000000,000000、0、 0、0|-|013,132,057418,000003、418,000、0、0、1|-|068,0x07、 +40、-128.0000|0002442/0003000|

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

    我使用了铝箔为校准步骤1获取高振幅值、然后测量白色和黑色目标距离。

    如果我重复校准、有时白色目标测量也会出错、就像黑色目标一样:相位值变为高电平。

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

    Roberto、

     铝箔不是适合校准的背景。 我们的想法是、您需要预期范围内的振幅、基于用于驱动发射极的电流。 您移动反射背景以实现振幅。 如果振幅过高、则使用黑色表面并相应地移动它。

    OPT3101不是直接飞行时间 AFE。 这是间接飞行时间。 它不会按照您的预期发送脉冲和测量返回时间。 输出信号进行调制、返回信号根据解调的 IQ 方法进行测量。 该距离由相位角而不是振幅决定。 振幅对校准很重要的原因是、若要进行校准、您需要确保距离处具有实心振幅、以便可以测量和使用相位角。 共有4个不同的象限可用于确定相位角和距离。 请阅读我发送的消息并尝试理解方法。 您还可以了解有关解调 IQ 的信息。

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

     铝箔不是校准的适当背景。  

    好的,但如果我不使用反射面,我   只能通过173mA 在80毫米的白色目标达到16000代码,而通过43mA 在30毫米的速度达到9000代码。

    我没有使用过 SFH213FA 光电二极管。

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

    Roberto、

     您使用的光电二极管和发射器器件型号是什么?

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

    我正在测试将 TEMD1000作为光电二极管和 SFH 4550作为 IR 指示灯的硬件。

    我有另一个硬件版本的  TEMD1000 和  LTE-C9506B 作为 IR 指示灯、但振幅较低、因为 IR 指示灯由较低的电流(130mA)驱动。

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

    您使用此传感器时要尝试达到的最大距离是多少?

    您是否试用过 OPT3101配置器工具 v0.9.1

    我将查看您的器件选择并尽快回复您。 我只是想确保它们将提供您需要的距离。

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

    最大距离:约500mm。

    > 您是否试用过 OPT3101配置器工具 v0.9.1
    是的、我尝试了自动 HDR 模式、现在我尝试超级 HDR 模式  

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

    Roberto、

     您应该将一个电容器连接到 INM 并进行接地。 我的猜测是您使用的是原理图中规定的6.8pf 电容器。 该电容器必须与光电二极管电容相匹配、否则系统将无法正常工作。 TEMD1000具有1.8pf 的数据表电容、但是、如果您向下滚动到电容图、您将看到1V 时电容约为2.4pf。 这是放置在光电二极管上的近似电压。 您将需要将6.8pf 电容器更改为2.4pf、然后尝试使用白色和黑色背景进行校准。 请记住、在超级 HDR 模式下、您需要在确定距离处获得4个电流、从而基于每个电流获得约16000个代码(LSB)的振幅。 手动执行此操作以为每个电流设定预定的距离、然后在 SDK 代码中更改这些值、以获得针对 Super HDR 的适当校准。

    请告诉我这是怎么工作的。

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

    Roberto、

     关闭 HDR 和自动 HDR 后、系统会使用 TXO 和 TX1进行校准。 目的是让您在两个不同距离有两个不同的电流来进行实际校准。 环境水平仅在校准中很重要、因为您需要找到 TX0和 TX1的背景材料和距离、从而为您提供1600到24000代码(LSB)。这很重要、因为您要强制系统在不同的四极点运行并校准距离 杂散电感。 完成校准后、放大指的是更小的含义。 振幅有助于系统确定要执行校准的四个分频器。 然后计算相位角并计算距离。 校准后、相位角和振幅几乎没有任何意义。 距离是否正确? 如果不是、那么您是在不正确地执行校准。 我们可能需要确定您的校准方式和设置。   

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

    抱歉、我忘记指明正在执行 SDK 步骤0:我正在查找最合适的距离和颜色目标。

    系统使用 TX0和 TX1进行校准。

    仅 Tx0设置所需电流、Tx1始终设置168mA (我不知道原因)

    5p6 16p8 54p6 173 p6
    0x2A 792221 792221 792221 792221
    0x29 3F0C23 3F0C83 3F0DA3 3F0FE3
    0x2B 006000 086000 086000 006000
    0x2C 000800 000800 000800 000800
    Tx0电流 5、6 16、8 54.6 173、6
    Tx1电流 168 168 168 168
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当我运行  SDK 步骤0时、我发现幅度与步骤1相位校准期间显示的幅度大不相同、目标位置相同。

    例如  

    第一个程序(超级 HDR 的配置)

    步骤1

    将目标设置为距离[0050]mm
    按任意键继续:
    信息:为 TX0 HDR 0 @参考距离执行相位偏移50mm

    PhOfft、rfDCod、ilmScl、ilmDac、fqCnt
    015,382,000218、0、01,16384、
    相位、Amplt、SigOl、AmbOl、Amb、tMain、tIlum、tMain (C)、tIlum (C)
    15,600,21883、0、0,070,23523520000、 +38、-128.0000

    振幅= 21833

    第二个程序(仅执行一个电流的配置、5.6mA)

    |Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Distmm、Phase、Amplud、SIG、AMB、HDR|--|Amb、Cntr、Tmain、Tillum |计数/总计|
    |004,828,021112,000397,112,000,0,0,1|-|012,397,054206,206,000002,0, 0、1|-|000000, 000000, 000000, 0, 0, 0|-|069,0x1e, +37、-128.0000|0000278/0003000|

    振幅= 397

    而不移动目标。

    有可能吗?

    茨干克

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

    Roberto、

     所有这些都是关于同一个问题吗? 您是否仍在为执行校准而苦恼? 校准很复杂、但不是那么困难。  

    如果是、我需要深入了解您的校准设置。 请详细描述您的设置。  

    另请查看 SDK 用户指南。 本文档更好地概述了校准过程。  e2e.ti.com/.../OPT3101-SDK-Users-Guide_5F00_calibration-Guide.pdf

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

     配置为仅执行一个电流的程序似乎不能正常工作、因此现在我只使用配置为超级 HDR 的程序、该程序通过 反射面测量良好的振幅值。

    相位偏移的测量是使用反射表面完成的、并且根据需要振幅值约为16K-24K。

    该图显示了设置。

    使用 SDK 步骤1在器件上进行的校准似乎可以很好地完成 
    TEST_LIVE_VIEW 测试、并重新加载已保存的校准值。

    SDK 步骤1保存文件照明串扰和相位偏移值、以供下 一次测试使用、并在每次测试完成内部串扰校准。

    但有时重复 测试 live_view 有一个测量偏移与内部串扰校准相关。

    例如、我报告了3种不同的实时图像测试数据、

    测试1

    信息:内部串扰测量已完成                  
    s Scaledi 扩展 已缩放 Q t 主菜单 特伊卢姆 t 主(C) tIlum(C) 马格尼特
    -8954 746 0 -8954 746 0 0 0 -128 29,7

    平均测量距离为815mm。

    测试2

    信息:内部串扰测量已完成
    s Scaledi 扩展 已缩放 Q t 主菜单 特伊卢姆 t 主(C) tIlum(C) 马格尼特
    -8053 -427 0 -8053 -427 0 0 0 -128 26、4

    平均测量距离为417、5mm。

    测试3

    信息:内部串扰测量已完成
    s Scaledi 扩展 已缩放 Q t 主菜单 特伊卢姆 t 主(C) tIlum(C) 马格尼特
    -7582 538 0 -7582 538 0 0 0 -128 24,7

     平均测量距离为790、5mm。

    三次测试中的温度相同、因此唯一的变化是  内部串扰校准、SDK 在每次测试开始时都会重复。

    在 OPT3101_configuration.cpp 中
    XTALK_FILT_TIME_CONST=1

    是否更好地更改滤波器设置参数或者同时保存和重新加载内部串扰寄存器?

    此致

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

    Roberto、

    如果我们可以看到所有校准值、则调试将更容易。 我不能完全理解你看到的是什么。 您能向我发送校准值吗? 这是您自己的电路板还是 EVM?

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

     使用基于 TI SDK 的固件在我的板上运行测试。

    e2e.ti.com/.../InternalXtalkComp.txt

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

    我已经使用反射目标校准运行 SDK 步骤1的新器件、然后检查在850mm 处测量黑色目标的校准;我连接完整日志。

    我已经修改了 SDK、能够重复相位校准测量以调整反射目标和器件之间的对齐、从而在第1步中达到接近16K 或最高的振幅。

    e2e.ti.com/.../Step1Calibration_5F00_and_5F00_LiveView.txt

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

    Roberto、

     在校准期间、是否要在实际校准之前为 TX0和 TX1设置电流和距离? 非 HDR 模式使用 TX0和 TX1来校准距离。  

    请我们的程序员了解这一点。

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

    这是我使用的配置

    TX0 HDR 0 @基准距离180mm 的相位偏移、

    TX0 HDR 1 @基准距离180mm 的相位偏移、

    TX1 HDR 0 @基准距离350mm 的相位偏移、

    TX1 HDR 1 @基准距离350mm 的相位偏移

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

    Roberto、

     必须手动设置距离、才能正确校准。 根据您选择的发射器和光电探测器、您必须设置 TX0、TX1、TX2和 TX3的电流。 必须手动打开每个电流、然后设置一个白色或黑色的背面接地材料、前后移动它、直到测量到19000到24000个环境码(LSB)之间的值。 然后记录每个设置的电流和距离。  

    将 OPT3101EVM 与 MSP430F5529LP 硬件配合使用、在 SDK 中打开 INLAB_STEP_1条件进行编译。

    设置每个电流的距离后、就可以开始校准距离了。 如果您尚未执行此操作、则将无法正确校准。  

    根据您显示的值、您尚未完成此过程。 请再次查看此校准过程。

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

    Roberto、

     由于您已打开 AutoHDR、因此您将在全部四个象限中进行校准。 (TX0、TX1、TX2和 TX3)您是否使用四个电流和四个距离来将 安培值保持在大约19000到24000个码之间、并使用这些数字来设置校准代码文件?

    通常、这是校准后颜色和精度测量问题的原因。  

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

    Roberto、

    每个 TXN 的电流是多少。  

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

    每个 TXN 的电流是多少。  

    TX0 HDR 0     5.6 mA

    TX0 HDR 1   16.8 mA

    TX0 HDR 0   54.6 mA

    TX0 HDR 0   173.6 mA

    您是否使用了四个电流和四个距离...?

    我使用了已选中 SuperHDR 模式的 SDK 配置。  运行 SDK 步骤1  相位偏移校准需要4次测量、每次测量一次电流、 实际上是 从函数测量一次

    void OPT3101::device:::measurePhaseOffsetSet (bool saveToFile)

    //循环在所有 TX 通道上迭代
    for (c0 = 0;c0 < 3;C0++){//*虽然循环所有有效的 TX 通道和寄存器组配置
    如果(this->configurationFlags_isTXChannelActive[c0]){//检查此配置文件的 TX 通道是否处于活动状态
    for (C1 = 0;C1 < 2;C1++){//循环以在 H/L 寄存器上迭代
    if (this->configurationFlags_isRegisterSetActive[C1]){//检查此配置文件的寄存器是否处于活动状态
    refDistanceInMM=envController.refDistancesInMM[c0][c1];

    ...

    this->measurePhaseOffset (&this->calibration->phaseOffset[c0][c1]、c0、c1? 'h':'l'、refDistanceInCodes);

    ...

    我在 TEMD1000中使用反射板目标  

    TX0 HDR 0 @基准距离180mm、振幅为 15627

    TX0 HDR 1 @参考距离180mm、振幅为 16977

    TX1 HDR 0 @参考距离350mm、振幅为 16691

    TX1 HDR 1 @参考距离350mm、振幅为 16701

    我不知道为什么、但幅度在不同的电流下非常相似。

    我已经添加了一个 while 周期来重复函数中的测量

    void OPT3101::device:::measurePhaseOffsetSet (bool saveToFile)  

    因为有时我需要手动稍微调整目标位置(使用后向反射目标)。

    具体代码为:

    host.printf ("info:为 TX%d HDR %d @参考距离%DMM\r\n"、c0、c1、refDistanceInMM 执行相位偏移);
    + while (1){
    this->measurePhaseOffset (&this->calibration->phaseOffset[c0][c1]、c0、c1? 'h':'l', refDistanceInCodes );////*测量相位偏移 ...
    this->calibration->phaseOffset[c0][c1].printHeader ();
    this->calibration->phaseOffset[c0][c1].print();
    host.printf ("\r\n");
    + host.printf (" c:Next distance \n");
    + host.pasq();^M
    + if (host.buffer[0]=='c'|| host.buffer[0]=='C')
    +中断;
    +}

    if (saveToFile)...

    我还使用  SFH213FA 进行了测试、但仅验证了在校准距离范围内比使用 TEMD1000大12倍的振幅、以便安装 SFH213FA 的器件可以校准 为目标面板(白色面板位置不如后向反射面板重要):

    TX0 HDR 0 @参考距离40mm、振幅为5457 (!)

    TX0 HDR 1 @参考距离80mm、振幅为 17150

    TX1 HDR 0 @参考距离170mm、振幅为 20860

    TX1 HDR 1 @参考距离300mm、振幅为 20600

    我 尚未使用 SFH213FA 进行校准、因为它是一个第三个组件、并且我的器件安装了一个 SMD 组件、一个 TEMD1000光电二极管。

    如果可能的话,我需要使用 TEMD1000定义稳定的校准设置。

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

    Roberto、

    您要尝试测量多远的距离? 您希望拥有的视场是什么?

    SFH4550与发射极具有3度的半角。 这意味着它不会具有宽视场。 TEMD1000不适合飞行时间。 PD 的面积为0.23mm^2。 这意味着您将需要来自发射器的更多光来工作。 距离为500mm 时、误差将为30mm、这解释了校准遇到问题的原因。  

    您将无法获得对 反光表面的有效校准。 需要光滑的白色和平坦的黑色表面。  

    我在您的器件上运行了系统估算器。 看起来可能符合您需求的发射器器件是 SFH 4259-UV1。 它的视场可能比您需要的要宽、但也有其他视场更窄的放大器。 尝试使用适用于光电二极管的 SFH 2500 FA-EN。  

    如果您告诉我您的要求和规格、我可以帮助您找到一组合适的发射器和光电二极管。 我认为 TEMD1000不能满足您的要求,也不能正确校准任何距离。  

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

    感谢 Gordon 的 解释,光电二极管对我来说也很重要。

    >您尝试测量的距离是多少? 您希望拥有的视场是什么?
    我需要 测量在100mm 至1000m 范围内的人的存在,不需要很高的精度,即使在500mm 时的总误差50-100mm 也是 可以接受的。  人们通常坐在设备前面。

    最初、我试图使用 SMD 组件(TEMD1000 和 LTE-C9506B 作为 IR LED)来简化项目、并避免使用 EMI 隔离环、但我有很大的错误、因此我认为增加   LED 功率并降低背景反射产生的噪音、从而减少 LED FoV、因此我测试了 SFH4550。 我可以尝试使用具有不同 FoV 的 LED。

    > 光电二极管的 SFH 2500 FA-EN
    这是一个 侧视 光电二极管、我需要一个底视图或顶视图。

    如果可能、我会安装 SMD LED 和光电二极管、且不使用 EMI 隔离环。

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

    Roberto、

     让我来为您寻找选项。 我觉得在表面单调的封装中采用30-45度角将是您的最佳选择。  

    您需要考虑一个非常重要的注意事项。 发射器和光电探测器无法直接看到彼此、或者您将具有光串扰。  

    我很快就会为你准备一些东西。

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

    Roberto、

    查看 VEMD6110X01

    我还在寻找

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

    谢谢、我来试试

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

    Roberto、

     另请参阅  SFH 2400 FA-EN。

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

    Roberto、

     还要看看 NJL6414R。 这一个的价格点更低。 它具有更大的1.5mm2芯片表面积、这会使其更加敏感。 唯一消耗的是它具有12.5pf 的电容。  

    我没有尝试过这部分,但我很感动自己。 务必匹配电路中任何光电探测器的并联电容。  

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

    我尝试了部件 SNF 4550和 SNF 213FA、但无法获得有效校准。 设置采用白色面板、振幅水平大于16000、距离为180mm、180mm、350mm 和350mm。

    在350毫米处测量大约是345毫米、但如果在850毫米处测量面板、则对于黑色面板、测量值大于5400mm;对于白色面板、测量值大约是1690毫米。

    使用的通道只要有大电流、就始终为 n.1。

    |000,884,003003869,001333、0、0、1|-|000,346,001001515,015998、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x00, +33,-128.0000| 1,-42,659,064966|0000015/0003000|
    |000,884,003003869,001333、0、0、1|-|000,347,001001520,015944、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x01, +33,-128.0000| 1,-85,085,129459|0000016/0003000|
    |000,884,003869,001333、869,001、0、0、1|-|000,342,001498,016207、498,016、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x02, +33、-128.0000| 1、-43,104,65887|0000017/0003000|
    |000,884,003869,001333、869,001、0、0、1|-|004,501,019680,000988、680,000、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x03, +33、-128.0000| 1、-56126、-52472|0000018/0003000|
    |000,884,003869,001333、869,001、0、0、1|-|005,422,023710,001215、710,001、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x04, +33,-128.0000| 1,-39611,-85748|0000019/0003000|
    |000,884,003869,001333、869,001、0、0、1|-|005,426,023724,001215、724,001、0、 0、1|-|000000, 000000, 000000, 0, 0, 0|-|065,0x05, +33,-128.0000| 1,-39515,-85848|0000020/0003000|

    |000,873,003819,001669       ,819,001,0,0,1|-|001,689,007387,002910,387,002,0,   0、 1|-|000000, 000000, 000000, 0, 0,     0|-|065,0x09,  +36、-128.0000| 1  、-102,949,046827|0000086/0003000|

    谢谢

    此致

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

    NB:I 将 C 更改成了6pF。

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

    Roberto、

    TX0-TX3的电流是多少。

    TXN      电流      距离

    TX0        ?         180毫米

    TX1        ?         180毫米

    TX2        ?         350毫米

    TX3        ?         350毫米

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

    "那你打算怎么办?"

    我认为 SDK 设置每个校准距离的预期电流、而是取决于振幅值、因此我重新定义了参考距离(并检查了是否设置了每个距离的预期电流)。

    TXN      电流      距离

    TX0_L        5.6        45毫米

    TX0_H       16.8        90毫米

    TX1_L       54.6       200毫米

    TX1_H      173.6       360毫米

    TX0_H、TX1_L 和 TX1_H 的校准幅度约为16K、TX0_L 的校准幅度约为5800 (对于白色目标、这是我可以拥有的最大值)。

    前三个值的校准似乎良好、但 TX1_H 的校准效果不好:  

    从360毫米移开后、测量值会增加太多。

    例如  

    Distmm、Phase、 Amplud、SIG、AMB、HDR|-|Amb、Cntr、Tmain、Tillum |
    001,411,006 006171,003080、   0、0、        1|--|065、0x05、+34、-128.0000|-->白色目标位于850毫米处
    004,542,019 019861,001132、   0    、0、    1|--|065、0x1b、+34、-128.0000| -->在850毫米处的黑色目标
    000,358,001 001568,017049、  0、0、         1|--|065、0x0a、+34、-128.0000|--> 白色目标为360毫米

    距离似乎受振幅的影响。

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

    Roberto、

     电流峰值不正确。 他们是从哪里来的? 是否使用"Configurator Tool"(配置器工具)获取电流并为 Setup1设置校准程序? -对于您的信息,如果选择的电流和振幅没有落在所需的区域,校准将不起作用。  

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

    是否使用"Configurator Tool"(配置器工具)获取电流并为 Setup1设置校准程序?  

    是、使用超级 HDR 比率32时、请参阅之前附加的图像。

    不包括第一个需要距离过近的电流值(非重叠 FoV)、对于其他电流值、 目标位于 LED 和光电二极管的 FoV 内。

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

    在文件 OPT3101device_Functions.cpp 中

    版本0.9.1

    功能  

    void OPT3101:frameData::populateWithMean (OPT3101:frameData *输入数据、uint16_t nframes)

    有2个错误:

    1) else 分支 if (nframe>1) no 语句,更好地使用 thiseovl =0 ;初始化;

    2)对于 输入数据[0]但未与 c0建立索引的周期。

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

    Roberto、

     如果有电流使反射表面闭合或振幅过高、则需要使用黑色非反射表面作为背景。 不应更改配置器工具设置的电流。 该工具可确保您在全部4个象限内进行校准。 如果更改电流、可能无法在所有象限进行校准。 只要您在象限或特定距离内进行测量、这就会导致误差。  

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

    Roberto、

     我将与程序员交谈、以了解这些误差。 我很快就会提供反馈。  

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

    我添加了一些图片、以便详细了解相位校准和测量中使用的电流。

    相位偏移检查信息:

    在下面的日志中忽略  

     nT0L、nT0H、nT1L、nT1H、nT2L、 nT2H;  

    借助 ledCh、illumDac 值、我可以验证该测量是否与 日志中报告的 TX1_H 电流相关、而不是 TX0 HDR 0相关。

    Set Target to distance [0045]mm
    Press any Key to continue:
    
    INFO:Performing Phase Offset for TX0 HDR 0 @ ref Distance 45mm
    
    PhOfft,rfDCod,ilmScl,ilmDac, fqCnt, nT0L, nT0H, nT1L, nT1H, nT2L, nT2H, ledCh, illumDac
    040729,000196, 0, 01, 16384, 0000, 0000, 0000, 0001, 0000, 0000, 01, 01
    Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C),Iin,Qin, tIlum(C)
    40925,01703, 0, 0,071, 2320, 0000, +34,00000,00000, -128.0000

    此外、对于实时视图、我添加了  LedCh 以显示更新了"分布"列

    |Distmm, Phase,Amplud,SigS,AmbS,HDR|--|Distmm, Phase,Amplud,SigS,AmbS,HDR|--|Distmm, Phase,Amplud,SigS,AmbS,HDR|--|Amb,Cntr,Tmain,Tillum |LedCh, Iin Qin| Count/Total |
    |000000,000000,000000, 0, 0, 0|--|009320,040753,001689, 0, 0, 1|--|000000,000000,000000, 0, 0, 0|--|071,0x12, +32,-128.0000| 1 ,-01296,-65647|0000000/0003000|

    我将相关代码附加到

    OPT3101frameData.h

    OPT3101device_Functions.cpp

    OPT3101PhaseOffset.cpp

    可添加照片。

    +++ b/sbac203b/release_0p9p1/OPT3101_SDK/OPT3101frameData.h
                            uint16_t tmain; ///< value of internal temp sensor read from register OPT3101::registers::tmain
    +                       int32_t Iin;
    +                       int32_t Qin;
                            uint16_t tillum; ///< value of external temp sensor read using the I2C Master. Same as OPT3101::registers::tillum
    +                       // statistics
    +                       uint16_t txLedillumDacHiCnt[3][2]; // [OPT3101::registers::tx_channel, OPT3101::registers::hdr_mode] counters
                            /*!
                            * \brief initializes the members to 0
                            *
    
    
    +++ b/sbac203b/release_0p9p1/OPT3101_SDK/OPT3101device_Functions.cpp
    @@ -44,7 +44,7 @@ void OPT3101::device::liveDataView(uint32_t nFrames,uint32_t refreshDelayinms,bo
            host.printf("\r\n");
            for(c1=0;c1<3;c1++)
                    host.printf("|Distmm, Phase,Amplud,SigS,AmbS,HDR|--");
    -       host.printf("|Amb,Cntr,Tmain,Tillum   |  Count/Total  |");
    +       host.printf("|Amb,Cntr,Tmain,Tillum   |LedCh,     Iin    Qin|  Count/Total  |");^M
            host.printf("\r\n");
            for(c0=0;c0<nFrames;c0++){
                    data.capture(&host, this,this->calibration->extTempSensor_connected);
    @@ -66,6 +66,9 @@ void OPT3101::device::liveDataView(uint32_t nFrames,uint32_t refreshDelayinms,bo
                    host.printf("0x%02x,",data.frameCounter);
                    host.printf("  %+03d,",(int32_t) (((int32_t)data.tmain>>3)-256));
                    host.printf("%+07.4f|",((double)data.tillum/16-128));
    +               host.printf(" %01d   ,",data.ledChannel);^M
    +               host.printf("%06d,",data.Iin);^M
    +               host.printf("%06d|",data.Qin);^M
                    host.printf("%07u",c0);
                    host.printf("/%07u|\r",nFrames);
                    if(scroll)
    
    @@ -731,7 +755,27 @@ void OPT3101::frameData::populateWithMean(OPT3101::frameData *inputData, uint16_
                    this->sigovl |= inputData[0].sigovl;
            }
    
    +       // tx_channel and hdr_mode^M
    +               int16_t illHDAC;^M
    +               int16_t TxCh;^M
    +       for (c0 = 0; c0 < nFrames; c0++) {^M
    +       //              host.printf("c0=%d ", c0);^M
    +               // reset counters^M
    +               if(c0==0)^M
    +                       for (int ii = 0; ii < 3; ii++) {^M
    +                               this->txLedillumDacHiCnt[ii][0]=0;^M
    +                               this->txLedillumDacHiCnt[ii][1]=0;^M
    +                       }^M
    +^M
    +               if(inputData[c0].illumDac) // hdr_mode^M
    +                       illHDAC=1;^M
    +               else^M
    +                       illHDAC=0;^M
    
    +               TxCh=inputData[c0].ledChannel;^M
    +               // if (inputData[c0].ledChannel>=0 && inputData[c0].ledChannel<3) // tx_channel^M
    +                       this->txLedillumDacHiCnt[TxCh][illHDAC]=this->txLedillumDacHiCnt[TxCh][illHDAC] + 1;^M
    +       }^M
            // Mean of phase if found
            accum = 0; ///* Accumulates and measures mean for all the input class instance members and assigns them to the method's class members
            for (c0 = 0; c0 < nFrames; c0++)
    @@ -865,10 +909,16 @@ void OPT3101::device::measurePhaseOffsetSet(bool saveToFile) {
                                            envController.setTargetDistance(refDistanceInMM); ///* Calls environmentalController::setTargetDistance method with the specified distance
                                            refDistanceInCodes = (refDistanceInMM * 4477) >> 10; ///* Converts the reference distance specified in codes related to OPT3101::frameData::phase ADC codes
                                            host.printf("INFO:Performing Phase Offset for TX%d HDR %d @ ref Distance %dmm\r\n",c0,c1,refDistanceInMM);
    +                               while (1) {^M
                                            this->measurePhaseOffset(&this->calibration->phaseOffset[c0][c1], c0, c1 ? 'h' : 'l', refDistanceInCodes); ///* Measures phase offset by calling method OPT3101::device::measurePhaseOffset with specified reference distance and OPT3101::calibrationC::phaseOffset as argument to store the phase offset values
                                            this->calibration->phaseOffset[c0][c1].printHeader();
                                            this->calibration->phaseOffset[c0][c1].print();
                                            host.printf("\r\n");
    +                               host.printf("  c:Next Distance\n");^M
    +                               host.pause();^M
    +                               if (host.buffer[0] == 'c' || host.buffer[0] == 'C')^M
    +                                       break;^M
    +                               }^M
    
                                            if(saveToFile){
    
    
    
    +++ b/sbac203b/release_0p9p1/OPT3101_SDK/OPT3101PhaseOffset.cpp
    @@ -65,7 +72,13 @@ void OPT3101::phaseOffsetC::printHeader()
            host.printf("rfDCod,");
            host.printf("ilmScl,");
            host.printf("ilmDac,");
    -       host.printf(" fqCnt\r\n");
    +       host.printf(" fqCnt,");^M
    +       for (int ii=0; ii<3; ii++) {^M
    +               host.printf(" nT%01dL, nT%01dH,",ii, ii);^M
    +       }^M
    +       host.printf(" ledCh,");^M
    +       host.printf(" illumDac\r\n");^M
    +       //host.printf("\r\n");^M
            host.printfSetColor(0xFF);
     }
     void OPT3101::phaseOffsetC::print()
    @@ -75,7 +88,14 @@ void OPT3101::phaseOffsetC::print()
            host.printf("%06u,",this->referenceDistanceInCodes);
            host.printf("     %01u,",this->illumScale);
            host.printf("    %02u,",this->illumDac);
    -       host.printf(" %05u,\r\n",this->freqCount);
    +       host.printf(" %05u,",this->freqCount);^M
    +       for (int ii=0; ii<3; ii++) {^M
    +               host.printf(" %04d,",this->data.txLedillumDacHiCnt[ii][0]);^M
    +               host.printf(" %04d,",this->data.txLedillumDacHiCnt[ii][1]);^M
    +       }^M
    +       host.printf(" %02d,",this->data.ledChannel);^M
    +       host.printf(" %02d\r\n",this->data.illumDac);^M
    +       //host.printf("\r\n");^M
            host.printfSetColor(0xFF);
            this->data.printHeader();
            this->data.print();