Interfacing with digital scale - pull-down logic level conversion

Ello

I have been scratching around this problem for months...

I think my problem statement is: "how can I do one-way logic level shifting (1.8v to 5v) without pull-up resistors on the low side?"

I am looking for guidance on the right approach, rather than a detailed solution. So something like: "keep trying with the TXB0108". If I continue to have problems I can post more detailed questions in another topic.

I am trying to interface my Arduino with some capacitive digital scales - these are the same as 'digital calipers' with one difference, which is causing me some problems.

I have followed some of the many posts on interfacing 'digital calipers' and successfully did it with a spare set of calipers. I then moved on to my digital scales (a longer version of 'digital calipers' to be used on my mill), and have been stuck ever since.

My scales have the usual four contact points under a sliding cover: 1/ +1.8v 2/ Data 3/ Clock 4/ Gnd

The problem is that touching either the data line or clock line to +1.8v either zeros the scale or activates a mode (e.g. inches to mm).

So, using commonly available logic level converters that use pull-up resistors does not allow me to read any data from the scale, because the 'rest' state of these lines is high (+1.8v) - which zeros the scales.

I have not seen this problem noted or addressed in other posts about interfacing with digital scales.

I have tried:

  • BSS138-based logic shifters like this one
  • TXB0108 breakout this one - this looked promising as the datasheet noted the use of external pull-down resistors
  • stand-alone transistors like 2N2222
  • adding pull-down resistors to the high and low side of the logic converters
  • adding diodes to the low side of the logic level converters

The 2N2222 transistors were the most promising but despite much googling I could not get a signal on my logic analyser. I am happy to persist with these if this is a viable solution.

I have not tried driving the scales at a higher voltage (a solution used on some other posts) because they are not cheap and I can't afford to replace them. Also I want to be able to leave them on for several hours at a time.

I am using an IkaLogic/ScanaLogic logic analyser which works down to 2.8v. I have attempted to use this on the 1.8v signal from the scales, and got a group of signals that correspond to the usual 2 x 24-bit words for calipers, but the clock signals are not consistent so I am guessing that the analyser is not correctly reading the +1.8v signals.

I have not yet introduced the Arduino into the circuit, as I am just trying to successfully convert the signal to 5v first, and read it with my logic analyser.

As you may gather from some of the things I have attempted, I am not an electronics expert. I appreciate that my description here is not complete (i.e. no circuit diagram or description of what went wrong with the things I have tried), however I suspect that the solution may be quite simple.

Any tips?

B

Use an op amp/compator powered from 5v. If signal into plus input is above level at minus input then output goes high. Set minus input at 1.2v, 1.5v with resistor divider or trim pot between 5v and gnd

Thanks CrossRoads - it seems every time I post here you reply!

Don't I need +ve and -ve voltage supplies to run an op amp?

I have an op amp LM741, hooked it up with +5v (V+) and 0v (V-) and got V+ on the output pin regardless of what voltages are on the input (inverting/non-inverting) pins.

B

Don't I need +ve and -ve voltage supplies to run an op amp?

No.

I have an op amp LM741, hooked it up with +5v (V+) and 0v (V-) and got V+ on the output pin regardless of what voltages are on the input (inverting/non-inverting) pins.

Have you read the data sheet of that device? You need 12V to power it so it is not going to work off 5V. The LM741 was a new chip in the very early 70s, it is now well past its sell by date, use a better chip.

Thanks Grumpy_Mike - I did read the datasheet (TI), it didn't give a min value for supply voltage. I take your point on the age of 741, however I have tried the same with a CA3140 with the same result.

I am not using caps or resistors in the circuit, I suspect this may be the issue although despite extensive googling and datasheet reading I can't work out what to do. I am new to op amps and none of the circuits online use caps/resistors for a simple comparitor circuit.

However, we are now onto a different topic - I asked for some guidance and I got it many thanks to both of you. At least I have an approach that I can persist with.

Thanks again

B

...and finally, just to close off this topic for future readers, I found two quad-channel op amps that look like they will do the job (5V and Gnd single source supply voltage, fast response times):

  • LT1014
  • MC34074

Have ordered one of each and will post results here in a week or so.

B

I am not using caps or resistors in the circuit, I suspect this may be the issue although despite extensive googling and datasheet reading I can't work out what to do.

An op amp amplifies the difference between the two inputs. Without any resistors or variable voltages all you can do is connect the +ve input to the + rail and the -ve input to ground and you will see a high voltage on the output. Then swap the inputs around with the -ve input to the + rail and the +ve input to ground and the output should be a low value. Leaving any of the inputs not connected, that is known as floating, gives a result that might be consistent but is not predictable.

Problem solved many thanks CrossRoads.

I used the quad-channel MC34074 op amp, with a 1.1V reference voltage created using voltage dividing resistors from the 5V supply.

This gave clear and consistent signals for my logic analyser.

The MC34074 runs on down to 3V and from a single supply (i.e. not dual +ve and -ve voltage supplies).

The LT1014 is not suitable for my application as it needs dual supplies and min 13V supply voltage. Into my growing collection of ICs it goes.

B