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.

[参考译文] FDC1004:液位传感器中CIN3通道的偏移

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1087636/fdc1004-offset-on-cin3-channel-in-liquid-level-sensor

部件号:FDC1004
主题中讨论的其他部件: Tida-0.0317万

您好,我正在使用FDC1004开发远程液位传感器。 我严格遵循参考设计,使用CIN1测量电平电极,CIN2液体电极和CIN3环境电极。  

所有测量值都与水的高度呈相当线性,但由于某种原因,环境通道(CIN3)会偏移。 例如,当水箱中没有水时,电容如下所示:

级别:8.75pF

液体:0.88pF

环境:9.43 pF

我希望你们对造成偏差的原因有一些了解,这使得无法补偿温度/湿度。

谢谢!

Aidan  

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

    Aidan

    感谢您的帖子。
    您能否 分享有关您的设计的更多信息,如传感器配置/布局和原理图?
    仅供确认, 您提到的参考是否为TIDA-0.0317万?

    此致,
    John

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

    嗨,John,感谢您回复我。 是的,TIDA-0.0317万是我使用的参考。 我一直在CINx和CIN4之间触发单差分测量(浮动,无电极)。 如果您有任何想法,请告诉我。

    我不确定如何在此处上传文件,请参阅下面的imgur链接了解原理图,图层和代码。 或者告诉我是否有其他方式可以向您发送文件,例如通过电子邮件。

    设计图片的Imgur链接

    谢谢!

    Aidan  

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

    Aidan

    请单击Insert/(Image/video/file)将文件上载到此线程。  

    此致,
    John

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

    哎呀,我没有看到灰色 的"上传"按钮。

    float CapacitiveSensor::singleMeasurement(int measurementNumber) 
    {
    
      if (measurementNumber < 1 || measurementNumber > 4) 
        return -1000.0;
    
      // Trigger Measurement
      uint16_t sensorConfig = read16(FDC_CONF);
      sensorConfig |= 1 << (8 - measurementNumber); 
      write16(FDC_CONF, sensorConfig);
    
      long start_time = millis();
      while (millis() - start_time < TIMEOUT_MS) 
      {
        sensorConfig = read16(FDC_CONF);
        if (sensorConfig & (1 << (4 - measurementNumber))) // Check if measurement is completed
          return readMeasurement(measurementNumber);
          
      }
      return -3000.0;
    }
    
    float CapacitiveSensor::readMeasurement(int measurementNumber) 
    {
      // Returns the capacitance of the measurmenet in pF
        if (measurementNumber < 1 || measurementNumber > 4) 
          return -2000.0;
    
        uint16_t sensorConfig = read16(FDC_CONF); 
        if (!(sensorConfig & (1 << (4 - measurementNumber)))) // Check if measurement is completed
            return -3000.0;
    
        uint8_t registerMSB = (measurementNumber-1) * 2;
        uint8_t registerLSB = registerMSB + 1;
    
        // Read 24-bit measurement. Capacitance has a fixed decimal point with 5 bits before and 19 bits after
        uint16_t msb = read16(registerMSB); // D[15:0] contains the most significant 16 bits of the measurement
        uint16_t lsb = read16(registerLSB) >> 8; // D[15:8] contains the least significant 8 bits of the measurement
    
        // Serial.println(msb, BIN);
        // Serial.println(lsb, BIN);
    
        int32_t rawValue = (((uint32_t)(msb)) << 8) | lsb;
    
        int sign = 1;
        if (rawValue & 0x800000) { // Negative number
          sign = -1;
          rawValue |= 0xFF000000;
          rawValue = ~rawValue + 1;
        }
        
        uint16_t left_bits = rawValue >> 19;
        uint32_t right_bits = rawValue & 0x7FFFF;
    
        float capacitance = sign * (left_bits + (float)right_bits/524288.0);
         
        return capacitance;
    }

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

    Aidan

    感谢您提供信息。 我看不到任何明显的东西。
    是否可以从FDC1004上断开单个ENV传感器并查看对电容读数的影响?
    此外,ENV传感器附近是否有接地平面?

    此致,
    John