Arduino GPIOの最大電流値40mAを超えていないか知りたい実効値かピーク値かわからないけどおそらくピーク値と考えてピーク電流値を考えてみる。
『パルス波』の実効値・平均値の求め方 - Electrical Informationの計算によりPWMで0Vと5Vが同じ時間現れる場合(analogWrite(.., 127))実効値はピークの1/√2(0V, 0AとピークV,ピークIが交互に現れるから消費電力0とピークVxピークIが交互に現れて平均消費電力0.5xピークVxピークI=(1/√2ピークV)x(1/√2ピークI)でも計算可)。今使ってるテスターは真の実効値を出すのでピークを見るには√2すればよい。前のエントリの測定結果をピーク値換算して
[抵抗149.1Ω]
電流値は19.176mA、ブザー間電圧0.256V、抵抗間電圧2.828V。
ブザーを外した場合の電流20.2mA、抵抗間電圧3.03V。
[抵抗99.8Ω]
電流値26.0mAmA、ブザー間電圧0.337V、抵抗間電圧2.454V。
電流値は超えてないけどブザーを外した時の電圧、つまりGPIOの電圧が5Vのはずなのに3V程度しか出てない。
この値あんまり信用できないな、どうやって確かめたらいいだろう?
追記1:Arduino IDEのSerial Plotterというのを使ってみた。シリアル通信が9600bpsで6番ピンのPWM周波数が980Hzなんでサンプリングにちょうどいい。
#define PROBE_PIN A0 #define SOUND_PIN 6 void setup() { Serial.begin(9600); pinMode(PROBE_PIN, INPUT); pinMode(SOUND_PIN, OUTPUT); analogWrite(SOUND_PIN, 128); } void loop() { int value = analogRead(PROBE_PIN); Serial.println(value); }
analogWrite()に128を出してるのにグラフを見ると等間隔になってない。
見るとだいたいデューティ比0.4くらい。上のリンクを参考に補正して
>>> math.sqrt(0.4) 0.6324555320336759 >>> 2.14*1.0/0.632 3.386075949367089
GPIO PIN6-GND間電圧直接測定2.54V (AC)。
2.54*1.0/0.632=4.02Vピーク。まだ足りない。
追記2:
オリックス・レンテック | 方形波の性質と計測上の扱い - 計測器・測定器玉手箱 | ORIX Rentec Corporation こちらに大事なことが書かれてあった。
さらに、方形波は多くの場合直流分を含みますが、交流計測器の多くは入力がAC結合されているため、直流分を除いた値が表示されます。 直流分を含む値を求める場合は、直流分だけを取り出して別途計測し、両者の二乗の和の平方根から算出します。
あーこれか。もう一度計算してみる。面倒なのでもう画像で。
4.45V。惜しい!
ん、あそうかなぜ直流分電圧に交流電圧の実効値足したらピークが出ると思ったんだろう?てか電圧と電流の実効値は同じように計算されるんだから電流ピークは電流実効値x(電圧ピーク/電圧実効値)=13.56x(5.0/2.181)=31mA。
更に計算続けるとkをデューティー比、Veを実効値としてV=Ve*√(k-k^2)で計算できそうなことがわかった。また写真張り付け
これで計算するとピークは5.18V、デューティー比の値読み取りが適当なことを考えればまあまあじゃないか。テスターの実効値は信用できそう。じゃあ上のピーク電流値も信用できそう。
結論、オシロが欲しい