amplify digital signal

Thread Starter

spittips101

Joined Apr 9, 2018
8
I have a device which runs at 3v and I need to read a UART signal coming out of it using Arduino. To do this I need to increases the voltage of the signal from 3v to between 3.3v and 5v as that is what is required for the Arduino RX pin. How can I amplify this digital signal? I would imagine there is an IC that can do this but I don't know what it would be called.

Thanks
-Taylor
 

dl324

Joined Mar 30, 2015
17,200
Welcome to AAC!

This bi-directional level shifter circuit works well for low to medium speed signals:
upload_2018-4-9_14-23-59.png
Image is from Sparkfun...
 

ebp

Joined Feb 8, 2018
2,332
There are all sorts of "level shifter" ICs available for this purpose. For a single signal at moderate speed the discrete device shifters are OK, but if you need to minimize power consumption, minimize delay time (i.e. operate at high speed) or have several signals to shift, the IC devices are better.
 

Thread Starter

spittips101

Joined Apr 9, 2018
8
I have received the BSS138 logic level converter and I am confused about it's functionality. I have LV at 3.3v and HV at 5v, both grounds connected. Then I have nothing connected at the channels, but all 4 channels on low side are reading 3.3v and all channels on high side are at 5v. I thought that a logic high voltage had to be applied to one side's channel to have a corresponding logic high on the other side. Could my chip be faulty or am I just confused? I can't seem to get a logic low on any of the channels.
 

dl324

Joined Mar 30, 2015
17,200
I have received the BSS138 logic level converter and I am confused about it's functionality. I have LV at 3.3v and HV at 5v, both grounds connected. Then I have nothing connected at the channels, but all 4 channels on low side are reading 3.3v and all channels on high side are at 5v. I thought that a logic high voltage had to be applied to one side's channel to have a corresponding logic high on the other side.
Isn't that what you're seeing? Source and Drain both have pull-ups, so no input defaults to logic HIGH.
I can't seem to get a logic low on any of the channels.
If you apply a logic LOW to LV1 or HV1, you'll see a logic LOW on the other terminal.
 

dl324

Joined Mar 30, 2015
17,200
thank you for explaining this to me.
The clever thing is how a LOW is passed from HV to LV.

When a LOW is being transferred from the LV side to the HV side, the LOW on the LV side turns on the MOSFET. Nothing unusual here.

When a LOW is being transferred from the HV side to the LV side, the body diode is used to turn the MOSFET on. It does this by forward biasing the body diode which, in turn, causes the MOSFET to turn on because Vgs will now be about 2.6V (3.3V - 0.7V). As long as 2.6V is sufficient to turn the MOSFET on, the body diode is now out of circuit and it's the MOSFET providing the LOW from the HV side. BSS138 have a Vgs (th) of 0.8-1.5V.

The reason this circuit is only good for low to medium speed is that there is no active pull up.
 
Top