You have the schematic for this project below. You need the Arduino, the ADS1115 ADC module, the OLED display, the ACS712 current module, the TP4056 based charger and a few more components. You have all the values below. After you make the connections, you can downlaod the code and upload it to the Arduino and give it a test.
- 1 x Arduino NANO/UNO: LINK eBay
- 1 x ADS1115 sensor: LINK eBay
- 1 x i2c OLED screen: LINK eBay
- 1 x TP4056 charging module: LINK eBay
- 1 x ACS712 current sensor: LINK eBay
- 1 x LM324 OPAMP: LINK eBay
- 10 x female bullet connectors: LINK eBay
- 2 x male bullet connectors: LINK eBay
- 3 x push buttons: LINK eBay
- 1 x sliding switch: LINK eBay
- 1 x 3.7V lipo battery: LINK eBay
- RESISTORS: 1x150, 1x220, 1x330, 2x2K, 1x6.8K, 1x10K, 1x20K, 1x470k : LINK eBay
- 2 x 1n4001 diode: LINK eBay
- 2 x 1uF nonpolarized capacitor: LINK eBay
- wire, solder, soldering-iron, 3D case, etc
Below you have the full code for this project. Download it and read it line by line in order to understand it better. You will also need the OLED library and the library for the ADS1115 module so downlaod those and install them on your Arduino IDE.
Download Adafruit_ADS1015 library: LINK
Download Adafruit_GFX.h library: LINK
Download Adafruit_SSD1306.h library: LINK
But first, let's go step by step and see how we measure each value: voltage then resistance, then capaciance, inductance and current. Let's start with volage since that is very easy. Below you have an example code for the ADS1115 module using the library. We read and print the values to the serial monitor. The ADS1115 has its own refference so it doesn't matter if the voltage battery is 3.7 or 4.2 or any other value, the output will always be precise.
So, make the connections and uplaot it to the Arduino. It will measure voltage with high precision. But!, you need the voltage divider at input in order to measure up to 20V. Otherwise the ADS1115 module will burn out. See schematic for voltage divider values and how to integrate that in the code measurement.
For more details see the RESISTANCE METER TUTORIAL. But we will use a basic voltage divider to calculate the resistence. As we know, a voltage divider is made of two resistences (R1 and R2) in series. The output voltage in the middle point is [R2/(R1+R2)]Vin. Using this formula and knowing the value of one of the two resistors and measuring the Vout it is very easy to calculate the resistence of the seacond resistor.
On our schematic, the resistance measurement is made with the 2k, 20K and 470K resistors connected on pins D6, D7 and D8. By that we have 3 different scales. If we set D6 as OUPTUT and set to LOW, that will our GND for the voltage divider. The other pins, D7 and D8 are set to INPUT so they have high impedance. So our volage divider is amde out of the 2K resistor and the unknown resistor. We measure the voltage on the ADC1 pin and using the formula we get the resistance. We do that for all the scales.
Make sure that you measure the vlues of the 2k, 20K and 470K resistors so you know the exact value and put that later in the full code. Put the multimeter into resistance mode and try different values. Tune your values in the code till you get good results.
See the past tutorial about this for more. But it is quite basic. We charge the capacitor using one of the Arduino pins. Then we discharge it through a resistor. The formula tells us that the capacitance value is equal to the time it took to reach 63.2% of the fully charged voltage divided by the resistor value.
So, in the code, when capacitance mode is selected, we charge the capacitor, discharge it and count time. When the capacitor reaches 63.2% of Vcc, we stop the time counter and calculate the capacitance value using the formula.
For more details see the INDUCTANCE METER TUTORIAL. But an inductor in parallel with a capacitor is called an LC circuit, and it will electronically "ring" like a bell. Well regardless of the frequency or how hard a bell is struck, it will ring at it’s resonating frequency. We will electronically strike the LC bell, wait a bit to let things resonate, then take a measurement. There is some internal resistance so this is really an RLC circuit.
When the multimeter is into inductance mode, we count the time between each pulse of the resonancy frequency. If we know the frequency value and also the used capacitance, in this case 2uF, we can get the inductance value adn print that to the OLED screen.
This part is also simple. We use the ACS712 module to measure current. The ACS712 current sensor is an economical solution for measuring current, it works internally with a Hall effect sensor that detects the magnetic field produced by induction of the current flowing through the line being measured. The sensor gives us a voltage output proportional to the current, depending on the application we can use the ACS712-05A, ACS712-20A or the ACS712-30A, for ranges of 5, 20 or 30 amps respectively.
We know the mV / A value for each range so all we haev to do is to measure the voltage drop from the current sensro and divide that by the mV value and we get the current value. Is that easy. But, the sensor gives us a value of 2.5 volts for a current of 0A and thereafter increases proportionally according to the sensitivity, having a linear relationship between the voltage output of the sensor and the current. This relationship is a straight line in a graph Voltage vs Current where the slope is the sensitivity and the intersection in the Y axis is 2.5 volts. The equation of the line would be the following
V = mI + 2.5
Remember to downlaod the full code. Tune the values at the beginning of the code. Also install the adafruit libraries for the ADS1115 module and the OLED screen. Compile, make the connections and upload. Test the multimeter.
Downlaod the 3D files from below. I've used 2 perimeters, 20% infill and a 0.4mm nozzle and PLA amterial. The case is made out of 2 parts and 3 plastic buttons. Cut your PCB to the case dimensions and place that inside. It has space for the OLED screen, sliding switch and the USB connectors for the Arduino and charging module.