To pull or not to pull - that is the question

A project log for IuT voltmeter for a breadboard

Measure several voltages on a breadboard and display results on a smartphone for less than $10 for parts

AlexanderNAlexanderN 06/19/2017 at 23:150 Comments

... which turned to have the following short answer - to pull down with a 680 kOhm resistor. For a detailed answer

we need to acknowledge that a floating input of the ADS1x15 results in a rather high voltage reading. Therefore one either need low impedance driver at each input of the module (because the analog multiplexer is internal to the IC), which costs money and space, or a pull down resistor which value needs to be somehow optimised. I used an excellent programmable resistor as shown below.

(No affiliation with the maker, just bought one. To be frank that was the second time I used it but I believe if you do need one it is indispensable. There is also a3D printed case on Thingiverse which I only noted right now.

An alternative is an SMD kit to solder yourself where the resistance is programmed by clicking buttons. There are some other options as well.)

I used my_ads.lua module and changed ran and ch settings from the console when the resistor was connected in parallel to the relevant inputs. The following readings were recorded in mV for channel A0


The same readings for 2 MOhm pull down were observed for channels 1 and 3. The good news is that for any resistor tried the measured voltage was below the full scale limit at the highest gain. Therefore, if the automatic gain control is implemented and the input is left unconnected, the gain will increase until the reading becomes zero.

I did not try higher values for the following reason - to have a voltmeter that only measures to 3.3V is not sufficient for most uses. Therefore the final design will necessarily need an on board potential divider to measure voltages up to, say, 50 V. This voltage is safe to apply to an input directly, and is considered generally safe to humans although some exclusions do apply (link1, link2 and others). As the voltmeter has four channels, it makes sense to use resistor network (or array) which has four resistors in the same package. When I looked up networks available in single quantities from (are they sponsors of Hackaday or should I have been used Mauser instead?), the biggest value happened to be 10 MOhms. Using an online potential divider calculator, I have got the following resistor values

Consequently the final design will have three SMD resistor arrays of four resistor each with the values of 10k, 680k and 10M. The first array will be connected as shown on the schematic diagram in series with the ADS1x15 inputs. The other pin will be connected to the pull down arrays of 680k and turned pin headers for 1:1 inputs. The 10M array will be connected to the 1:1 inputs by one respective pin whilst the other pin will be connected to 1:10 turned pin headers. The dividers will be calibrated using voltages measured with high accuracy. The user will have an option to tick a checkbox for each channel where the wire is connected to the potential divider rather than to the regular 1:1 input.

Will need to assess whether to solder the additional resistors and sockets to the prepared custom Wemos mini shields or leave it for the final PCB design though.