Advertisement
learnelectronics

Arduino Power Monitor v1.2

Jul 27th, 2017
2,102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.17 KB | None | 0 0
  1. /*
  2.  * Arduino Power Monitor v1.2
  3.  *
  4.  * learnelectronics
  5.  * 18 JUL 2017, 25 JULY 2017
  6.  *
  7.  * www.youtube.com/c/learnelectronics
  8.  */
  9.  
  10. #include <Wire.h>                                             //wire library for I2C comms
  11. #include <INA219.h>                                           //driver for the ina219
  12. #include <DS3231.h>
  13. #include <SPI.h>                                              //Serial library for SD card shield
  14. #include <SD.h>
  15.  
  16.  
  17.  
  18.  
  19.  
  20. INA219 monitor;                                               //create instance of the INA219 called monitor
  21.  
  22. DS3231 Clock;
  23.  
  24. const int chipSelect = 4;
  25.  
  26.  
  27. byte year, month, date, DoW, hour, minute, second;
  28.  
  29.  
  30.  
  31.  
  32. void setup()   {                
  33.  
  34.   Serial.begin(9600);
  35.   Wire.begin();
  36.   monitor.begin();                                            //start the ina219
  37.  
  38.    Serial.print("Initializing SD card...");
  39.  
  40.                                        
  41.   if (!SD.begin(chipSelect)) {
  42.     Serial.println("Card failed, or not present");
  43.     // don't do anything more:
  44.     return;
  45.   }
  46.   Serial.println("card initialized.");
  47.  
  48. }
  49.  
  50.  
  51. void loop() {
  52.  
  53.  
  54.   Clock.getTime(year, month, date, DoW, hour, minute, second);
  55.  
  56.   Serial.print("shunt V: ");                                 //send title to serial monitor
  57.   Serial.print(monitor.shuntVoltage() * 1000, 2);            //send shunt voltage to serial monitor in mV with 2 dec places
  58.   Serial.println(" mV");                                     //send units to serial monitor
  59.  
  60.   Serial.print("shunt I: ");
  61.   Serial.print(monitor.shuntCurrent() * 1000, 2);
  62.   Serial.println(" mA");
  63.  
  64.   Serial.print("bus V:   ");
  65.   Serial.print(monitor.busVoltage(), 2);
  66.   Serial.println(" V");
  67.  
  68.   Serial.print("bus P:   ");
  69.   Serial.print(monitor.busPower() * 1000, 2);
  70.   Serial.println(" mW");
  71.  
  72.   Serial.println("");
  73.   Serial.print(hour, DEC);
  74.   Serial.print(":");
  75.   Serial.print(minute, DEC);
  76.   Serial.print(":");
  77.   Serial.print(second, DEC);
  78.   Serial.print(" ");
  79.   Serial.print(date, DEC);
  80.   Serial.print("/");
  81.   Serial.print(month, DEC);
  82.   Serial.print("/");
  83.   Serial.println(year, DEC);
  84.  
  85.  
  86.  
  87.    
  88.  
  89.  String dataString = "";                                  //create an empty string var called dataString
  90.  float shuntVolt = (monitor.shuntVoltage() * 1000);       //hold value of monitor.shuntVoltage() in float var called shuntVolt
  91.  float shuntCurr = (monitor.shuntCurrent() * 1000);       //hold value of monitor.shuntCurent() in float var called shuntCurr
  92.  float busVolt = (monitor.busVoltage());                  //hold value of monitor.busVoltage() in float var called busVolt
  93.  float busPow = (monitor.busPower() * 1000);              //hold value of monitor.busPower() in float var called busPow
  94.  
  95.  dataString += String(date);                              //add the var date, cast as a string to the current dataString var
  96.  dataString += ",";                                       //add a comma to the current dataString
  97.  dataString += String(month);                             //and so on
  98.  dataString += ",";                                       //and so forth
  99.  dataString += String(year);
  100.  dataString += ",";
  101.  dataString += String(hour);
  102.  dataString += ",";
  103.  dataString += String(minute);
  104.  dataString += ",";
  105.  dataString += String(second);
  106.  dataString += ",";
  107.  dataString += String(shuntVolt);
  108.  dataString += ",";
  109.  dataString += String(shuntCurr);
  110.  dataString += ",";
  111.  dataString += String(busVolt);
  112.  dataString += ",";
  113.  dataString += String(busPow);
  114.  
  115.   File dataFile = SD.open("datalog.txt", FILE_WRITE);       // if the file is available, write to it:
  116.  
  117.                                        
  118.   if (dataFile) {
  119.     dataFile.println(dataString);
  120.     dataFile.close();
  121.                                        
  122.     Serial.println(dataString);                             // print to the serial port too:
  123.   }
  124.                                        
  125.   else {                                                    // if the file isn't open, pop up an error:
  126.     Serial.println("error opening datalog.txt");
  127.  
  128.  
  129. }
  130.  delay(5000);                                               //wait some amount of time between logging (you can set your own)
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement