3D Printed Arduino OLED Watt Meter





Introduction: 3D Printed Arduino OLED Watt Meter

Have you ever wanted to know how many watts or how much current an item uses or even its operating voltage? This simple and easy project can provide you with that crucial information while keeping costs under $7. I primarily designed this to be used in conjunction with common solar charge controllers, that don't have any indication of load power draw. Since making it, I realized it would also be useful on my homemade bench power supply. The fact that you can program a small bitmap image into it is just a bonus and makes you feel great every time you look at it.

Step 1: Gather Your Parts

  1. Arduino Nano $2.5 on Ebay (or any arduino with 2 anolog inputs and I2C capability)
  2. ACS 712 30amp current sensor module $1 on Ebay
  3. I2C OLED Display 5volt $3 on Ebay
  4. 10k and 100k resistors $.02 (pick up a resistor kit on Ebay if needed)
  5. Arduino Code provided in this instructable
  6. 3d printed case Stl provided in this instructable (optional)

Things that you probably have laying around the house include.

  1. loose wire
  2. soldering iron or way of soldering
  3. some kind of enclosure
  4. usb mini cable for programming
  5. computer with arduino software
  6. bread board for testing electronic circuits
  7. test supply voltage of 7-15
  8. test load
  9. multi meter for testing

Step 2: Prototype It on a Bread Board

I have provided a simple easy to follow diagram showing how all the connections are made. I recommend using a bread board, take your time and make sure your connections are correct before powering up. Take special care in making sure the resistor voltage divider is setup correctly. Measure the voltage at the middle of it before connecting it to the ardunino it should be 1/10 the voltage at the input.

Step 3: Code and Calibrate

This code is far from perfect but rather rushed and just a proof of concept. Currently is set to cycle through 4 pages updating the information displayed each time. Use your multi meter to measure the source voltage then modify R1 and R2 in the code respectively to calibrate the voltage on the display. Next using the same voltage and source measure the current of a load using the multi meter. Then reference that reading with the current sensor and modify the number 511 either up or down to calibrate. Keep in mind it is not accurate when measuring small currents, I recommend using a load of around 1 amp while calibrating. If your readings are showing in negative swap the sense wires on the current sensor to easily correct that. Also feel free to change the bitmap image in the code with one of your own, to really customize the final look of the meter.

Step 4: 3D Print a Case

You can enclose your project in many different ways, however if you have a 3d printer why not print an enclosure. I have included the stl files for the 2 part enclosure that I designed that snaps together with a friction fit. It also has 2 mounting holes for screws and a unique stacked layout.

Step 5: Solder and Assemble

Solder wires to the boards keeping them as short as possible, referencing how they fit in the back of the printed case. The boards and Display have a really nice friction fit, everything is held nice and tight. The final step is to press the front over the whole thing and your done.



  • Science of Cooking

    Science of Cooking
  • Pocket-Sized Contest

    Pocket-Sized Contest
  • Microcontroller Contest

    Microcontroller Contest

We have a be nice policy.
Please be positive and constructive.




Awesome, will actually try to make this. However will it work on higher voltages then "7-15V"? like 24-48V?

The voltage limit is determined by the onboard voltage regulator on the nano and the voltage divider resistor values. I used an online voltage divider calculator to determine the values for the resistors in the voltage divider. Keep in mind that the range of voltage going into the analog read pin is 0-5 volts. Use a meter to measure and confirm this before connecting it to the Arduino. As for powering the arduino use a dc to dc regulator that can step down the voltage to within the max of the nano's on board regulator.

Love this! Very quick and easy to assemble, great instructable!

It would help a lot if you could include HOW to change the bitmap you have included, maybe link it to how the display works and how to get stuff to show on it.

I used Microsoft paint to make a bitmap image the size of the display resolution. Then used image to code software to generate the picture code. There is a tutorial showing all of this, I don't remember where it was. The arduino library wiki is also helpful. Google search should pop it up.

Very nice project, been looking for something like this for a long time now. I have the 5 amp and 20 amp sensor and need to change your code amps=((511-amp)*75.75/1023); . Could you tell me please how the part 75.75 / 1023 is build up so I can change it to (5 amp=185mV/amp or 20 amp=100mV/amp) thanks for searing your project.

The number 511 is used to bring the read value from the sensor to 0 from its typical resting midpoint value of around 511. Next you determine the number to put in place of 75.75 by dividing 5 by the scale factor for the version you are using. Example for a 30amp sensor the scale factor is 66mv so divide 5 by .066 to get 75.75. For 100mv it would be 50 and for 185mv it's 27.02.

Nice project! I assume it only measures DC power since you made it for a solar application?

the ACS module can sense AC current quite nicely as well. I'm currently using it in a project where the two input leads are simply connected in series with the live wire from a wall outlet.