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.

Revision:
1:f5e8c8591449
Parent:
0:cf3dc3c5156b
Child:
2:ea36884772ae
--- a/ade7758.h	Wed Apr 08 13:25:39 2015 +0000
+++ b/ade7758.h	Fri Apr 10 03:58:10 2015 +0000
@@ -116,55 +116,61 @@
 #define REVPRP          18
 #define SEQERR          19
 
-
 #define WAVMODE_VALUE(phase, wave)   (((wave)<<2)|(phase))
 
 class ADE7758
-{
-  public:
-    ADE7758 (PinName mosi, PinName miso, PinName sclk, PinName cs);
-    void begin();
-    int WattHR(char phase);
-    int VARHR(char phase);
-    int VAHR(char phase);
-    long VRMS(char phase);
-    long IRMS(char phase);
-    long waveform(char phase,char source);
-    int lineFreq(char phase);
-
-    void accumulateEnergy();
-
-    void powerOff();
-    void powerON();
-    void sleep();
-    void wakeUp();
+{       
+    public:   
+        ADE7758 (PinName mosi, PinName miso, PinName sclk, PinName cs, PinName interrupt);
+        void begin();
+        void CalibrateVI(uint8_t numSamples);
+        int WattHR(char phase);
+        int VARHR(char phase);
+        int VAHR(char phase);
+        long VRMS(char phase);
+        long IRMS(char phase);
+        float CalculateVRMS(char phase);
+        float CalculateIRMS(char phase);
+        long waveform(char phase,char source);
+        int lineFreq(char phase);
+        void accumulateEnergy();
+        void powerOff();
+        void powerON();
+        void sleep();
+        void wakeUp();
+        long getInterruptStatus(void);
+        long getResetInterruptStatus(void);
+        void enableChip();
+        void disableChip();
+        void write8bits(char reg, unsigned char data);
+        void write16bits(char reg, unsigned int data);
+        void write24bits(char reg, unsigned int data);        
+        unsigned char read8bits(char reg);
+        unsigned int read16bits(char reg);
+        unsigned long read24bits(char reg);
+        float AVRMSCalib;
+        float BVRMSCalib;
+        float CVRMSCalib;
+        float AIRMSCalib;
+        float BIRMSCalib;
+        float CIRMSCalib;
 
-    long getInterruptStatus(void);
-    long getResetInterruptStatus(void);
-    void enableChip();
-    void disableChip();
-    void write8bits(char reg, unsigned char data);
-    void write16bits(char reg, unsigned int data);
-    unsigned char read8bits(char reg);
-    unsigned int read16bits(char reg);
-    unsigned long read24bits(char reg);
-
+    private:   
+        long getIRMS(char phase);
+        long getVRMS(char phase);
+        int getWattHR(char phase);
+        int getVARHR(char phase);
+        int getVAHR(char phase);
 
-  private:   
-    long getIRMS(char phase);
-    long getVRMS(char phase);
-    int getWattHR(char phase);
-    int getVARHR(char phase);
-    int getVAHR(char phase);
-
-    SWSPI _ADE7758SPI;
-    DigitalOut _ADESS;
-    long accuWattHRA;
-    long accuWattHRB;
-    long accuVARHRA;
-    long accuVARHRB;
-    long accuVAHRA;
-    long accuVAHRB;
+        SWSPI _ADE7758SPI;
+        DigitalOut _ADESS;
+        DigitalIn _ADEINT;    
+        long accuWattHRA;
+        long accuWattHRB;
+        long accuVARHRA;
+        long accuVARHRB;
+        long accuVAHRA;
+        long accuVAHRB;
 };
 
 extern ADE7758 ADE;