4
\$\begingroup\$

I need to communicate with some Dynamixel servos from a Raspberry Pi. There's a commonly published circuit to achieve this using a 74LS241 buffer to manage the half duplex connection. (This page lists several versions, all essentially the same: https://pypi.org/project/pyax12/).

However, it connects a 5V part directly to the Pi inputs, which as I understand it aren't 5V tolerant. Is this circuit valid? It seems to be widespread, so why isn't it breaking things?

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Per the schematic, 3 of the 4 pins on the 74LS241 are inputs, these should work with 3.3v logic coming from the Rasp-Pi. However, pin 18 is an output, that is questionable. One solution may be to use a 74241 type that is 3.3v compatible, (one type is a 74LVT241). \$\endgroup\$
    – Nedd
    May 11 at 6:22
  • \$\begingroup\$ (1) It is risky to even input 5V0 logic signal to 3V3 Rpi GPIO, which might latch up, get fried sooner or later (30 minutes to as long as days), or shortens it life (GPIO and the whole Rpi). (2) For output signals, you can use any of the many 3V3 to 5V0 logical level up shifters. (3) One nice thing is to do two things at the same time: (a) shifting up logical level, (b) converting duplex to simplex. I will try to give a working example using TSX0104, driving UART servo LX224 in my answer below. \$\endgroup\$
    – tlfong01
    May 11 at 6:56
4
\$\begingroup\$

This circuit was most likely designed by a non-EE. LS TTL parts have weak high-side drivers so it may marginally work, but NOT recommended. A 74AC241 has strong high-side drivers and would probably damage the RPi.

There are many level-shifters available, you should use one of them.

enter image description here

If you have already built this circuit and the signals are not too fast, you could fix it with a diode and resistor.

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
1
  • \$\begingroup\$ For faster switching, Schottky diode can be used. \$\endgroup\$
    – Mitu Raj
    May 11 at 9:55
-1
\$\begingroup\$

Question

How to convert Rpi 3V3 logical input/output signals to 5V0, to drive UART bus servos such as those by Dynamixel and LewanSoul?


Answer

One working solution is to use TSX0104 to do level shift up and also convert duplex to simplex signals at the same time.


lx224 servo


References

(1) How to interface UART servo? (LX-224HV) Q&A - EESE, Asked 2020aug28, Viewed 448 times

(2) How to interface UART servo? (LX-224HV) Chat Transcript- EESE, Asked 2020aug28, Viewed 448 times

(3) TSX Voltage Level Translation Products - TI

(4) TI Voltage Translation Buying Guide - TI


Appendices

Appendix A - 3V3 Rpi using TSX0104 to drive a 5V0 UART bus servo


tsx0104 servo usrt


\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.