Introduction: Multimeter Backlit LCD Mod

About: I am a huge fan of chocolate!
Hello Instructables. I have wanted to join this amazing community for a long time and I am happy that I finally did!

In this instructable I am going to show you how to convert your standart multimeter's LCD into a baclkit LCD. We will use some LEDs and some clever programming to modify our stock multimeter. Thus, we will design a better product and most important we'll help ourselves do measurements in dark places!

The high-end multimeters have this function built in, unfortulantely not all of the affordable ones have it. It is handy to use the LCD backlighting sometimes, so lets just do it.


Compatibility?

Not a problem I think - all electronic devices that have LCDs have pretty much same looking display components, if you wonder where it will work or not, just open the multimeter to see, it is straight forward.

HOW?

I wanted to design the whole thing as it would be in a real off-shelf device.

After the modification there are no hanging wires and swithes, no messy batteries around.

When you press one of the standard multimeter's buttons - the yellow one in my case - and  voila the LCD is lightende for 15 seconds! And what is more cool - you can program the 15 seconds delay to your preferences and change it to one minute for example!

INEXPENSIVE?

Yes!

HARD TO DO?

I'd say a bit tricky.

Step 1: Parts List & Tools

All parts you need are:

> SMD LEDs x 2 (Mine are tiny! 1.6mm (L) x 0.8mm (W) x 0.8mm (H))
> ATtiny85 microcontroller
> Cables 


Tools:

> Screwdriver
> Soldering iron and wire
> Super glue
> Heat shrink tubes
> PC & Arduino Uno to program the microcontroler

Step 2: Open the Multimeter

Not much to say here.

Grab a screwdriver and open the multimeter. Remove the battery cover, the batteries, the back shell and then detach the PCB from the front shell. Take the LCD plastic frame out.

Step 3: Locate a Suitable Place for the LEDs

The LEDs have to be put on the sides of the LCD. In my case I used the plastic frame that was covering the LCD.

See the narrow dent on the inner edge of the plastic frame - this is just the perfect spot for these LEDs that I got.

Step 4: Solder Wires to the LEDs

Use double sided sticky tape to hold the SMD LED for you. I put a regular resistor to make it more clear to you what the scale is.

Use separate single wire from a cable for each connection.

Step 5: Test

When ready with soldering, plug a 3V battery source and connect the LEDs in parallel.

Step 6: Glue the LEDs to the LCD Frame

Use super glue to attach the LEDs to the plastic frame.

Step 7: Glue the Wires

Wait for the glue to dry and bend the soldered wires to the shape of the plastic frame. Then add more glue.

Step 8: Solder Extension Wires

Shorten the LEDs' wires and solder longer pieces to each terminal. Glue each longer piece to the plastic frame.

Step 9: Glue Reflectors to the Inner Edge of the Plastic Frame

We want to get all the available light into the LCD. We will make the light reflect from the edges of the LCD back by putting something shiny. I used aluminium foil as it is thin, easy to work with and widely available.

Cut stripes of aluminium foil and attach them to the plastic with the shiny surface up.

Step 10: Connect Both LEDs in Parallel

Solder both anodes and a wire to each other and both cathodes to each other together with another wire.

Insulate the connections using heat shrink tube.

Step 11: ATtiny Sense Circuit Overview

What?

As I have mentioned before, we will sense the press of the yellow soft button and activate our LEDs for some time. This can be done in Analog or Digital way. If analog, then we'll need to play around with capacitors, resistors, time delay constants ... we'd have to mess around with the multimeter's circuitry a lot ... AND WE DO NOT WANT THIS.

Instead, we'll use a mirocontroller to "sense" that the yellow button was pressed and then activate the LEDs on for some time. We are going to do this with the ATtiny85.

For the ATtiny85 we need:

> Power supplies
> Some signal on the input to trigger the LCD illumination output

Resistor R24 gets the supply voltage from the batteries when the multimeter is switched on. This will be our positive power supply terminal for the ATtiny85.

There is a negative (ground) power supply terminal where the battery leads are soldered to the board.

As the video in the beginning shows the red bar above the screen is powered on for a short period of time when the yellow button on the front of the multimeter is pressed. This is from the non-contact voltage measuring system.
We will use this function to sense that the yellow button was pressed and then activate the LCD illumination.

Step 12: Program the ATtiny

