DMM Piggyback (add RS-232)




There are mods that give a multimeter serial connectivity by soldering some pins but, it only works if it already has RS-232 ability. So I decided rather than building a PIC multimeter from scratch, I would Piggyback off a $4 DMM.

I used:
one PIC16F688
one LM358
a button and a 100k potentiometer
3 resistors (1k 10k 20k)
A PCB, piece of thin plastic, and hardware

Despite the low part count assembly and programing can be a little troublesome.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: The Theory

This mod uses all the Voltage, Current, Resistance, and hFE circuitry of the original DMM.

Since the meter is relatively cheap it has bed of nails test points (found on electronics with a "blob" IC)
These points are a circuit benders dream.

I just pulled the input to the original chip (I will call the golden pin) amped it, ran it through the PIC, and sent it through serial. I also used a potentiometer to encode the selector dial.

The golden pin is the middle pin of the left side (circled in red)

Step 2: The Circuit

Power is supplied by the power pin to the original IC (on bottom 4th from the right) and the common lead (banana jack). It gives 6V and uses the built in power switch.

The op amp is set up as 11x voltage amp from the golden pin. I used an amp because the pin only gives 200mV on full DC voltage signal. The amp feeds AN0 of the pic. The pot goes to AN7 no amp needed and hooks to the same power as the PIC and OP AMP


Step 3: The Dial Encoder

This was probably the hardest part to figure out, and my solution is far from perfect.I used a PCB mount micro pot (1.69 at radio shack) and curled the leads around to mount it. (this also makes it continues rotation)

