Increasing arduino UART voltage level

Hello guys,
i was wondering if there is a way to increase arduino UART level voltage from 5V to 10V for a deice (turbine ECU) that uses 10V UART logic.

i know i can use a level shifter but trying to avoid it if possible.
i thought about a pull up resistor on the TX line - is that possible or will that kill the UART channel?
any other options? once again hopefully without external hardware.
thanks.

No, this cannot and will not happen without more hardware. Even a pull-up resistor (which will not work) is an external device.

What is the required speed?

i3dm:
once again hopefully without external hardware.

Really?

One or two transistors.

Shifting down (10V TX to 5V RX) can be done with a voltage divider.
Shifting up (5V TX to 10V RX) can be done with a transistor - do make sure you're not inverting the signal. This page tells you how it's done for 3.3V to 5V, same for 5V to 10V except that you have to change the resistor values of the divider to be equal.

Paul__B:
Really?

One or two transistors.

no extra room on my board :frowning:

WattsThat:
What is the required speed?

19200

i3dm:
no extra room on my board :frowning:

Not even for a transistor in SOT23 package and 3x 0604 resistors? That must be one super tight packed PCB. Maybe you should place them on the other side then, or is that packed as well?

If really no space, too bad. End of story. This is impossible without extra hardware.

deice (turbine ECU) that uses 10V UART logic.

Are you sure that the signal is not a form of RS232 signal? And is a simple mark ( idle state of the line ) is high?

I too would say

This is impossible without extra hardware.

Grumpy_Mike:
Are you sure that the signal is not a form of RS232 signal? And is a simple mark ( idle state of the line ) is high?

I too would say

yes im sure.

OK guys. i thought its worty a try.
thank you.

Can you post a link to a manual or datasheet for the ECU? 10V Serial is very unusual.

RS232 standard is as common as dirt and may read as 10V on a multimeter, depending on the data being sent.

theres no datasheet. its a reverse engineering project.
the ECU HW is based on LIN bus but with regular UART protocol.
logic 1 is pulled up to power supply which is 10V in my case.

Then you need a LIN transceiver.

Are you expecting to transmit and receive or just one of those? (Which one?)

both.
ive already decoded the protocol using a voltage devider on the Rx line.
thinking about a level shifter on both Tx and Rx lines for next stage to be able to transmit too.

A MAX232 makes a great level shifter for both TX and RX. You could hack it to 0-10V by omitting one capacitor from the recommended circuit and connect V- to ground. But be aware that it reverses the polarity too: a HIGH input gives a low-voltage output.

interesting idea as i actually have a MAX232 at hand. but i need non reversed UART. is it possible to logically invert the software serial UART from the ardu?

Place an inverter such as the 74HC04 in between. Much easier.

i didnt explain but my board id already made without room for more components. the max232 can easily be mounted on the uart cable though.

MorganS - can you describe the correct way to get the Max232 to output 0-12v (or so) uart? will it also be able to read the LIN bus and transmit TTL (inverted) uart to Ardu?

the max232 i have are the ones from ebay:

theyre actually called MAX3232.

The MAX3232 is the 3.3V version. The MAX232 is the 5V version, and can handle overall higher voltages. Otherwise they're compatible.

The 3232 can handle 10V signals as well, according to the data sheet.

yes. i agree.

so how do i modify it to read / send UART (0 to +12v) instead of RS232 (-12v to +12v)?
simply jumper V- (pin 6) to GND?
which cap needs to be removed?

MorganS:
A MAX232 makes a great level shifter for both TX and RX. You could hack it to 0-10V by omitting one capacitor from the recommended circuit and connect V- to ground. But be aware that it reverses the polarity too: a HIGH input gives a low-voltage output.

I have found this scheme of max3232.
do yo umean removing C4 and connecting V- (pin 6 in max3232) to GND?

Looks like both C2 and C4 would be unnecessary if you did not need the voltage inverter function.

SoftwareSerial can invert the data. Some of the more advanced Arduinos like the Teensy can do it in hardware but SoftwareSerial will be easier.