Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of ADE7758 by
ade-example.cpp
- Committer:
- bonchenko
- Date:
- 2015-04-20
- Revision:
- 5:ea599a829b0b
- Child:
- 6:513b3b5750de
File content as of revision 5:ea599a829b0b:
#include "mbed.h" #include "ade7758.h" #define AIRMSOFFSET 0xFB1 #define BIRMSOFFSET 0xFB0 #define CIRMSOFFSET 0xFB1 #define AVRMSOFFSET 0xFFB #define BVRMSOFFSET 0x2 #define CVRMSOFFSET 0xFFF Serial DBG(PA_9, PA_10); // tx, rx ADE7758 ADE(PB_5, PD_2, PB_4, PB_6, PB_7); void printBytes(long input, uint8_t numBits); bool CALIBRATE = true; float AWattHr, BWattHr, CWattHr, AVAHr, BVAHr, CVAHr; void ade_main() { DBG.baud(115200); DBG.format(8,Serial::None,1); DBG.printf("Starting...\r\n"); ADE.begin(); if (CALIBRATE) { DBG.printf("Calibrating...\r\n"); ADE.calibrateVI(20); DBG.printf("V calibration: %.2f, %.2f, %.2f\r\n", ADE.AVRMSCalib, ADE.BVRMSCalib, ADE.CVRMSCalib); DBG.printf("I calibration: %.2f, %.2f, %.2f\r\n", ADE.AIRMSCalib, ADE.BIRMSCalib, ADE.CIRMSCalib); ADE.writeRMSOffset(AIRMSOFFSET, BIRMSOFFSET, CIRMSOFFSET, AVRMSOFFSET, BVRMSOFFSET, CVRMSOFFSET); ADE.calibrateGain(PHASE_A); DBG.printf("Watt gain calibration: %.5f, %.5f, %.5f\r\n", ADE.AWGCalib, ADE.BWGCalib, ADE.CWGCalib); DBG.printf("VA gain calibration: %.5f, %.5f, %.5f\r\n", ADE.AVAGCalib, ADE.BVAGCalib, ADE.CVAGCalib); DBG.printf("Wh/LSB: %.8f, %.8f, %.8f\r\n", ADE.AWhLSB, ADE.BWhLSB, ADE.CWhLSB); DBG.printf("VAh/LSB: %.8f, %.8f, %.8f\r\n", ADE.AVAhLSB, ADE.BVAhLSB, ADE.CVAhLSB); } DBG.printf("Start measurement\r\n"); while(1) { DBG.printf("VRMS for each phase: %.2f, %.2f, %.2f\r\n", ADE.calculateVRMS(PHASE_A), ADE.calculateVRMS(PHASE_B), ADE.calculateVRMS(PHASE_C)); DBG.printf("IRMS for each phase: %.2f, %.2f, %.2f\r\n", ADE.calculateIRMS(PHASE_A), ADE.calculateIRMS(PHASE_B), ADE.calculateIRMS(PHASE_C)); ADE.getEnergy(PHASE_A, 1, &AWattHr, &BWattHr, &CWattHr, &AVAHr, &BVAHr, &CVAHr); DBG.printf("WattHR for each phase: %.2f, %.2f, %.2f\r\n", AWattHr, BWattHr, CWattHr); DBG.printf("VAHR for each phase: %.2f, %.2f, %.2f\r\n", AVAHr, BVAHr, CVAHr); DBG.printf("\r\n"); wait(10); } } void printBytes(long input, uint8_t numBits) { for (int i = numBits-1; i >= 0; i--) { DBG.printf("%d", ((input >> i) & 1)); } }