0
\$\begingroup\$

I am trying to send data through serial from a 3.3v Arduino to a 5v Arduino. I assume I can't just connect the 3.3v tx to the 5v rx because, when I program the 5v one I am assuming it will send 5v signals to the 3.3v Arduino's tx pin, potentially damaging it.

I don't want to use Software Serial because I want to take advantage of the Arduino's hardware UART buffer.

If I use a diode, I am concerned that the voltage drop will cause the 3.3v signal to not be picked up by the Arduino rx (I have heard that >=3v registers as high). I have heard that Schottky diodes have a low voltage drop so could I use one of those with a rated drop of <0.3v? Or is there a better way to get around this issue?

\$\endgroup\$
  • \$\begingroup\$ What you want is called a level shifter. That name might help you find what you need. \$\endgroup\$ – Hearth Apr 30 at 14:23
  • \$\begingroup\$ Per my answer below, you might not need level translators since 3.3V and 5V are adjacent standard signalling voltages. If you can provide exact model numbers or better yet, links to datasheet, this could be more thoroughly confirmed. \$\endgroup\$ – SSilk Apr 30 at 14:33
1
\$\begingroup\$

It sounds like you need the 3.3V buffered up to 5V, but also need it to be disconnected from the other TX programming source as not to interfere with the programming via Serial.

Try a gate like 74AHCT125N (for a DIP) powered from 5V. It only needs 2V for a valid high.

http://www.ti.com/lit/ds/symlink/sn74ahct125.pdf

That will get it from 3.3V to 5V, and the OE/ for each gate will let you disable it during programming - pull the pin high with 10K or so pullup resistor, have the Arduino take it low with an output pin during the sketch's setup() to enable data transfer in.

\$\endgroup\$
1
\$\begingroup\$

Double check your HW specs on both ends. Many receivers will be tolerant to incoming voltages levels from the next "standard" voltage level, e.g. many 1.5V receivers will accept 1.8V signals, 1.8V will accept 2.5V, 2.5V will accept 3.3V, etc. If that's the situation you're in, you don't need level translators. Also, if that voltage "tolerance" isn't clearly spelled out, you can parse it out of the min and max V_IH, V_IL, V_OH, and V_OL specs of the two devices.

\$\endgroup\$
  • \$\begingroup\$ Not in this case! \$\endgroup\$ – Chris Stratton Apr 30 at 14:56

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.