3.3v TTL works, whats the problem?

I am using a Bluetooth modem device that has 3.3v TTL output

Its instructions state that its TXD can be sent to a 5v TTL RXD input.
For Inputs from 5v to 3.3v inputs it gives a resistor divider circuit to use.
But straight in for 3.3v ouput to 5v input is shown.

The Pololu 8 servo board has 5v TTL input

i have been running the pololu board with the 3.3v TTL TXD connected to 5v Input Data pin of the pololu.

It all works well in testing.

I use it at 38400 baud
(doesnt seem to like 56700 even on hard wired cable to PC to the RS232 inputs)

I have not run 5v output of the pololu to 3.3v RXD of the modem as yet but will do using voltage level drop circuit given by manufacturer.

Now I am about to buy a batch of 20 of each to fit them to equipment I sell.

I read the threads about the Chumby TTL
Jan advises that there may be certain conditions were the threshold might reach 4v logic.


What conditions would that be.
(both pololu and modem device are on same master board plugged into, fed with 3 voltage levels to handle modem at 3.3, pololu V+ at 9v and Servo load input at 5v or thereabouts.)

Why would 4 volts be an issue
As I understand it the signal only arrives when the input pin is pulled low, as there is no flow of current at high between 3.3v TTL and 5v TTL.
How would the pololu even know the 3.3TTL line input is 3.3v if it is not drawing current from the 3.3v side wehn it is HIGH.
I assume both outputs and inputs are floating, current only flowing were the output on the 3.3TTL pulls to LOW
At which point both inputs are LOW

Is there a flaw I am making in these assumptions ?, if any.

In short, if it works now on the bench, why will it fail to work at some later time.
(If I read the Chumby thread right)

Would that be if the servo input voltage went below 5v by too much ?
VDD is 9v and 3.3v on the modem will not drop as they come from another source.



The servo controller baud rate limit is around 40000, so we don’t expect 56700 to work in any case. The 4 V input threshold is simply the guarantee from the microcontroller manufacturer. It has nothing to do with powering things or current flow. You ask how our servo controller even knows the line is at 3.3 V; the point is, all it knows is high or low, and the threshold could be as high as 4 V.

An output should not be floating (otherwise it’s not much of an output), so your 3.3 V line is almost surely driven to 3.3 V, not floating. If you have an open-collector or open-drain output, then it would switch between driving low and floating, and you would have to add an external pull-up device. Once you have that pull-up in place, the line is not really floating. By the way, the servo controller has a 4.7k pull-up on the input line, so it’s possible that that is acting as your pull-up.

In general, if you have the setup working, it will probably keep working. But, if you swap out the servo controller, the new one might have a different and higher threshold. Your 3.3 V device will also vary from unit to unit. So, let me summarize the situation with an example.

Let’s say you have two servo controllers and two bluetooth modems. One servo controller sees anything above 3.1 V as high, and the other sees anything above 3.3 V as high; one bluetooth modem gives a 3.2 V high and the other gives a 3.3 V high. The servo controller that sees 3.1 V as high will work fine with either modem. But, the servo controller that has a 3.3 V threshold will never work with the modem that has the 3.2 V output. The last case is in some ways the scariest since you’re right on the boundary of the two devices. The 3.3 V servo controller might seem to work with the 3.3 V modem, but any fluctuation could cause a failure. This could be from unpredictable things like noise or from more repeatable things like the levels changing a bit as a function of temperature (e.g. as the modem gets warmer, the 3.3 V output might drop to 3.29). The point is, if your modem could just guarantee at least 4 V, you would always be safe.

Did that make sense?

- Jan

Hi Jan

Yes it seems after testing the high logic is not open.

So I had to make up some interface between the two.

I use the
TTL input from Txd off the bluetooth module
TTL output to Rxd to echo comnmands to test if polou is running.
I use DTR to the reset on the pololu 8
And I added a battery level cut off circuit to DSR to indicate battery needs chagring.

The bluetooth module is all TTL 3.3v

I ended up making a circuit for the 3.3v to 5v level (off the net) using an N channel Mosfet.
Knowing you had a 4.7K pull up, thanks for that, I added a 4.7K in the 3.3 side to match it.
So that works good and we get 3.3v up to 5v levels.

The 5v to 3.3v was just a resistor pair (68K and 115K to gnd) tapped centre to drop 5 to 3.3v

The battery monitor to 3.3v was a bit messy
3.9v zener driving an NPN and NPN follower, that then switches the mosfet for a sharp enough logic swithing to the DSR at the battery level we want (4.9 v cutoff)

But the things take me hrs to solder up and I cant afford the time.

What I need is a board that has 3.3 to 5v logic translation
Servo plug pins to plug to it like the pololo, same as the BT module has too.

Having 4 throughputs.

TTL5v out to 3.3vRxd
TTL5v In from 3.3vTxd
DTR3.3v to TTL5v Reset
The 4th so I can plug in my battery monitor circuit from it.

Your USB to serial board seems to do this, or does it.
I am not certain, if you can direct me on that info, or to another board I can use to to do this job.
I need to cut out soldering.

Ive been making the gear I sell for 2-1/2 years, the more we make, the more orders we get.
(it is prefered equipment for a multinational franchise chain)
I meet ETA’s on delivery by the skin of my teeth.
I have to cut down labour at ever chance to increase ouput.

The relays and such in the other thread would cut out a lot for me and be a bonus.

Having an volt interface I can just plug in with servo leads
(got a crimper, terminals and 2 x 1 kilometre rolls of servo wire.)
And that would carve off the other big time consumer for me.

So if you have something I can use now, let me know and some idea of how to make us of it.
Or can you make this for me.

Thanks again


Our USB-to-serial adapter does not have any level-translation features.

I have sent you an email about the customized servo/relay controller; you can reply to that email with your drawings or additional questions.

- Jan