To mount it cut a thin plastic sheet (like the DMM's container) to fit to the screw holes.
then cut a hole for the pot (make it a tight fit) I also cut a hole for the diode, lead board solder, and power leads
take out the screws slip the pot in the plastic and screw it down.(I pre drilled screw holes)

I used  a screw and cut the head flat(see last pic keep green part) to couple the dial and pot together.
The screw fits nice in the hollow center of the dial.
The flat head goes into the flat-head screw hole on the pot.
I suggest using red lock tight because if the screw losens the encoder stops working.

Step 4: Board Fab

I used a no trace proto board with the copper rings. The placement of components is not crucial but leave room for the pot hole(13mm or 1/2in) Of course a 14 PIN DIP Socket is used for the PIC MCU, optional on the OP AMP.

I stood the resistors up for higher density

Red - To power PIN (+)
Black - To com (-)
Green - Tx
White - Golden pin

Wire curving on top is positive

Step 5: Adding Data Log Function

You may not always be next to a computer when you want to log a measure. So we might as well use the PIC's EEPROM. By simply adding a button and resistor we get some internal nonvolatile memory.

I used a tactile button with a long "presser" and spaced it with a washer. The second pic shows where I drilled.

I used a wire case under the PCB to wedge the button into place( I had no glue, but it would work)

Step 6: DB-9 Connector

I had a nice template to install the port. (from a video card) I put it in wider side down, but I do not suggest this because the RX TX and GND are all on that side and if there at the top you have more clearance with the screen.
I happen to have some nice port screws too!

A small amount of the back cover must be removed to.
If you do not have a rotary tool this step may be a challenge.

Step 7: Firmware/Software

The firmware is simple just gather analog readings and send(if you do not want logging)
If you want logging just add the button press subroutine to the continues loop
also a data retrieval for the stored values.(that is why RX is wired up)

I will post my hex files for the PIC If wanted (I programed in basic, if you know a good c IDE for the PIC let me know)

I am currently working on some GUI software in C++ for this project. With an analog digital and graphic in one (there separate now and crash often)

The top bar in the pic is the dial and the bottom the voltage. (nice for watching caps charge)

I have simple console window program working, but I do not really want to post that. I will If someone wants it though (voltage only)

The computer software is ware the calibration occurs. I used a pot and changed the voltage while monitoring the raw 8 bit(can go to 10 bit but serial would be a little more difficult) out from the PIC in console window. Plotted these on mt TI-83 (stats easy than on an 89) and found the linear regression equation. Input the equation in my C++ and compared voltages. (they where no more than .01V off)
Be careful of significant digits (keep the same number of decimal places as the DMM screen ie. 1.3342 on the computer is guessing the last two digits)

Step 8: Finished Meter

Well now you have a data logging serial interfaced DMM.
If you turn it on with 20V range and it says 0.91V it is working.
It is a tight fit and there may be a small bulge, but the board is not going anywhere.

Plus with your own MCU in it you can give the multimeter a back light, continuity test, battery level, or auto power off (I will update accordingly)

I would also like to try an auto-ranging meter

Remember if you are not up to programing I will give you my files.

Feel free to ask any questions.

The Mad Science Fair

Participated in the
The Mad Science Fair

Hack It! Challenge

Participated in the
Hack It! Challenge

Be the First to Share


    • CNC Contest

      CNC Contest
    • Make it Move

      Make it Move
    • Teacher Contest

      Teacher Contest

    30 Discussions


    6 years ago on Step 7

    Very nice. I've been collecting these meters (free with coupon), thinking of making VU meters and maybe trying to add auto-scaling. I would appreciate your source code for interfacing with the chip and the knob.

    1 reply

    Reply 3 years ago

    Did you get a copy of the source code? I would like to see it also! If you get a copy or the author of this instructable sees this message please email a copy of the source code to my address:

    Thanks in advance!


    4 years ago on Introduction

    i am about to modify my DMM and put CP2102 in it. If you (or anyone else) have any advice thought and/or suggestion, i would like to hear them. Thank you~


    5 years ago on Introduction

    Very nice to see this is is possible, but afaict, only the voltage is transmitted, right? Or am I missing something? Because I'd like to have all data (resistance, current, voltage, continuity etc) to be transmitted. Is this possible?

    3 replies

    Reply 5 years ago on Introduction

    All of the data is able to be transmitted, the pot on the selector dial is there to differentiate the measurements. This way the raw and dial position data is sent. The dial selects the formula used to calculate voltage, amperage, resistance, ect. from the raw data.


    Reply 5 years ago on Introduction

    Oh that's beautiful, so I can read everything from that single pin? Amazing, thanks a lot! And thanks for that incredibly fast answer


    6 years ago on Introduction

    and *SIMPLE* datalogger Modification!
    Congratulations! You could never imagine how many times I've thought about this kind of mod and never dare it!
    Very nice hint to follow!!!
    Bravo! ;-)


    6 years ago on Step 7

    The Firmware I have written is very simplistic. And is in basic (a free c compiler is a little challenging to find I might have found one and if I get it working will post some C code)

    TX_VAL = 83
    SerSend 1, TX_VAL
    TX_VAL = ReadAD(AN0)
    SerSend 1, TX_VAL
    TX_VAL = ReadAD(AN2)
    SerSend 1, TX_VAL
    Wait 100 ms
    Goto SampleLoop

    After the initialization it is just an infinite sampling loop. The raw values are faster to convert on a computer, and both values are necessary regardless where conversion occurs. Sending the ‘S’ (83) is so the computer knows the next byte is AN0 or the knob.


    6 years ago on Introduction

    Cool project. I have one thing to add. The points around the Blob IC isn't test points . They are made for the "Real" IC the instrument is designed for. This way the manufacturer can use what's available on the market at the time of manufacture, a smart decision. Some times you can't get the parts, only the dies.


    7 years ago on Introduction


    I am M2M(machine to machine) design specialist on the job, This work is well done here. My congratulations to the author.

    Myself, on my day job, I design/build smart terminal emulator applications for various types of devices, OEM test gear, microcontroller, ect.since 2006. I do use RS232 at my current job, but prefer to use D2XX MS .NET library in C# with bitbang i/o, and a mode called 'MPSSE'(Multi-protocol synchronous serial engine)- allows for JTAG, I2C to name a couple of protocols.

    consider that many of today's circuits use many protocols like 1 Wire, I2C, JTAG, I2S, CAN, ECT, it becomes important to add these capabilities to as many of our existing toolsets as possible. i am working on designing such applications on both pic device and associated desktop application to provide intuitive, easy to use controls.

    So to continue on my own build project i also visited the Hardware sales as well, and i got the bigger brother DMM, actually 2 of them; the CEN-TECH P37772. i am taking bigger steps here; actually taking these two DMMs and creating another DMM with much more built inside; solid state switches, latching relays, microcontroller/FTDI USB using D2XX library,, 200Msps 12 bit A/D converters, larger Color LCD as well.

    if folks are interested learning more about my complete package approach, please contact me.



    2 replies

    Reply 7 years ago on Introduction

    Sounds like you do not even need the CEN-TECH's. I would like to build one from scratch ( because it could do anything I think I might need). You should think about a wi-fi modual, that or Ethernet is my next step


    7 years ago on Introduction


    I have been wanting to get something like this for a long time. This is excellent.


    7 years ago on Introduction

    I strongly recommend optoisolating those RS232 lines... without doing so, if you connect the RS232 to a computer and the COM terminal to a high potential point, all sorts of bad things may happen.

    1 reply

    Reply 7 years ago on Introduction

    I built an external optoisolator
    I use it on everything I make (after I fried my first com adapter)

    Running positive to Data Carrier Detect Would power the isolator
    (did not show for people that strait connected it to com)


    7 years ago on Introduction

    Please note:

    01. National Instruments Literature, (1), and software, (2), do not agree with the Pin assignments used in the Schematic.

    LM358 Pins (as per the Files listed below):
    1 - Output of OpAmp 1, of 2
    2 - Inverting Input of OpAmp 1, of 2
    3 - Non-Inverting Input of OpAmp 1, of 2
    4 - Ground
    5 - Non-Inverting Input of OpAmp 2, of 2
    6 - Inverting Input of OpAmp 2, of 2
    7 - Output of OpAmp 2, of 2
    8 - Vcc

    02. That the LM358, in the Article's Schematic, is not configured as a 10X non-inverting amplifier. Instead, it is wired as a Rail to Rail (~Vcc to Ground) zero Voltage cross over Detector (Polarity Switcher).

    To be a 10X Non-Inverting Amplifier - the 10 KΩ Resistor should be connected between the Output Pin, Pin 1, and Inverting Input Pin, Pin 2, of the LM358; and not to Ground.
    For a true 10X Gain the 1KΩ Resistor should be 910Ω, and the 10KΩ Resistor should be 8.2KΩ.

    G = ( Rf / Ri ) + 1 = ( 8.2KΩ / 910Ω ) + 1 = 10.01.


    (1) - , ,
    and .
    (2) - National Instruments 'NI Multisim 11.0'.

    3 replies

    For some reason the provided Web Site Links were not included in the posted Reply.

    (1) - LM358 Specification Sheets: and

    (2) - National Instruments 'NI Multisim 11.0'. -