Steps to connect ATtiny85 to Arduino Uno for programming:

1  Download this file: https://github.com/damellis/attiny/zipball/Arduino1
2  Unzip and put the "attiny" folder in the "hardware" folder where tha Arduino is installed on your PC. The path looks like this: Documents > Arduino > hardware > attiny> (Other downloaded files... etc)
3  Start the Arduino Application and open the ArduinoISP from the FIle>Examples menu
4  Upload the sketch to the Arduino Uno.
5  Now change the following settings:
6  Check the ATtiny85 (8 Mhz) checkbox in the Tools > Board menu.
7  Check the: "Arduino as ISP" in the Tools > Programmer menu.

Pins connections:

ATtiny   ::  Arduino Uno
    1       ::          10
    5       ::          11
    6       ::          12
    7       ::          13
    4       ::        GND
    8       ::          5V


Download the attachment and upload my code to your ATtiny85!

Code characteristics:

If you want to change the input trigger value, then change the "800" I have to something in between 0 to 1023 (0 is 0.00V, as 1023 is 5.00V).

In case you want to change the illumination period, change my "2000" to anything you want. 2000 in my case corresponds to 15 seconds.

Sleep Mode

The ATtiny is programmed to minimise power consumption. Not only it is powered on only if the multimeter is powered on, but when it operates, it goes into sleep mode while waiting for the input signal. This is enabled by the watchog functionality. Our ATtiny "sleeps" for 128 miliseconds and "wakes up" only to check the input value. If it is not high it goes to sleep again, otherwise it turns the output on for 15 seconds and after that tirns it off and then goes to sleep. This saves a lot of power because when the micricontroller is in sleep mode, it consumes only 0.5 microamps. This is 200 times less compared to usual.

Program Code
_________________________________________________________________________________________
#include <avr/sleep.h>
#include <avr/wdt.h>

#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
volatile boolean f_wdt = 1;

int button_in  = 3;         // hard pin 2 on ATtiny85
int illumination = 4;       //hard pin 3 on ATtiny85

//Set Up Instrictions
void setup() {               
  pinMode(button_in, INPUT);
  pinMode(illumination, OUTPUT);
  setup_watchdog(3); //Sleep time: approximately 128ms sleep
  // 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
}

//Main Program Loop
void loop() {
  if (f_wdt==1) {  // wait for timed out watchdog / flag is set when a watchdog timeout occurs
    f_wdt=0;       // reset flag
    //
    if(analogRead(button_in) > 800){ //Reads the value of the input and compares it to the trigger value: 0 to 1023
      digitalWrite(illumination, HIGH); //LEDs on
      delay(2000); // Illumination delay
      digitalWrite(illumination, LOW); //LEDs off
    }
    //Now put the system to sleep
    system_sleep();
  }
}


// set system into the sleep state
// system wakes up when wtchdog is timed out
void system_sleep() {
  cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF

  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
  sleep_enable();

  sleep_mode();                        // System sleeps here

  sleep_disable();                     // System continues execution here when watchdog timed out
  sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
}

// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {

  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
  ww=bb;

  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCR = bb;
  WDTCR |= _BV(WDIE);
}

// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect) {
  f_wdt=1;  // set global flag
}

Step 13: Connect the ATtiny to the PCB

Solder a cable for each of the terminals:

Red cable for power supply positive terminal.
Black cable for power supply negattive terminal.
Green cable for input signal.

Step 14: ATtiny Socket

You need to attach 5 cables to the ATtiny:

1   Power
2   Ground
3   Input signal
4   Output signals for LEDs: Power and Ground

I used an 8-pin chip socket to do the soldering onto. Just in case that I want to reprogram the ATtiny.

Cut off the legs that you don't use.

Don't forget heat shrink tube for insulation!

Step 15: Attach Your Circuitry Somewhere Inside

Put a piece of insulating tape underneath the ATtiny.

I used a cable tie to secure my components to the device speaker. This stops it all from moving around inside the multimeter.

Hot glue is also suitable, but be careful with surface mount components and fragile capacitors ... inductors ... ICs.

Step 16: Ready!

Confirm operation, close back everything together and enjoy!

Step 17: Thanks for Watching!

Hack It! Contest

Participated in the
Hack It! Contest

Instructables Design Competition

Participated in the
Instructables Design Competition

Make It Glow

Participated in the
Make It Glow