Multiple Analog Inputs Using One Analoge Pin

40,128

76

32

About: The term, engineering originates from the Latin word Ingenerare, which means "to create". My name is Vincent and I am a graduating student in the master track Construction Management and Engineering at Delf...

Hi!

In this instructible I will explain how to read values of more than one sensor by using only one analog input pin.

You might wonder why you want to this.

When you are using a Nodemcu board, as illustrated in the picture, only one ADC pin is availible. For a small weather station I would like to read values of multiple analog sensors: a rain sensor and a light intendsity sensor. This is unfortunately not possible with this board.

A solution is to multiplex the sensors. This works as follows: You will turn a sensor A on, read sensor A, then turn sensor A off. After this you will do the same for sensor B.

The idea is based on the instructable of Breagan. As his code was written in LUA I have writen a sketch in C++. This is handy when you are programming your Nodemcu in IDE (the arduino environment). For ease I tested the sketch and wiring on the arduino UNO/duamilanove.

please see also the intructable where I used this technique!

Step 1: Wiring

For this project you need the following:

  • Two 10K ohm potentiometers;
  • Two diodes;
  • One 10K ohm resistor;
  • Arduino;
  • Broadboard;
  • Some wires.

Connections:

  • Connect one side pin of each potentiometer to ground;
  • Connect the other side pin of potentiometer A to pin 10 of the arduino;
  • Connect the other side pin of potentiometer B to pin 11 of the arduino;
  • Connect the pin in the middle of both potentiometers via a diode to the analog pin 0;
  • Add a pull down resistor (10K ohm) between the ground and the analog pin 0.

The potentiometers do have the same characteristics as analog sensors and are easy to use for testing. The diodes are the key for isolating the sensor circuits. Diodes restrict current to only one direction. Without diodes the sensors still work, however they interact with each other.

Step 2: Coding

In order to multiplex, only one sensor can have a complete circuit at a time. By setting the the GPIO pin 10 to HIGH, we are sending 5v to sensor A and completing the circuit. The other pin (GPIO11) is being set to LOW and is therefor sensor B is turned off.

The sketch will read both values and print a value between 0 and 1023 in the serial monitor. You can open the monitor in the IDE software by pressing CNTRL+M.

As one can see in the illustration above the first potentiometer (A) is fully open while the second one is closed. After this potentiometer A is slowly closed until both values approach zero. After this potentiometer B is fully opened.

Have fun trying this out!

Vincent

Untitled Sketch 2016-04-23

Share

Recommendations

  • Tape Contest

    Tape Contest
  • Trash to Treasure

    Trash to Treasure
  • Arduino Contest 2019

    Arduino Contest 2019

32 Discussions

0
None
nusnus

5 months ago

Nice schematic and idea! Only problem is that you loose 0,7V from the analog scale due to diode voltage drop. For example the Arduino has an analog scale of 0-5V. This means that the processor will give an AD value of zero until the potentiometer voltage is > 0,7V. In AD numbers this means (0,7/5)*1024 = 143 or 14% of full scale. Quite big loss.

Also as you can see in the example picture from serial monitor the analog values are from 0-908. Lets do the maths: (908/1023)*5 V = 4,44 V. 5 V - 4,44 V = 0,6 V <- diode voltage drop.

This analog multiplexer is a very good idea but you have to consider the physical restrictions when writing the code.

0
None
AdunKo

1 year ago

Hello I have a question how many potentiometers can I plug into one analog input ? And if I have one set of 16 potentiometers axial and another set of 16 pots horizontal is it neccessery to use 2 diodes 1resistor for every analog input ? or is there a "easier" solution need clarification on this thank you and great post thanks alot

1 reply
0
None
Anumolu NareshAdunKo

Reply 6 months ago

In that cases use relay to switch the swicth between two potentiometers.

0
None
Anumolu Naresh

Tip 6 months ago

We have multiple analog pins in Arduino use that pins.

0
None
Aryw1

Question 1 year ago

how i can know how many resistor for sensor ?

0
None
AdunKo

Question 1 year ago

Hello I have a question how many potentiometers can I plug into one analog input ? And if I have one set of 16 potentiometers axial and another set of 16 pots horizontal is it neccessery to use 2 diodes 1resistor for every analog input ? or is there a "easier" solution need clarification on this thank you and great post thanks alot

0
None
Fo2sH828

1 year ago

you really saved my life !!

but node MCU supply 3v , what if a sensor usess 5v ?

3 replies
0
None
NutellaFFo2sH828

Reply 1 year ago

Edit, the last technic with only the power supply defeats the purpose of this instructables

0
None
NutellaFFo2sH828

Reply 1 year ago

You can either have a transistor in a switch configuration to switch higher voltages with only 3.3V (or less) needed to activate, or you take the easier way and buy a 3.3V to 5V step-up converter. What you can also try is just to have an external 5v power supply connected to the sensor and just have the Output wires connected to the nodemcu, but remember to connect ground of the power supply to that of the nodemcu.

0
None
ReviandiNaufal

1 year ago

if i use other diodes, not the 1A 50V diodes, would it still work?

0
None
PatipolT

1 year ago

Please give me the suggestions.
1. Would it work if I connect the pin in the middle of both analog sensors directly to the analog pin 0 without a diode?
2. Would it be possible to use other resistor rather than 10K ohm for the pull down resistor? What will happen?
Thank you.

3 replies
0
None
CraigT60PatipolT

Reply 1 year ago

Or you could just buy a quad ADC and use it for four inputs, no multiplexing needed. After researching this today I picked up a quad ADC from Aliexpress for $2.25. Just search for ADS1115 for 16 bit and ADS1105 for 12 bit. You can read the channels with I2C.

0
None
CraigT60PatipolT

Reply 1 year ago

Without the diodes you'd have both sensors in the circuit at the same time, and the one powered down could be shorting the output of the other to ground.

0
None
PatipolTCraigT60

Reply 1 year ago

Thank you for your reply.
Is that means sensor values would be unreliable?

0
None
CraigT60

1 year ago

Yes. The output would be influenced by both sensors.

Since diodes have a drop across them that varies by current, for more accurate readings you'd be better off using a multiplexer chip. You can get 8x1 and dual 4x1 multiplexers for a dollar or less.

0
None
Raphango

2 years ago

Great ible!

The only problem in using diodes is that you have a voltage drop, so you have to offset this to get a correct read.

BTW, you could add this idea to your ible: Get multiple button presses in a single analog port, like this video:

All the four buttons are linked to a single ATTiny85 AnalogIn, due to the lack of sufficient DigitalIO to the circuit.

3 replies
0
None
RaphangoRaphango

Reply 2 years ago

Forgot to mention that the different reads are get through different resistor values attached to the buttons.

0
None
IngenerareRaphango

Reply 2 years ago

Hi raphango, yes I did read anything about this drop in voltage but I do not realy understand why it occurs. I will relook to it by this evening. btw, untill now the sensors work perfectly (as you can see on the Thingspeak channel). This is partly because the particular data I ask does not have to be very accurate (day light and rain).

I read before about using multiple buttons using one analog pin. This principle (with different resistor values) scan also be used for reading data of multiple sensors. The only thing you have to know is in which range the sensor throws out his data .

0
None
CraigT60Ingenerare

Reply 1 year ago

There's a voltage drop across diodes because diodes have resistance (and capacitance, but that's another story). The drop depends on the current passing through the diode.

Diodes aren't really one-way valves that are totally closed in one direction and totally open in the other, although in most applications we can use them that way, as long as we stay within their specifications.