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.

TXB0104: Trying to adapt voltage levels for an SDI-12 bus with a 3.3V MCU

Part Number: TXB0104
Other Parts Discussed in Thread: SN74AHCT1G125, SN74LVC1G17

Hello,

I've been trying for a few days to control some SDI-12 Sensors with a 3.3V powered MCU.

The SDI-12 specification can be found here: http://www.sdi-12.org/specification.php

Obviously you can't just connect a GPIO directly to the bidirectional bus, it is not that simple. The SDI-12 voltage levels are -0.5V to 1V for a "1" and 3.5 to 5.5V for a "0".  The reverse logic is not a problem, this is manageable by the software implementation. The problem is adapting the voltage levels of the SDI-12 spec for a 3.3V powered MCU.

I've tried making it work with a TXB0104 from the TXB series without results, it starts oscillating as soon as  state change occurs. I think I know why, the cable length of a SDI-12 sensor tends to be huge (at least 3 meters) for such a small current IC meaning the load capacitance is probably higher than 70pF. But maybe I'm wrong ?

I have also tested the more "classic" approach of bidirectional voltage translation with a MOSFET and pull up resistors, but it's not ideal, mainly because when the bus is Idle, it goes to high level instead of a low level (and I've also got problems with this solution...)

I'm posting here because maybe there is an alternative with TI products ? I was thinking about the TXS series, but I think it's similar to the "MOSFET solution". Right ? Do you guys have any idea ?

Thank you,

Nicolas

  • None of the translators with automatic direction sensing can drive a high level. Furthermore, none of the direction-controlled translators have a Schmitt-trigger input (which is necessary due to the low slew rate).

    To drive the data line, use a 5 V buffer with 3.3 V input and 3-state output, such as the SN74AHCT1G125.
    To read the data line, use a 3.3 V buffer with Schmitt-trigger and overvoltage-tolerant input, such as the SN74LVC1G17.

  • Clemens Ladisch said:

    None of the translators with automatic direction sensing can drive a high level. Furthermore, none of the direction-controlled translators have a Schmitt-trigger input (which is necessary due to the low slew rate).

    To drive the data line, use a 5 V buffer with 3.3 V input and 3-state output, such as the SN74AHCT1G125.
    To read the data line, use a 3.3 V buffer with Schmitt-trigger and overvoltage-tolerant input, such as the SN74LVC1G17.

    That's what I was afraid of. I was at least hoping I could use a simple direction-controlled translators. I'm having a hard time understanding why a Schmitt-trigger input is necessary though. Is that because the MOS inside the translator will remain unstable (conductive) for too long causing oscillations ? I never thought a low slew rate would ever be a problem....

    If you have nothing more to add, I'll consider this as resolved since you also included references with your answer. I needed low power components but it seems those two buffers won't need anything more than 10µA anyway.

    Thank you.

  • Hi Nicolas,

    You can refer to this white paper on the issues with slow rising inputs ( slew rate) and its effects on the output. Also, the solution using the schmitt trigger inputs to solve these issues. With different threshold levels for positive going and negative going inputs, the ST devices introduces hysteresis which helps in noise margin.

    We will take your inputs and feedback into our systems team for future developments.

    As Clemens suggested, we have LVC1G17 which is over voltage tolerant inputs and with schmitt trigger inputs. AHCT1G14 has schmitt trigger inputs and TTL compatible input to accept 2V input and translate to 5.5V.

  • Thank you ! Marked as resolved.