質問編集履歴

5

URLを修正しました

2020/10/26 12:44

投稿

PAD
PAD

スコア1

test CHANGED
File without changes
test CHANGED
@@ -544,4 +544,4 @@
544
544
 
545
545
 
546
546
 
547
- https://github.com/PAD-arduino/test/blob/main/test1
547
+ [https://github.com/PAD-arduino/test/blob/main/test1](https://github.com/PAD-arduino/test/blob/main/test1)

4

今現在の進捗に関しまして追記しました。

2020/10/26 12:43

投稿

PAD
PAD

スコア1

test CHANGED
File without changes
test CHANGED
@@ -317,3 +317,231 @@
317
317
  プログラムが旧バージョン?のINA226用だったので一部アドレスが違うかもしれない、とも考えましたが[**同じであるという記載**](https://strawberry-linux.com/support.php/11260/1867873)を見つけたため問題なさそうです。
318
318
 
319
319
  プログラムが原因の可能性ありましたらご指摘お願いします。
320
+
321
+
322
+
323
+ ##現在の進捗に関して
324
+
325
+ 昨晩から本日までに試行した内容を全て羅列致します。
326
+
327
+
328
+
329
+
330
+
331
+ ご提案いただいたスケッチ
332
+
333
+ ```
334
+
335
+ void eep_write_data(word V,word A){
336
+
337
+ static word adrs=0;
338
+
339
+ Wire.beginTransmission(INA226_ADDR);
340
+
341
+ Wire.write(adrs>>8);
342
+
343
+ Wire.write(adrs);
344
+
345
+ Wire.write(V>>8);
346
+
347
+ Wire.write(V);
348
+
349
+ Wire.write(A>>8);
350
+
351
+ Wire.write(A);
352
+
353
+ Wire.endTransmission();
354
+
355
+ adrs+=4;//
356
+
357
+ }
358
+
359
+ ```
360
+
361
+
362
+
363
+ ```
364
+
365
+ Wire.beginTransmission(INA226_ADDR)
366
+
367
+ ```
368
+
369
+ がEEPROM作例と異なりEEPROMへのアドレスではなかったので
370
+
371
+ ```
372
+
373
+ Wire.beginTransmission(eep_add)
374
+
375
+ ```
376
+
377
+ と変更しました。
378
+
379
+
380
+
381
+
382
+
383
+ ①の後検証を行うと
384
+
385
+ 'eep_add' was not declared in this scope
386
+
387
+ と言われたので
388
+
389
+ ```
390
+
391
+ const int eep_add = 0x50;
392
+
393
+ ```
394
+
395
+ を追加しました。
396
+
397
+
398
+
399
+
400
+
401
+ VとAが何なのか定義されていないのでは?と思ったため、void loop()内に
402
+
403
+ ```
404
+
405
+ for(int V=(voltage + (1000/2)) / 1000;int A=current;)
406
+
407
+ ```
408
+
409
+ を追加しました。
410
+
411
+
412
+
413
+
414
+
415
+ 「EEPROM作例と異なり、eep_write_dataで書き込まれる内容が全てsetup以前に定義されているということはvoid loop以降ではVとAの定義以外eep_write_dataの()の中に入れるものはないのではないか?」
416
+
417
+ と思い、③以降に
418
+
419
+ ```
420
+
421
+ Wire.begin();
422
+
423
+ eep_write_data;
424
+
425
+ delay(1000);
426
+
427
+ ```
428
+
429
+ とだけ記載しました。
430
+
431
+
432
+
433
+ しかし実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+ やはり
442
+
443
+ eep_write_data;
444
+
445
+ には何か書き込まなければならないと思ったので
446
+
447
+ ```
448
+
449
+ eep_write_data(V,A);
450
+
451
+ ```
452
+
453
+ と記入したところ 'V' was not declared in this scope
454
+
455
+
456
+
457
+ ```
458
+
459
+ eep_write_data(int V,int A);
460
+
461
+ ```
462
+
463
+ と記入したところ expected primary-expression before 'int'
464
+
465
+
466
+
467
+ ```
468
+
469
+ eep_write_data(word V,word A);
470
+
471
+ ```
472
+
473
+ と記入したところ expected primary-expression before 'V'
474
+
475
+
476
+
477
+ ```
478
+
479
+ eep_write_data("V","A");
480
+
481
+ ```
482
+
483
+ と記入したところ エラーは出ませんでしたが実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
484
+
485
+
486
+
487
+
488
+
489
+ ```
490
+
491
+ for(int V=(voltage + (1000/2)) / 1000;int A=current;)
492
+
493
+ ```
494
+
495
+
496
+
497
+ ```
498
+
499
+ for(word V=(voltage + (1000/2)) / 1000;word A=current;)
500
+
501
+ ```
502
+
503
+ へ書き換えました。
504
+
505
+ エラーは出ませんでしたが実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
506
+
507
+
508
+
509
+
510
+
511
+ ```
512
+
513
+ Wire.begin();
514
+
515
+ eep_write_data;
516
+
517
+ delay(1000);
518
+
519
+ ```
520
+
521
+
522
+
523
+ ```
524
+
525
+ Wire.begin();
526
+
527
+ eep_write_data();
528
+
529
+ delay(1000);
530
+
531
+ ```
532
+
533
+ と書き換えたところ
534
+
535
+ too few arguments to function 'void eep_write_data(word, word)'
536
+
537
+ と言われてしまったので⑤へと逆戻りで堂々巡りしてしまっています。
538
+
539
+
540
+
541
+ 今現在スケッチは以下のようになっています
542
+
543
+ ※文字数制限に引っかかってしまったため以下リンクへ記載を行いました。
544
+
545
+
546
+
547
+ https://github.com/PAD-arduino/test/blob/main/test1

3

INA260の不具合?を追記

2020/10/26 12:38

投稿

PAD
PAD

スコア1

test CHANGED
File without changes
test CHANGED
@@ -245,3 +245,75 @@
245
245
  1回の測定時間 : 120秒未満(主な使用時間40~80秒)
246
246
 
247
247
  使用回数 : 一度に20回未満(20回以上使用する場合はPCへデータを移動し、eepromをリセットして再記録を行うか、別のeepromに付け替えることを予定しています。)
248
+
249
+
250
+
251
+ ###INA260の負荷測定結果
252
+
253
+ 無負荷状態だけでなく数値変化するか確認を行ったほうが良いとのご指摘をいただき、負荷をかけたINA260の動作確認を行ったところトラブルが増えてしまいました。
254
+
255
+ 問題としてはどのような負荷をかけても表示されるIの値が-1mAから変化しません。
256
+
257
+ 入出力端子を経由してモーター、LEDは動いているので内部断線はしていないようですが、一先ず購入店舗に問い合わせを行いつつ電力から電流を逆算するようにしたいと思います。
258
+
259
+
260
+
261
+ ・3Vボタン電池で並列接続したLED3個を稼働
262
+
263
+ ```
264
+
265
+ V: 2734mV, I: -1mA, P: 100mW
266
+
267
+ ---INA226 Registers ---
268
+
269
+ Configuration Register (00h) : 6727h (26407)
270
+
271
+ Shunt Voltage (01h) : FFF4h (65524)
272
+
273
+ Bus Voltage (02h) : 088Bh (2187)
274
+
275
+ Power (03h) : 0004h (4)
276
+
277
+ Current (04h) : FFFFh (65535)
278
+
279
+ Calibration (05h) : 0A00h (2560)
280
+
281
+ Mask/Enable (06h) : 0008h (8)
282
+
283
+ Alert Limit (07h) : 0000h (0)
284
+
285
+ Die ID (FFh) : 2270h (8816)
286
+
287
+ ```
288
+
289
+ ・1.2Vニッケル水素電池でモーターを稼働
290
+
291
+ ```
292
+
293
+ V: 1128mV, I: -1mA, P: 1150mW
294
+
295
+ ---INA226 Registers ---
296
+
297
+ Configuration Register (00h) : 6127h (24871)
298
+
299
+ Shunt Voltage (01h) : 0170h (368)
300
+
301
+ Bus Voltage (02h) : 038Fh (911)
302
+
303
+ Power (03h) : 0034h (52)
304
+
305
+ Current (04h) : FFFFh (65535)
306
+
307
+ Calibration (05h) : 0000h (0)
308
+
309
+ Mask/Enable (06h) : 0008h (8)
310
+
311
+ Alert Limit (07h) : 0000h (0)
312
+
313
+ Die ID (FFh) : 2270h (8816)
314
+
315
+ ```
316
+
317
+ プログラムが旧バージョン?のINA226用だったので一部アドレスが違うかもしれない、とも考えましたが[**同じであるという記載**](https://strawberry-linux.com/support.php/11260/1867873)を見つけたため問題なさそうです。
318
+
319
+ プログラムが原因の可能性ありましたらご指摘お願いします。

2

使用条件の追加

2020/10/24 16:59

投稿

PAD
PAD

スコア1

test CHANGED
File without changes
test CHANGED
@@ -225,3 +225,23 @@
225
225
 
226
226
 
227
227
  この問題を解決する手がかりを教えていただければ幸いです。
228
+
229
+
230
+
231
+
232
+
233
+ ###使用条件
234
+
235
+ 詳細な使用したい条件は以下の通りです。
236
+
237
+
238
+
239
+ 電圧範囲 : 2.0~3.5V
240
+
241
+ 電流範囲 : 0.0A~2.0A未満
242
+
243
+ サンプリング間隔 : 100ms
244
+
245
+ 1回の測定時間 : 120秒未満(主な使用時間40~80秒)
246
+
247
+ 使用回数 : 一度に20回未満(20回以上使用する場合はPCへデータを移動し、eepromをリセットして再記録を行うか、別のeepromに付け替えることを予定しています。)

1

追加質問

2020/10/23 09:27

投稿

PAD
PAD

スコア1

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,157 @@
71
71
  の部分の書き換えが必要なのだろうと思いましたが、具体的にどのように書き換えれば良いかがわかりませんでした。
72
72
 
73
73
  ヒントでも構いませんのでどう書き換えていくのが良いかを教えていただきたいです。
74
+
75
+
76
+
77
+ ##追記
78
+
79
+
80
+
81
+ 教えていただきました内容を踏まえまして追加質問失礼致します。
82
+
83
+
84
+
85
+ 作例のスケッチを拝見し、INA260の作例をベースとして
86
+
87
+ ```
88
+
89
+ #include <Wire.h>
90
+
91
+ ```
92
+
93
+
94
+
95
+ ```
96
+
97
+ #define NELEMS(arg) (sizeof(arg) / sizeof((arg)[0]))
98
+
99
+ ```
100
+
101
+ の間に
102
+
103
+ ```
104
+
105
+ void eep_write(int device_add, unsigned int eep_add, int data){
106
+
107
+ Wire.beginTransmission(device_add);
108
+
109
+ Wire.write((int)(eep_add >> 8));
110
+
111
+ Wire.write((int)(eep_add & 0xff));
112
+
113
+ Wire.write(data);
114
+
115
+ Wire.endTransmission();
116
+
117
+ }
118
+
119
+ ```
120
+
121
+ を追記し、
122
+
123
+ ```
124
+
125
+ Serial.println();
126
+
127
+ snprintf(buf, NELEMS(buf)
128
+
129
+ , "V:%5ldmV, I:%5dmA, P:%5ldmW"
130
+
131
+ , (voltage + (1000/2)) / 1000
132
+
133
+ , current
134
+
135
+ , (power + (1000/2)) / 1000
136
+
137
+ );
138
+
139
+
140
+
141
+ Serial.println(buf);
142
+
143
+
144
+
145
+ dumpRegisters();
146
+
147
+
148
+
149
+ delay(1000);
150
+
151
+ ```
152
+
153
+
154
+
155
+ ```
156
+
157
+ int x = 0;
158
+
159
+ while (x <=10){
160
+
161
+
162
+
163
+ eep_write(0x50, x*5+0, voltage&0xff);
164
+
165
+ eep_write(0x50, x*5+1, (voltage>>8)&0xff);
166
+
167
+ eep_write(0x50, x*5+2, (voltage>>16)&0xff);
168
+
169
+ eep_write(0x50, x*5+3, current&0xff);
170
+
171
+ eep_write(0x50, x*5+4, (current>>8)&0xff);
172
+
173
+
174
+
175
+ x++;
176
+
177
+ }
178
+
179
+ delay(1000);
180
+
181
+ ```
182
+
183
+ と書き換えました。
184
+
185
+
186
+
187
+ このスケッチを使用後、EEPROM参考サイトにあったデータ読み込み用プログラムを使用してアドレス50までの確認を行ったところ、
188
+
189
+ アドレス0,24,47にそれぞれ
190
+
191
+ 226,255,0とだけ記録されていました。
192
+
193
+
194
+
195
+ INA260には測定対象を何も接続しておらず、確認でINA260の作例そのままを出力すると
196
+
197
+ ```
198
+
199
+ V: 1mV, I: -1mA, P: 0mW
200
+
201
+ ---INA226 Registers ---
202
+
203
+ Configuration Register (00h) : 6727h (26407)
204
+
205
+ Shunt Voltage (01h) : FFFEh (65534)
206
+
207
+ Bus Voltage (02h) : 0001h (1)
208
+
209
+ Power (03h) : 0000h (0)
210
+
211
+ Current (04h) : FFFFh (65535)
212
+
213
+ Calibration (05h) : 0A00h (2560)
214
+
215
+ Mask/Enable (06h) : 0008h (8)
216
+
217
+ Alert Limit (07h) : 0000h (0)
218
+
219
+ Die ID (FFh) : 2270h (8816)
220
+
221
+ ```
222
+
223
+ を常時出力していました。
224
+
225
+
226
+
227
+ この問題を解決する手がかりを教えていただければ幸いです。