4-20mA analog input to serial out

Hi All. I have a sensor that I would like to output the info from via serial from analog pin 1 on my arduino.
The device is a PSC-154 http://www.tdsmeter.com/products/psc154.html

It has a + and - connection and requires a remote powered device (arduino?) It says it is 5v.

I tried plugging A1 to - and 5v to + but nothing registers on serial monitor.

I also tried some variations on this: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1233290290
but am not getting anything.

So I whipped out the pot that came with my getting started kit and was able to brighten and dim my LED... So my arduino works.

Any ideas on how to hook this thing up?

im using just the basic analoginput sketch.

Firstly your device is not a sensor, it is a controller that needs mains power and suitable sensors connected.

It outputs both an analogue current (4 to 20ma) based on controller computation and a dry relay contact for use as an alarm or switching facility.

I cannot determine what it means by stating the relay is a 5volt unit unless it also outputs a 5 volt on/off signla for an external relay. A copy of the operating manual should clarify this for you.

The device outputs 4 to 20 ma but can only do so if you present it with a load resistor. I suggest you connect a 250ohm resistor between the terminals marked as 4-20 then connect the arduino input and ground across the resistor. The 4-20 output will now produce a voltage signal of 1.0 to 5.0 volts across the resistor for the arduino to read. Getting hold of a 250 ohm resistor might be problematic so use a 220 ohm and scale the arduino such that 0.88 volts equals 0% span and 4.40 volts equates to 100% span.


Yes it is a controller. Thanks for the clarification.
Yes the relay is 5v I double checked the manual. (5 sheets of half paper)
So sorry to be dense.
I did find a 220Ohm resistor.
" I suggest you connect a 250ohm resistor between the terminals marked as 4-20 then connect the arduino input and ground across the resistor."

I dont quite get you there.
How would that look if plugged into a breadboard?
I'm going to wire it back up and take a picture :wink:

this is whats not working.

I need to see the user manual before advising how to connect it up since you are obviously seeking exact instructions. Can you either scan in the sheets or advise exactly what the markings are on each of the units user connected terminals.


Sorry no scanner.. Hope you can see these. These are the only 2 pages that have anything relevant to output.

I see that it requires an external source to drive the 4-20 circuit. Does any of the other 3 pages state what the minimum voltage is for this source. The pages are legible so can you photogrqaph the other 3 so's we have all the information.


Not very good user guide but here we go again.

The 4-20 transducer within the controller can cope with a maximum supply voltage of 25volts (20ma x 500 ohms)
The instructions do not specify a minimum drive voltage but it should be capable of running off the arduino 5 volt supply.

Because the drive volts are coming from the arduino you need to wire as follows :

a) connect arduino 5 volt supply to the 4-20 + terminal (6) on the controller.

b) connect a wire from the 4-20 - terminal (7) on the controller to the arduino signal input. You might want to insert a 1k resistor in this line to the arduino to limit input current under fault conditions but it's neither necessary nor, if used, will affect calibration.

c) connect the 220 ohm resistor from the 4-20 - terminal (7) to the arduino ground.

The system now operates as follows :

The controller 4-20 transducer acts as a variable resistor and controls the flow of current from the arduino 5 volt supply, through the 220 ohm resistor to the arduino ground. This flow produces a voltage signal across the 220 ohm resistor which is your measured variable into the arduino.

4 ma will produce a 0.88 volt signal = 0%
20ma will produce a 4.40 volt signal = 100%



Have just had another look at your photograph and it seems to be wired up as I've suggested in the previous entry. That being the case then it's possible that the 5 volt arduino supply is inadequate to excite the 4-20 transducer. In industry we used around 28 volts volts to run 4-20ma current loops. You could try attaching say 18 volts or so as the supply to terminal 6 rather than the arduino 5 volt source, with the 18 volt negative lead being commoned to the arduino ground. However this exposes the arduino to a possible overvoltage if the 220 ohm resistor becomes inadvertantly disconnected so you might want to ensure it's very well connected.


Thanks very much for the detailed answer. I will give this a shot today. I do have some other PSUs I could use to boost the power if Arduinos 5v doesnt work. I will post back the results.
again thanks for taking a look.

well that was scary. i plugged the controller to a 12v 2amp power supply. 6 to the PSU and ground on the PSU to the ground on arduino.
smoke came out of the controller. lol
I quick unplugged it and the controller seems to be working still so hopefully I didnt fry it.
Maybe to many amps?

Maybe to many amps?

Nope. Amperage is pulled, not pushed. You could use a 200Amp power supply, if you had one. The problem lies somewhere else.

I fired off an email to the manufactor. hopefully they have some insite.
any idea where that problem may lie?

I take it you still had the 220 ohm resistor between terminal 7 and te arduino / psu ground

Even if the controller was already faulty, 12 volts can only drive 12/220 or 50 milliamps (approx) which equates to about 0.5 watts. There is noway this could produce smoke. It is probable therefore that you had a wiring error.


4-20mA is industrial equipment which works almost always (never seen anything else) on 24volt.
Also think that the output wil be 4-20mA 24v so that it will blow your arduino input to smithereens.

I dont doubt a wiring error...
Ive been reading and playing off and on for the last year but electronics still hasnt quite clicked in my mind yet.

edited (wrong image)

Yep, there is indeed a wiring error. You have connected the PSU negative lead to terminal 7 instead of the arduino ground. This has placed the whole 12 volts across the 4-20 transducer without any burden resistor (220 ohms). To iterate, terminal 6 goes to your PSU positive, terminal 7 has one end of the 220 ohm resistor connected and also goes to the arduino sense port. The free end of the 220ohm connects to the PSU negative and also goes to the arduino ground connection.

In all likelyhood therefore your controller 4-20 output is no longer working. However it may have survived the trial by fire so it's worth having another go but this time correctly wred up.

I would also recommend that you disconnect both arduino connections until such time as you can confirm that you do indeed get a correct voltage developed across the 220 ohm resistor. Once you have confirmed this then connect the arduino as the measuring device.

It is important when juggling wires like this that you draw out a circuit diagram showing where each and every wire goes before you power anything up. This clarifies in your mind that what you are doing is workable.

With respect to Wortelsoft's comment. Provided the 220ohm burden resistor is ALWAYS connected as I have already emphasised then the arduino can accommodate a 4-20 circuit since the current is NOT flowing throw the arduino. The arduino simply measures the voltage (which is limited to 4.8 volts) across the resistor. If you wanted to be absolutely safe you could wire a 5.1 volt zener diode across the arduino input terminal and ground. This would ensure that any wiring error places no more than 5.1 volts across the arduino.

Note that the arduino should be powered up before you energise the controller circuit since it is not a recommended practice to inject signals into unpowered systems.


trial by fire.. literally. I like that. Well you live and learn. Ill try rewiring it here in a few minutes.
Thanks for the follow up and explanation, it definately helps.

Am I getting closer? I feel like it looks like the power is making a big circle with the arduino sucking off what it needs.
I plugged this all up with alligator clips (good thing I stocked up) but then got scared and thought I'd ask.