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.

[参考译文] OPT4060:自动范围功能创建具有不同偏移的独特频段

Guru**** 2460850 points
Other Parts Discussed in Thread: OPT4060

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1491872/opt4060-auto-ranging-function-creating-distinct-bins-with-distinct-offset

器件型号:OPT4060

工具与软件:

我将使用 OPT4060来尝试测量 PAR。 但是、当我尝试根据已知0.1%精度的传感器校准传感器时、当范围自动调整时、会产生明显的频段。 数据表中指出应考虑这些因素、因此我希望我出错了。  

由于在自动量程模式下无法读取传感器的当前范围状态、因此我无法在不创建自己的自动量程程序的情况下轻松地解决该问题。 如果您有任何建议、请告诉我、否则我是否能够了解每个给定范围的响应曲线?

提前感谢您的帮助  

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

    尊敬的 Regan:

    您能否详细说明您正在引用的这些文件箱? 您是否有一个使用到目前为止收集的数据的不同容器的示例? 这将让我更好地了解你所遇到的问题。

    此外、还可以通过读取每个通道输出寄存器的 EXPONENT 位来确定要测量的范围:

    这些位的值根据下表确定传感器当前正在测量的以下测量范围中的哪一个:

    谢谢!

    Daniel

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

    Daniel、您好!

    感谢您的答复。 我附上了一个图表,其中一个测试我跑了到目前为止,显示了一些他的箱子我之前提到。 请注意、"UVC PAR"是使用 OPT4060的传感器

    很高兴知道我可以访问每个通道使用的范围、感谢您提供这些信息

    谢谢、

    REGAN  

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

    尊敬的 Regan:

    感谢您提供更多信息! 需要回答其他几个问题、以便我理解:

    -上述数据中显示的是哪个传感器通道? CH0、CH1、CH2、CH3?

    - OPT4060的 Y 轴上的单位是什么? 是否转换为 ADC 代码? 似乎情况并非如此、因为趋势似乎是对数。 您能否使用以下公式转换为 ADC 代码?

    这些值从结果寄存器中检索:

    看起来您只是将输出寄存器绘制为十进制值、而没有进行上述计算、从而产生图中所示的行为。

    谢谢!
    Daniel

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

    Daniel、您好!  

    - PAR 是 CH0、CH1、CH2和 CH3的组合(根据其400-600nm 波长缩放的所有值的总和)

    -你是绝对正确的,在我的图书馆有一个问题,这正是导致这一点

    实施后,有一个明显的线性趋势,我把大致图附在下面

    如图所示、当传感器调整其范围时、仍然存在频段(我假设)。 "你怎么知道的?"  

    再次感谢、

    REGAN

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

    尊敬的 Regan:

    从您在上面分享的映像中、ADC 代码计算似乎没有在您的程序中正确实现。 我可以问问您要从哪些寄存器中读取来实现这个图吗?  

    我在上面分享的上述计算考虑了范围变化、应该会产生一个没有这种分级行为的线性图。

    似乎您正在读取 MANTISSA 位、这些位将递增、直到进入另一个范围、此时 MANTISSA 将复位。 考虑到这一点、您必须将尾数位乘以2^指数值。

    如果您可以共享执行该转换的部分代码、则对调试也可能有帮助。

    谢谢!

    Daniel

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

    Daniel、您好!

    是的、我很抱歉、我发现我在随后的代码片段中错误地对结果数据应用了一个掩码。 我在下面附上了转换函  

            # Extract register address and bit range
            address = reg_info['address']
            bits = reg_info['bits']
    
            # Read the two bytes from the register (case of reading color data)
            if isinstance(address, tuple):
                # Read 2 bytes from 0x00 (MSB)
                msb_data = self.i2c.readfrom_mem(self.device_address, 0x00, 2)
                result_exponent = (int.from_bytes(msb_data, 'big') >> 12) & 0x0F  # Extract bits 15-12
                result_msb = int.from_bytes(msb_data, 'big') & 0x0FFF  # Mask to keep bits 11-0
                
                # Read 1 byte from 0x01 (LSB)
                result_lsb = self.i2c.readfrom_mem(self.device_address, 0x01, 1)[0]  # Read bits 15-8
    
                # Combine into a 20-bit value
                mantissa = (result_msb << 8) | result_lsb  # Shift MSB left by 8 and OR with LSB
                
                # Exctract adc codes
                data = (mantissa<<result_exponent)
     

    虽然这现在产生了更加一致的关系、但它仍然不像您预期的那样是线性的。 我在下面附上了最新的图表  

    再次感谢、

    REGAN  

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

    尊敬的 Regan:

    什么是 WetLabs PAR 测量单位? ADC 代码相对于输入照度级别呈线性。 例如、如果要相对于输入照度(以勒克斯为单位)绘制通道1代码、则生成的图应是线性的。 这看起来是 OPT4060的输出、WetLabs PAR 不是线性关系。

    谢谢!

    Daniel