

DMM KiCAD V4 next
A small, open hardware DMM
- Size
- 68.5 × 53.3 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 80
- Nets
- 84
- Pads
- 285
- Tracks, vias
- 394, 49
- Pours
- 7
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 22 Jun 2025
- Updated
- 1 Nov 2026
Overview
DMM KiCAD V4 next is an open-source printed circuit board by oihdesigns, from the oihdesigns/Micro-DMM repository on GitHub. It is a 4-layer board of 68.5 × 53.3 mm with 80 parts on 84 nets, routed with 394 tracks and 49 vias.
It is built around the RFM-0505S, IX4426N and ADS1115IDGS, with the TPS613222ADBV, LTV-824 and ISO1540D among its other parts. Its parts include 20 resistors, 15 capacitors, 15 connectors, 13 ICs and 4 switches.
Main components
7RFM-0505S
SIP,11.5x6mmIsolated Power ModulesYLPTECIX4426N
SOIC-8-40℃~+125℃ 1.5A 1.5A 10ns 2 2.4V 4.5V~30V 800mV 8ns IGBT、MOSFET Low Side SOIC-8 Gate Drivers ROHSLittelfuse/IXYSGate DriversADS1115IDGS
MSOP10Ultra-Small, Low-Power, 4 Channels 16-Bit Analog-to-Digital Converter with Internal ReferenceTexas InstrumentsUncategorisedTPS613222ADBV
SOT-23-5-40℃~+125℃@(TJ) 1 1.6MHz 5V 6.5uA 900mV~5.5V Boost Boost Built-in Fixed Yes SOT-23-5 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersLTV-824
DIP-8-30℃~+100℃ 1.2V 100mV@20mA,1mA 2 20% 200mW 300% 35V 3us 4us 50mA 50mA 5kV AC,DC Phototransistor DIP-8 Transistor, Photovoltaic Output Optoisolators ROHSLite-OnTransistor, Photovoltaic Output OptoisolatorsISO1540D
SOIC-8-40℃~+125℃ 2500 50kV/us Bidirectional Bidirectional automatic direction、Open-drain buffer output SOIC-8 I2C Isolators ROHSTexas InstrumentsI2C IsolatorsMMBT3904
SOT-23-55℃~+150℃ 1 NPN 100 100nA 200mA 200mW 300MHz 300mV 40V 6V NPN SOT-23 Bipolar (BJT) ROHSJiangsu Changjing Electronics Technology (CJ)Bipolar (BJT)
README
README.mdUpdate Late August '25:
I've recently started a new job. It's great, but has longer hours than my previous job. This will negatively affect the amount of time I put into this project...
Micro-DMM
This is the PCB design and code for a 4.5 digit DMM/ instrumentation module. It is designed and written primairly for Arduino-style development boards.
I've developed this DMM in my work testing and troubleshooting electronics to make my life easier.
I've had Deep-Wiki index my documentation. It did a mostly okay job. You can read its summary here:
The main features are:
- The most recent designs have open-lead detection in voltmeter mode. I believe this makes it the first voltmeter in exisitance that can automatically, safely, and positively tell the difference between "there is low impedance between these points" vs "current does not and can not flow between these two points." Please see the white paper for details.
- Using keyboard emulation to directly type values into a computer for me. (Extremely useful when troubleshooting a populated PCB - you can quickly ohm out both the problem board and a good one directly into Excel to look for different impedances between given contacts.)
- Very sensitive low-resistance readings (accurate to better than 0.01 Ohms with proper lead zeroing).
- LED blinks when I'm reading logic level voltage or higher.
- Simultaneous current and voltage measurement abilities (requires a Hall sensor-based ammeter module).
- Data logging for current and voltage, with customizable triggers to autolog both.
Raspberry Pi user interface
The repository now includes a Raspberry Pi-friendly interface that mirrors the firmware display and logging features. The UI is written in Python using Tkinter so it ships with Raspberry Pi OS and can run directly on the framebuffer or under X11. To start the dashboard with the built-in demo generator run:
python3 -m raspi_port.appIn deployment the measurement host should feed real readings to the MicroDmmApp class instead of the demo thread. The window presents the same information rendered by updateDisplay()—live voltage or resistance with min/max tracking, current when enabled, the active mode, timestamps, delta/null information, and log counters. Interaction hotkeys replace the touch panel:
| Function | Touch color | Hotkey | Description |
|---|---|---|---|
| Mode cycle | Red | M | Advances through the measurement modes. |
| Manual log | Green | L | Appends the most recent sample buffer to ~/micro_dmm_logs/data.csv. |
| Auto log export | – | A | Writes the auto-log buffer to ~/micro_dmm_logs/data_autologged.csv. |
| Min/Max reset | Blue | Z | Clears the stored extrema, just like tapping “Min/Max”. |
| Type/Δ | Yellow | T | In Type mode it writes the displayed value to typed_entries.txt; otherwise it arms the delta/null workflow. |
On a Raspberry Pi you can optionally map these controls to hardware buttons by defining a MICRO_DMM_GPIO environment variable before launching the program. The value is a comma-separated list such as mode=5,manual_log=6,auto_log=13,minmax=19,type=26. Each entry binds a GPIO pin (using gpiozero.Button) to the corresponding action.
All log exports stay on the Pi’s filesystem under ~/micro_dmm_logs/. The CSV layouts match the firmware’s logCurrentData() and autologArraysToCSV() routines so downstream tooling continues to work. The typed_entries.txt file replaces the USB keyboard emulator and captures the same formatted text that would have been “typed” into a host PC, while also echoing it to stdout for quick clipboard-style use.
I have a long and detailed write-up of the circuitry design on my personal website: https://www.oihdesigns.com/arduino-multimeter-project
There are a couple videos here: https://youtu.be/rzj-ar2Qv_A and here: https://youtu.be/hZ4eH-7RNsU
Here are more photos:
Design Prioities and Compromises:
This meter is designed to complement and support the more expensive equimpent generally found in a lab, rather than replace it. With that in mide, I've made the following design decisions on my priorites:
Minimal Protections
- The voltmeter circuitry is not designed to measure amplitudes higher than is dangerous to humans. By not designing a tool that is supposed to keep people safe I can dramatically simplify and shrink the design. (The said, I've nailed the voltmeter circuit with a 1000V megaohmmeter. No problem.)
- Likewise, the resistance circuit can be damaged if you accidentally measure too much /unregulated voltage. This is a tradeoff for a very fast and accurate autoranging ohmmeter circuit that can accurately read from less than 0.01 to more than 5,000,000 Ohms.
Streamlined Functions
- There is no built in ammeter, inductance, or capacitance function. Ammeter function is easily added as needed with either an off-the-shelf module, or a low value resistor across the voltmeter. There isn't an easy way to add indutance or capacitance. I don't use any of these often enough for them to be worth taking up the PCB space.
Current Support:
As of writing I have functional versions (I confirmed the core functions work) that support the:
- Arduino Uno R4
- Arduino Giga (with or without the display shield)
- Arduino ESP32 Nano (via jumpers)
- Seeed Studio XIAO RA4M1 (same processer as the Uno R4)
- I have partial function on a direct computer (Windows 11) interface with a FT232H breakout board (AdaFruit makes a nice one). I can see the data lines and it looks like most of the logic works, more or less. It's a proof of concept port and a test for "can I tell the AI to take an Arduino sketch and port it to Python" (the answer is far more yes than it use to be).
- That said, it's very slow (reading in at 2-3sps). I'm not sure how to optimize this, and speeding it up is not an immediate priority.
Future Plans:
Major Function Things to Address:
- Writing to MicroSD cards over the AUX SPI Bux on the RA4M1 XIAO boards. I set this up and tested it, but it didn't work and needs to be troubleshot.
- Getting the code to run on the XIAO RP2350 board. It compiles but does not run.
Potential Refinements To-Do List:
- Revise the PCB design to shrink the physical size (the current design was made with hand-soldering in mind). This would involve:
- Smaller footprint components for things like the pullup resistors.
- Dedicated multiple transistor packages for the switching functions rather than the discreet components.
- There are probably other ways to shrink the design.
- There is some potential performance improvement room to the analog circuit if I take advantage of the ADS1115's max input voltage of ~6.144vdc instead of 5vdc.
- There is always room for cleanup in the code to make it more elegant.
Ideas for Expanding on the Current Function / :
- Make a version that uses an ADS1256 instead of the ADS1115 to support measurements speeds up to 30,000 samples/second and resolutions of up to 24bits. (I have had proof-of-concept success with this using a Raspberry PI ADS1256 hat.)
- Make a version that runs off a Raspberry Pi.
- Implement WiFi/Bluetooth features on the boards that support it.
- Implement DAC output as a simple function generator for the boards that support it.
- Add a jumper on the PCB and write the code to allow four-wire resistance readings.
If you're interested in helping develop this please feel free to reach out.
FAQ:
-
Q: What is the logic voltage?
- A: The current PCB works for either 3.3 or 5vdc.
-
Q: Is there voltage isolation on the USB?
- A: There is enough isolation (500K Ohms) that you will not hurt anything by measuring voltage (in either polarity) on something connected to the wall while the meter is also connected to the wall, but not enough to prevent ground loops from interfering with measurements. See the longer, full write up on my website, and then buy the Adafruit USB voltage isolation board.
-
Q: The Adafruit isolation board says "100mA." What does the meter draw?
- A: With the XIAO RA4M1, 50-60mA typical when measuring voltage. Closer to 100mA when measuring resistance. The resistance circuit goes into low-power mode several seconds after being open (except in a no-sleep mode).
-
Q: Does it work on an Arduino Uno R3?
- A: As a basic meter, yes, but there's no keyboard emulation.
-
Q: Can I buy one?
- A: Eventually, yes, probably? I do not have a current timeline for bringing these to market. If you want one please reach out to me. If you want to hand-solder it yourself I can sell you a single PCB and maybe some of the components with higher individual costs.
Parts
80| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 0 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R7, R12, R21, R22, R22, R23 |
| 4 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4, C7, C8, C17 |
| 4 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C5, C6, C18 |
| 4 | 4.7uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C9, C10, C15 |
| 3 | 10k x4 | Library:RESCAXS127P508X320X70-8N | RN3, RN4, RN5 |
| 3 | SW_Push | Button_Switch_SMD:SW_SPST_CK_RS282G05A3 | SW1, SW2, SW4 |
| 2 | 22uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C16, C19 |
| 2 | 499.0K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R17, R18 |
| 2 | AO3400A MOSFET | Package_TO_SOT_SMD:SOT-23 | Q2, Q8 |
| 2 | Barrel_Jack | Connector_BarrelJack:BarrelJack_Horizontal | J14, J15 |
| 2 | Conn_01x01_Socket | Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical | J16, J17 |
| 2 | Conn_01x02_Pin | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J7, J12 |
| 2 | Conn_01x07_Pin | Connector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_Vertical | J1, J3 |
| 2 | D_Schottky | Diode_SMD:D_SOD-123 | D4, D5 |
| 2 | IX4426N | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2, U4 |
| 2 | LTV-824 | Package_SO:SOP-8_6.605x9.655mm_P2.54mm | U5, U8 |
| 1 | 1.0M | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R24 |
| 1 | 100K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4 |
| 1 | 15.0K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R14 |
| 1 | 1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2 |
| 1 | 1K x4 | Library:RESCAXS127P508X320X70-8N | RN1 |
| 1 | 2.2uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3 |
| 1 | 2.2uH | Inductor_SMD:L_Murata_DFE201610P | L1 |
| 1 | 22.0K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R9 |
| 1 | 22K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3 |
| 1 | 22uH | Inductor_SMD:L_Taiyo-Yuden_MD-5050 | L2 |
| 1 | 330.0 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6 |
| 1 | 4.7K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R27 |
| 1 | 500 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 62.0 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5 |
| 1 | 71.5k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R8 |
| 1 | 732k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R25 |
| 1 | ADS1115IDGS | Package_SO:TSSOP-10_3x3mm_P0.5mm | U3 |
| 1 | ANALOG | Library:PinHeader_1x06_P2.54mm_Vertical_NoBox | J10 |
| 1 | DIGITAL1 | Library:PinHeader_1x08_P2.54mm_Vertical_NoBox | J13 |
| 1 | DIGITAL2 | Library:PinHeader_1x10_P2.54mm_Vertical_NoBox | J8 |
| 1 | Fuse | Fuse:Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolder | F1 |
| 1 | ISO1540 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U13 |
| 1 | I_Input | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J11 |
| 1 | LED | LED_SMD:LED_Luminus_MP-3030-1100_3.0x3.0mm | D1 |
| 1 | LM317_TO-220 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | LM4040DBZ-2.5 | Package_TO_SOT_SMD:SOT-23 | U10 |
| 1 | LM4040DBZ-5 | Package_TO_SOT_SMD:SOT-23 | U11 |
| 1 | MAX1683 | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U7 |
| 1 | MMBT3904 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Out to Screen | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J9 |
| 1 | POWER1 | Library:PinHeader_1x08_P2.54mm_Vertical_NoBox | J6 |
| 1 | POWER2 | Library:PinHeader_1x03_P2.54mm_Vertical_NoBox | J5 |
| 1 | RFM-0505S | Converter_DCDC:Converter_DCDC_TRACO_TEA1-xxxx_THT | U14 |
| 1 | SW_SPDT | Button_Switch_THT:SW_Slide_SPDT_Angled_CK_OS102011MA1Q | SW3 |
| 1 | TLV61046ADBVR | Package_TO_SOT_SMD:SOT-23-6_Handsoldering | U12 |
| 1 | TPS613222ADBV | Package_TO_SOT_SMD:SOT-23-5 | U9 |
More from oihdesigns/Micro-DMM
12- 4 layers68.5 × 53.3 mm

- 4 layers88.9 × 50.8 mm

- 2 layers67.3 × 49.5 mm

- 4 layers85.5 × 47.4 mm

- 4 layers66 × 37.1 mm

- 4 layers68.5 × 53.3 mm

- 2 layers60 × 50 mm

- 4 layers46 × 24.4 mm

- 4 layers30.4 × 61.2 mm

- 4 layers45.5 × 36.6 mm

- 4 layers48.7 × 59.1 mm

- 4 layers25.4 × 61.8 mm

Similar boards
- 4 layers100 × 50 mm

Psu ext
PSU-Ext-Org/psu-ext-hardware
A repository to store PSU-EXT hardware design assets, schematics, circuit diagrams, CAD files and manufacturing data.
137 parts9CERN-OHL-S-2.0 - 2 layers184.6 × 41.6 mm

- 2 layers49.5 × 34.5 mm

- 2 layers59.4 × 32.3 mm

- 4 layers89 × 58 mm

HALMET
hatlabs/HALMET-hardware
Hat Labs Marine Engine & Tank interface hardware design files
227 parts8CC-BY-4.0 - 2 layers81 × 81 mm

- 4 layers88.6 × 198.2 mm

CT v2
Poornimakulkarni26/Industrial-io-controller
Custom-designed general-purpose PCB for industrial automation — featuring 20+ digital I/O, analog inputs (current/vacuum sensing), stepper motor drivers, NeoPixel, FRAM storage, and multi-protocol interfaces (SPI, I2C…
223 parts - 4 layers65 × 56.5 mm

Pi HIL
omarKmekkawy/RaspberryPi_HardwareTestingAutomation_Shield
A Raspberry Pi Shield for Hardware Testing Automation
45 parts
Questions
How big is the DMM KiCAD V4 next PCB?
It measures 68.5 × 53.3 mm and has 4 copper layers, 1.6 mm thick.
What parts does the DMM KiCAD V4 next use?
80 parts, built around the RFM-0505S, IX4426N, ADS1115IDGS and TPS613222ADBV. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the DMM KiCAD V4 next KiCad files?
From the oihdesigns/Micro-DMM repository on GitHub, at the commit this page was made from: the board is PCBDesigns/DMM_KiCAD_V4_next/DMM_KiCAD_V4_next.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the DMM KiCAD V4 next design in my own project?
Its repository states no licence, so its author keeps all rights: ask oihdesigns before reusing the design.