goo blog サービス終了のお知らせ 

開発のいきぬき

社員の撮影した写真や装置開発の試行錯誤の記録を掲載します。

ものづくりへのチャレンジ2

2025-06-03 21:36:25 | 日記

どうも、社員Yです。
今回は実際にArduinoを使用して作ったプログラムを前回の画像の装置に入れて動かしたデータを公開します。

プログラムは下記になります。

  1. #include
  2. #include
  3. #include
  4. #include
  5. #include
  6. DS3232RTC myRTC;
  7. File dataFile;
  8.  
  9. #define INA219_ADDRESS (0x40) // INA219 I2C address
  10. Adafruit_INA219 ina219;
  11.  
  12. const int chipSelect = 4; // Arduino UNOでは10、Arduino MEGAでは53
  13. const int donepin = 9; // TPL5110のDoneにつなぐピン
  14.  
  15. void setup() {
  16.   Serial.begin(9600);
  17.   Wire.begin();
  18.   myRTC.begin();
  19.  
  20.   // Initialize RTC
  21.   setSyncProvider(myRTC.get);
  22.   if(timeStatus() != timeSet)
  23.   Serial.println("Unable to sync with the RTC");
  24.   else
  25.   Serial.println("RTC has set the system time");
  26.  
  27.   // Initialize INA219
  28.   ina219.begin();
  29.   ina219.setCalibration_16V_400mA(); // 測定レンジの設定
  30.   //ina219.setCalibration_32V_1A();
  31.   //ina219.setCalibration_32V_2A();
  32.  
  33.   // Initialize SD card
  34.   if (!SD.begin(chipSelect)) {
  35.     Serial.println("Card failed, or not present");
  36.     // don't do anything more:
  37.     return;
  38.   }
  39.   Serial.println("card initialized.");
  40.  
  41.   pinMode(donepin, OUTPUT);
  42.   digitalWrite(donepin, LOW);
  43. }
  44.  
  45. void loop() {
  46.   // Read voltage and current from INA219
  47.   float voltage = ina219.getBusVoltage_V();
  48.   float current = ina219.getCurrent_mA();
  49.   float power = ina219.getPower_mW();
  50.   File dataFile = SD.open("datalog.csv", FILE_WRITE);
  51.   dataFile.print(year(), DEC);
  52.   dataFile.print('/');
  53.   dataFile.print(month(), DEC);
  54.   dataFile.print('/');
  55.   dataFile.print(day(), DEC);
  56.   dataFile.print(' ');
  57.   dataFile.print(hour(), DEC);
  58.   dataFile.print(':');
  59.   dataFile.print(minute(), DEC);
  60.   dataFile.print(':');
  61.   dataFile.print(second(), DEC);
  62.   dataFile.print(",");
  63.   dataFile.print(current, 4);
  64.   dataFile.print(",");
  65.   dataFile.print(voltage, 4);
  66.   dataFile.print(",");
  67.   dataFile.println(power, 4);
  68.   dataFile.close();
  69.  
  70.   digitalWrite(donepin, HIGH); //ここでTPL5110に信号HIGHを送ると電源が切れる
  71.   delay(100); //デフォルト100 atmega用に数値大きく
  72.   digitalWrite(donepin, LOW); //これは不要かもしれないが、切れなかったときに再試行するためLOWに戻しておく
  73.   delay(100); //デフォルト100 atmega用に数値大きく
  74.  
  75. }

 

実際に取得できたデータの一部

測定日時 電圧 電流 電力
2024/5/2 19:17:45 303.95 0.756 6079
2024/5/2 19:27:58 -1.1 0.756 -22
2024/5/2 19:38:9 284.75 0.756 5695
2024/5/2 19:48:22 303.95 0.756 6079
2041/2/21 1:18:9 284.75 0.756 5695
2041/2/21 1:18:9 291.15 0.756 5823
1970/0/0 0:0:0 291.15 0.756 5823
2024/5/2 20:29:14 303.95 0.756 6079
2024/5/2 20:39:27 284.75 0.756 5695
2024/5/2 20:49:40 291.15 0.756 5823
1970/0/0 0:0:0 291.15 0.756 5823
2024/5/2 21:10:6 291.15 0.756 -1
2024/5/2 21:20:19 291.15 0.756 5823

 

取得データを見ると日付にバグが、電圧値と電力値がが異常なのがわかります。

これには理由があるんです。
その理由はまた明日、使用機器一覧を乗せて説明をします。

 



最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。