Test 2: performance

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/17/2017 at 17:510 Comments

Some observations and test results

- protection

- consistency of measurements

- operation of the access point

- dynamically serving the web page

- operating the design from a single battery charge

- at last but not at least - how did the voltmeter measured voltages

The outcome - this is a voltmeter that underreports the measured voltages by 6 mV in the worst case at full scale measurement (below 0.5%).

1. Protection

worked well, 5V was tolerated at any pin for continuous time. The voltage drop at the protection resistor was found equal to Vin - Vdd = 0.806 V. The current through it was well within the specified limit for the ESD diodes 0.806V / 12 kOhm << 10 mA

2. Consistency of measurements

The device was powered from the 3.3V rail, which set the limit on the voltage to measure. 16 bit ADC should be capable of resolving 3.3V/2^16 or around 0.1 mV. As a switched mode power supply is used for converting the LiPo battery output to 5 V, one could expect the power supply riples affecting measurement consistency. These ripples were partially reduced by the on module linear voltage regulator, which converted supplied 5V into 3.3V. Additionally, as the voltage was displayed with the mV resolution, possible varitions in some less significant bits could not be observed. Finally, as the ADC operated using the sigma-delta (sigdel or delsig) principle, the input noise was effectively averaged over the measurement interval (measured at about 130 ms for a single shot measurement).

In practice measured voltages were stable over time. Sometimes, when the measured voltage was close to some integer number of mV plus half a mV, the last digit of the reading could fluctuate up and down by a single mV as it was expected.

3. Operating the access point (AP) in a busy 2.4 GHz environment
(no, I did not put the ESP into a microwave oven; do not to it either)

The device showed up in a buzy environment (with 7 other WiFi networks operating at the same time) using the default WiFi channel. Two and even three stations connected to this AP operated without any major issues.

4. Dynamically serving the web page

The selected 300 ms interval for page reload worked for a long time for a single client. Two clients refreshing the page after 300 ms each worked together for a few minutes then one of these stuck waiting for the page from the server but the other kept going.

I put the client's time to the web page in the false hope to find the time the design could operate from the battery. I would note the time the operation started then note the last time displayed, and find the difference. Unfortunately this approach did not work for two reasons. First, despite the page was served reliably for over one hour when I kept an eye on it, the connection was lost over longer time intervals. Second, on many occasions the reloaded page was not received completely before the connection broke, and no time stamp was displayed.

I do not think it is a big problem if the user has to refresh the web page once in an hour though.

5. Operating time from a single charge of a 520 mAh LiPo battery

ESP8266, like any other WiFi transceiver, is power hungry. The measured transmit current is around 70 mA by several reports, which is the value stated in the datasheet. Additional power hogs for the Wemos mini system are the on module linear regulator that dissipates 1.7 V or 33% of the supplied 5 V, and the boost DC-to-DC converter that produces these 5 V out of the varied output voltage of the LiPo battery.

As it was discussed above, I could not measure the operating time the way I intended. Nevertheless, when the client was reconnected after several unmeasured timeouts, it was possible to load the web page after slightly over 4 hours then the AP disappeared.

6. Voltage measurement results

Finaly... Yes, this is essential for a voltmeter to measure voltages but I would call this project a failure if the IuT voltemeter did only this.

The following behavior was observed when using my ADC module's driver:

- if an input is floating, the measured voltage is 0.5788 V (0.577 mV for the ADS1015 module). If a multimeter is connected to a floating pin, the measured voltage fluctuates within 300..500 mV (either low impedance driver and/or a pull down resistor is to be used for every pin OR when the measured voltage equals to this value the user should be warned of possible float on this input - TODO)

- if there is an overvoltage at any of the inputs, the other readings are became affected too

ADC channel VinV, mV VinADC, mV Reading, mV
0 (5V pin) 4,753 3,947 3,827
1 (pot) 2,156 2,296 2,309
2 (Vdd) 3,290 3,287 3,402
3 (Gnd) 0 0,196 0,209

As you can see, there is no definitive relations among the measured voltages. If close to Vdd voltage is measured at any channel, the user should be warned (TODO).

- conversions in the single shot mode took 128-129 ms thus higher than 8 SPS data rates can be inaccurate

- measured volatges at different channels under normal operation

ADC channel VinV, mV VinADC, mV Reading, mV
0 (float) - - 0,579
1 (pot) 2,144 2,141 2,141
2 (Vdd) 3,291 3,287 3,285
3 (Gnd) 0 0 0

There is a small voltage drop at the protection resistor (3-4 mV) that needs to be accounted for accurate measurements. The measured voltage was understated by 2 mV at full scale measurement.

- the protection resistors' values (tolerance 5%) were measured on the custom shield as follows: 11.97 kOhm, 11.86 kOhm, 11.93 kOhm, 11.99 kOhm for channels from 0 to 3 respectively.

The outcome - this is a voltmeter that underreports the measured voltages by 6 mV in the worst case at full scale measurement (below 0.5%).