Calibrate and get energy readings from ADE7758 IC from Analog Devices

Fork of ADE7758 by Emma

Currently this library can be used to calibrate and get VRMS, IRMS, active, and apparent energy. I havent worked on reactive energy measurement.

Committer:
bonchenko
Date:
Mon Apr 20 08:15:24 2015 +0000
Revision:
6:513b3b5750de
Parent:
5:ea599a829b0b
no change

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bonchenko 6:513b3b5750de 1 //#include "mbed.h"
bonchenko 6:513b3b5750de 2 //#include "ade7758.h"
bonchenko 6:513b3b5750de 3 //
bonchenko 6:513b3b5750de 4 //#define AIRMSOFFSET 0xFB1
bonchenko 6:513b3b5750de 5 //#define BIRMSOFFSET 0xFB0
bonchenko 6:513b3b5750de 6 //#define CIRMSOFFSET 0xFB1
bonchenko 6:513b3b5750de 7 //#define AVRMSOFFSET 0xFFB
bonchenko 6:513b3b5750de 8 //#define BVRMSOFFSET 0x2
bonchenko 6:513b3b5750de 9 //#define CVRMSOFFSET 0xFFF
bonchenko 6:513b3b5750de 10 //
bonchenko 6:513b3b5750de 11 //Serial DBG(PA_9, PA_10); // tx, rx
bonchenko 6:513b3b5750de 12 //ADE7758 ADE(PB_5, PD_2, PB_4, PB_6, PB_7);
bonchenko 6:513b3b5750de 13 //
bonchenko 6:513b3b5750de 14 //void printBytes(long input, uint8_t numBits);
bonchenko 6:513b3b5750de 15 //bool CALIBRATE = true;
bonchenko 6:513b3b5750de 16 //
bonchenko 6:513b3b5750de 17 //float AWattHr, BWattHr, CWattHr, AVAHr, BVAHr, CVAHr;
bonchenko 6:513b3b5750de 18 //
bonchenko 6:513b3b5750de 19 //void ade_main() {
bonchenko 6:513b3b5750de 20 // DBG.baud(115200);
bonchenko 6:513b3b5750de 21 // DBG.format(8,Serial::None,1);
bonchenko 6:513b3b5750de 22 // DBG.printf("Starting...\r\n");
bonchenko 6:513b3b5750de 23 //
bonchenko 6:513b3b5750de 24 // ADE.begin();
bonchenko 6:513b3b5750de 25 //
bonchenko 6:513b3b5750de 26 // if (CALIBRATE) {
bonchenko 6:513b3b5750de 27 // DBG.printf("Calibrating...\r\n");
bonchenko 6:513b3b5750de 28 // ADE.calibrateVI(20);
bonchenko 6:513b3b5750de 29 // DBG.printf("V calibration: %.2f, %.2f, %.2f\r\n", ADE.AVRMSCalib, ADE.BVRMSCalib, ADE.CVRMSCalib);
bonchenko 6:513b3b5750de 30 // DBG.printf("I calibration: %.2f, %.2f, %.2f\r\n", ADE.AIRMSCalib, ADE.BIRMSCalib, ADE.CIRMSCalib);
bonchenko 6:513b3b5750de 31 // ADE.writeRMSOffset(AIRMSOFFSET, BIRMSOFFSET, CIRMSOFFSET, AVRMSOFFSET, BVRMSOFFSET, CVRMSOFFSET);
bonchenko 6:513b3b5750de 32 // ADE.calibrateGain(PHASE_A);
bonchenko 6:513b3b5750de 33 // DBG.printf("Watt gain calibration: %.5f, %.5f, %.5f\r\n", ADE.AWGCalib, ADE.BWGCalib, ADE.CWGCalib);
bonchenko 6:513b3b5750de 34 // DBG.printf("VA gain calibration: %.5f, %.5f, %.5f\r\n", ADE.AVAGCalib, ADE.BVAGCalib, ADE.CVAGCalib);
bonchenko 6:513b3b5750de 35 // DBG.printf("Wh/LSB: %.8f, %.8f, %.8f\r\n", ADE.AWhLSB, ADE.BWhLSB, ADE.CWhLSB);
bonchenko 6:513b3b5750de 36 // DBG.printf("VAh/LSB: %.8f, %.8f, %.8f\r\n", ADE.AVAhLSB, ADE.BVAhLSB, ADE.CVAhLSB);
bonchenko 6:513b3b5750de 37 // }
bonchenko 6:513b3b5750de 38 //
bonchenko 6:513b3b5750de 39 // DBG.printf("Start measurement\r\n");
bonchenko 6:513b3b5750de 40 //
bonchenko 6:513b3b5750de 41 // while(1) {
bonchenko 6:513b3b5750de 42 // DBG.printf("VRMS for each phase: %.2f, %.2f, %.2f\r\n", ADE.calculateVRMS(PHASE_A), ADE.calculateVRMS(PHASE_B), ADE.calculateVRMS(PHASE_C));
bonchenko 6:513b3b5750de 43 // DBG.printf("IRMS for each phase: %.2f, %.2f, %.2f\r\n", ADE.calculateIRMS(PHASE_A), ADE.calculateIRMS(PHASE_B), ADE.calculateIRMS(PHASE_C));
bonchenko 6:513b3b5750de 44 // ADE.getEnergy(PHASE_A, 1, &AWattHr, &BWattHr, &CWattHr, &AVAHr, &BVAHr, &CVAHr);
bonchenko 6:513b3b5750de 45 // DBG.printf("WattHR for each phase: %.2f, %.2f, %.2f\r\n", AWattHr, BWattHr, CWattHr);
bonchenko 6:513b3b5750de 46 // DBG.printf("VAHR for each phase: %.2f, %.2f, %.2f\r\n", AVAHr, BVAHr, CVAHr);
bonchenko 6:513b3b5750de 47 // DBG.printf("\r\n");
bonchenko 6:513b3b5750de 48 // wait(10);
bonchenko 6:513b3b5750de 49 // }
bonchenko 6:513b3b5750de 50 //}
bonchenko 6:513b3b5750de 51 //
bonchenko 6:513b3b5750de 52 //void printBytes(long input, uint8_t numBits) {
bonchenko 6:513b3b5750de 53 // for (int i = numBits-1; i >= 0; i--) {
bonchenko 6:513b3b5750de 54 // DBG.printf("%d", ((input >> i) & 1));
bonchenko 6:513b3b5750de 55 // }
bonchenko 6:513b3b5750de 56 //}