Arduino kWh and M^3/h energy meter – gathering the components

I am working on an energy meter that is to show the instantaneous electrical power (kWh ) and natural gas usage (M^3/h) in our house. A bit like <a href=””></a>, but with two recordings, data logging to an SD card and with some buttons to switch the display from the instantaneous recording to usage per-minute, per-hour, etc.

I just managed to get all components hooked up to the Arduino nano. See the photo for an impression.

The project includes

  • Arduino Nano
  • RTC
  • CRT5000 Infrared Reflectance 2x
  • SD card module
  • 1602 LCD

I am still waiting for the two pushbuttons. Once those arrive I’ll finalize the electronics and software and transfer it to a perfboard.


3 thoughts on “Arduino kWh and M^3/h energy meter – gathering the components

  1. Farouk Smith

    I found your site by Googling power energy meters, and was wondering if you have more documentation available on your own design, “Arduino kWh and M^3/h energy meter”. I would appreciate if you could email me as I am trying to implement the energy monitor with the MPC3911.

    Thank You.

    F. Smith

    1. Robert Post author

      Hi Farouk,

      I never managed to successfully complete this Arduino KWh meter. Combining all functionality was too much of a struggle for me with my limited electronics skills, but I learned a lot along the way. If you are interested in an integrated solution like this, I suggest you investigate and the EmonPi. I opted for a move towards the internet of things and built a relay that receives data packets from RFM12b and passes them to ThinkSpeak.

      I can provide some details on the more basic energy meter which I did complete and which I now have running. It is the KWh module that sends data to the IoT relay and consists of a Arduino Pro mini, a RFM12b with a 3.3V voltage regulator, some resistors to interface the 5V Arduino to the 3.3V RFM12b, a CNY70 with two resistors, and a LED to blink every time the Ferarris meter wheel completes a full rotation.

      The analog signal of the CNY70 is digitized by the Arduino, which runs a scetch that automatically adjusts the intensity threshold for the pulse detection.

      Detailled information about the components can easily be found online with arduino cny70 and arduino rfm12b. Most important is that you check whether you have the same type of KWh meter. If you don’t have a Ferarris meter, even the most basic aspects of my design are of no use.

      For my design you would not benefit from a larger ADC resolution than the 10 bits offered by the Arduino. Fiddling with the CNY70 sensor and adjusting the resistors that go with it is probably more important and has a strong effect on increasing the dynamic range of the reflectance, i.e. the difference when the black section on the Feraris disk passes the sensor. In the end you just want to detect a single bit (low/high reflectance), and the time between reflectance dips (when the black section on the Ferarris disk passes by).

      Although the MCP3911 is a nice ADC, I think it is overkill for this application. It would make sense to connect the MCP3911 to a split core current sensor. However, that would result in a very different design than mine, with continuous measurements rather than pulse detection.



Leave a Reply

Your email address will not be published.