teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

URLを修正しました

2020/10/26 12:44

投稿

PAD
PAD

スコア1

title CHANGED
File without changes
body CHANGED
@@ -271,4 +271,4 @@
271
271
  今現在スケッチは以下のようになっています
272
272
  ※文字数制限に引っかかってしまったため以下リンクへ記載を行いました。
273
273
 
274
- https://github.com/PAD-arduino/test/blob/main/test1
274
+ [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

title CHANGED
File without changes
body CHANGED
@@ -157,4 +157,118 @@
157
157
  Die ID (FFh) : 2270h (8816)
158
158
  ```
159
159
  プログラムが旧バージョン?のINA226用だったので一部アドレスが違うかもしれない、とも考えましたが[**同じであるという記載**](https://strawberry-linux.com/support.php/11260/1867873)を見つけたため問題なさそうです。
160
- プログラムが原因の可能性ありましたらご指摘お願いします。
160
+ プログラムが原因の可能性ありましたらご指摘お願いします。
161
+
162
+ ##現在の進捗に関して
163
+ 昨晩から本日までに試行した内容を全て羅列致します。
164
+
165
+
166
+ ご提案いただいたスケッチ
167
+ ```
168
+ void eep_write_data(word V,word A){
169
+ static word adrs=0;
170
+ Wire.beginTransmission(INA226_ADDR);
171
+ Wire.write(adrs>>8);
172
+ Wire.write(adrs);
173
+ Wire.write(V>>8);
174
+ Wire.write(V);
175
+ Wire.write(A>>8);
176
+ Wire.write(A);
177
+ Wire.endTransmission();
178
+ adrs+=4;//
179
+ }
180
+ ```
181
+
182
+ ```
183
+ Wire.beginTransmission(INA226_ADDR)
184
+ ```
185
+ がEEPROM作例と異なりEEPROMへのアドレスではなかったので
186
+ ```
187
+ Wire.beginTransmission(eep_add)
188
+ ```
189
+ と変更しました。
190
+
191
+
192
+ ①の後検証を行うと
193
+ 'eep_add' was not declared in this scope
194
+ と言われたので
195
+ ```
196
+ const int eep_add = 0x50;
197
+ ```
198
+ を追加しました。
199
+
200
+
201
+ VとAが何なのか定義されていないのでは?と思ったため、void loop()内に
202
+ ```
203
+ for(int V=(voltage + (1000/2)) / 1000;int A=current;)
204
+ ```
205
+ を追加しました。
206
+
207
+
208
+ 「EEPROM作例と異なり、eep_write_dataで書き込まれる内容が全てsetup以前に定義されているということはvoid loop以降ではVとAの定義以外eep_write_dataの()の中に入れるものはないのではないか?」
209
+ と思い、③以降に
210
+ ```
211
+ Wire.begin();
212
+ eep_write_data;
213
+ delay(1000);
214
+ ```
215
+ とだけ記載しました。
216
+
217
+ しかし実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
218
+
219
+
220
+
221
+ やはり
222
+ eep_write_data;
223
+ には何か書き込まなければならないと思ったので
224
+ ```
225
+ eep_write_data(V,A);
226
+ ```
227
+ と記入したところ 'V' was not declared in this scope
228
+
229
+ ```
230
+ eep_write_data(int V,int A);
231
+ ```
232
+ と記入したところ expected primary-expression before 'int'
233
+
234
+ ```
235
+ eep_write_data(word V,word A);
236
+ ```
237
+ と記入したところ expected primary-expression before 'V'
238
+
239
+ ```
240
+ eep_write_data("V","A");
241
+ ```
242
+ と記入したところ エラーは出ませんでしたが実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
243
+
244
+
245
+ ```
246
+ for(int V=(voltage + (1000/2)) / 1000;int A=current;)
247
+ ```
248
+
249
+ ```
250
+ for(word V=(voltage + (1000/2)) / 1000;word A=current;)
251
+ ```
252
+ へ書き換えました。
253
+ エラーは出ませんでしたが実行後読み込みスケッチで読み込みを行っても何も記録されていませんでした。
254
+
255
+
256
+ ```
257
+ Wire.begin();
258
+ eep_write_data;
259
+ delay(1000);
260
+ ```
261
+
262
+ ```
263
+ Wire.begin();
264
+ eep_write_data();
265
+ delay(1000);
266
+ ```
267
+ と書き換えたところ
268
+ too few arguments to function 'void eep_write_data(word, word)'
269
+ と言われてしまったので⑤へと逆戻りで堂々巡りしてしまっています。
270
+
271
+ 今現在スケッチは以下のようになっています
272
+ ※文字数制限に引っかかってしまったため以下リンクへ記載を行いました。
273
+
274
+ https://github.com/PAD-arduino/test/blob/main/test1

3

INA260の不具合?を追記

2020/10/26 12:38

投稿

PAD
PAD

スコア1

title CHANGED
File without changes
body CHANGED
@@ -121,4 +121,40 @@
121
121
  電流範囲 : 0.0A~2.0A未満
122
122
  サンプリング間隔 : 100ms
123
123
  1回の測定時間 : 120秒未満(主な使用時間40~80秒)
124
- 使用回数 : 一度に20回未満(20回以上使用する場合はPCへデータを移動し、eepromをリセットして再記録を行うか、別のeepromに付け替えることを予定しています。)
124
+ 使用回数 : 一度に20回未満(20回以上使用する場合はPCへデータを移動し、eepromをリセットして再記録を行うか、別のeepromに付け替えることを予定しています。)
125
+
126
+ ###INA260の負荷測定結果
127
+ 無負荷状態だけでなく数値変化するか確認を行ったほうが良いとのご指摘をいただき、負荷をかけたINA260の動作確認を行ったところトラブルが増えてしまいました。
128
+ 問題としてはどのような負荷をかけても表示されるIの値が-1mAから変化しません。
129
+ 入出力端子を経由してモーター、LEDは動いているので内部断線はしていないようですが、一先ず購入店舗に問い合わせを行いつつ電力から電流を逆算するようにしたいと思います。
130
+
131
+ ・3Vボタン電池で並列接続したLED3個を稼働
132
+ ```
133
+ V: 2734mV, I: -1mA, P: 100mW
134
+ ---INA226 Registers ---
135
+ Configuration Register (00h) : 6727h (26407)
136
+ Shunt Voltage (01h) : FFF4h (65524)
137
+ Bus Voltage (02h) : 088Bh (2187)
138
+ Power (03h) : 0004h (4)
139
+ Current (04h) : FFFFh (65535)
140
+ Calibration (05h) : 0A00h (2560)
141
+ Mask/Enable (06h) : 0008h (8)
142
+ Alert Limit (07h) : 0000h (0)
143
+ Die ID (FFh) : 2270h (8816)
144
+ ```
145
+ ・1.2Vニッケル水素電池でモーターを稼働
146
+ ```
147
+ V: 1128mV, I: -1mA, P: 1150mW
148
+ ---INA226 Registers ---
149
+ Configuration Register (00h) : 6127h (24871)
150
+ Shunt Voltage (01h) : 0170h (368)
151
+ Bus Voltage (02h) : 038Fh (911)
152
+ Power (03h) : 0034h (52)
153
+ Current (04h) : FFFFh (65535)
154
+ Calibration (05h) : 0000h (0)
155
+ Mask/Enable (06h) : 0008h (8)
156
+ Alert Limit (07h) : 0000h (0)
157
+ Die ID (FFh) : 2270h (8816)
158
+ ```
159
+ プログラムが旧バージョン?のINA226用だったので一部アドレスが違うかもしれない、とも考えましたが[**同じであるという記載**](https://strawberry-linux.com/support.php/11260/1867873)を見つけたため問題なさそうです。
160
+ プログラムが原因の可能性ありましたらご指摘お願いします。

2

使用条件の追加

2020/10/24 16:59

投稿

PAD
PAD

スコア1

title CHANGED
File without changes
body CHANGED
@@ -111,4 +111,14 @@
111
111
  ```
112
112
  を常時出力していました。
113
113
 
114
- この問題を解決する手がかりを教えていただければ幸いです。
114
+ この問題を解決する手がかりを教えていただければ幸いです。
115
+
116
+
117
+ ###使用条件
118
+ 詳細な使用したい条件は以下の通りです。
119
+
120
+ 電圧範囲 : 2.0~3.5V
121
+ 電流範囲 : 0.0A~2.0A未満
122
+ サンプリング間隔 : 100ms
123
+ 1回の測定時間 : 120秒未満(主な使用時間40~80秒)
124
+ 使用回数 : 一度に20回未満(20回以上使用する場合はPCへデータを移動し、eepromをリセットして再記録を行うか、別のeepromに付け替えることを予定しています。)

1

追加質問

2020/10/23 09:27

投稿

PAD
PAD

スコア1

title CHANGED
File without changes
body CHANGED
@@ -34,4 +34,81 @@
34
34
  void eep_write(int device_add, unsigned int eep_add, int data)
35
35
  ```
36
36
  の部分の書き換えが必要なのだろうと思いましたが、具体的にどのように書き換えれば良いかがわかりませんでした。
37
- ヒントでも構いませんのでどう書き換えていくのが良いかを教えていただきたいです。
37
+ ヒントでも構いませんのでどう書き換えていくのが良いかを教えていただきたいです。
38
+
39
+ ##追記
40
+
41
+ 教えていただきました内容を踏まえまして追加質問失礼致します。
42
+
43
+ 作例のスケッチを拝見し、INA260の作例をベースとして
44
+ ```
45
+ #include <Wire.h>
46
+ ```
47
+
48
+ ```
49
+ #define NELEMS(arg) (sizeof(arg) / sizeof((arg)[0]))
50
+ ```
51
+ の間に
52
+ ```
53
+ void eep_write(int device_add, unsigned int eep_add, int data){
54
+ Wire.beginTransmission(device_add);
55
+ Wire.write((int)(eep_add >> 8));
56
+ Wire.write((int)(eep_add & 0xff));
57
+ Wire.write(data);
58
+ Wire.endTransmission();
59
+ }
60
+ ```
61
+ を追記し、
62
+ ```
63
+ Serial.println();
64
+ snprintf(buf, NELEMS(buf)
65
+ , "V:%5ldmV, I:%5dmA, P:%5ldmW"
66
+ , (voltage + (1000/2)) / 1000
67
+ , current
68
+ , (power + (1000/2)) / 1000
69
+ );
70
+
71
+ Serial.println(buf);
72
+
73
+ dumpRegisters();
74
+
75
+ delay(1000);
76
+ ```
77
+
78
+ ```
79
+ int x = 0;
80
+ while (x <=10){
81
+
82
+ eep_write(0x50, x*5+0, voltage&0xff);
83
+ eep_write(0x50, x*5+1, (voltage>>8)&0xff);
84
+ eep_write(0x50, x*5+2, (voltage>>16)&0xff);
85
+ eep_write(0x50, x*5+3, current&0xff);
86
+ eep_write(0x50, x*5+4, (current>>8)&0xff);
87
+
88
+ x++;
89
+ }
90
+ delay(1000);
91
+ ```
92
+ と書き換えました。
93
+
94
+ このスケッチを使用後、EEPROM参考サイトにあったデータ読み込み用プログラムを使用してアドレス50までの確認を行ったところ、
95
+ アドレス0,24,47にそれぞれ
96
+ 226,255,0とだけ記録されていました。
97
+
98
+ INA260には測定対象を何も接続しておらず、確認でINA260の作例そのままを出力すると
99
+ ```
100
+ V: 1mV, I: -1mA, P: 0mW
101
+ ---INA226 Registers ---
102
+ Configuration Register (00h) : 6727h (26407)
103
+ Shunt Voltage (01h) : FFFEh (65534)
104
+ Bus Voltage (02h) : 0001h (1)
105
+ Power (03h) : 0000h (0)
106
+ Current (04h) : FFFFh (65535)
107
+ Calibration (05h) : 0A00h (2560)
108
+ Mask/Enable (06h) : 0008h (8)
109
+ Alert Limit (07h) : 0000h (0)
110
+ Die ID (FFh) : 2270h (8816)
111
+ ```
112
+ を常時出力していました。
113
+
114
+ この問題を解決する手がかりを教えていただければ幸いです。