google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

LEDをパルス点灯させた場合の見掛けの明るさ、実験結果

 居酒屋ガレージ日記さんの、Arduino UNOでLEDの駆動デューティーを変えてみる の記事を見て、「LEDをパルス点灯させるとDC点灯より明るく見える」という話を思い出しました。7セグLEDなどの点灯方法の解説にもにもよく書かれているのですが、ダイナミック点灯させると、直流点灯より明るく見えるという話です。

 この話には時々出くわしていて、私が最近気になっているチャーリープレクシング回路の解説の中にも出て来ました。また、チャーリープレクシングとは書かれていませんが、MICROCHIP社のComplementary LED driveの資料にも同じ話が出てきます。

 ただ本当にそんなことがあるのか、以前からちょっと「まゆつば」だなーと思っていたので自分で確認してみることにしました。

 DCとパルス点灯した場合の明るさを比較するために、次のような回路を考えました。

▼確認回路
LEDパルス/DCドライブ明るさ比較回路
 点灯させるのはLEDが一つだけで、これをQ1でDC点灯、Q2でパルス点灯させる回路です。DC点灯を基準とし、パルス点灯させた場合の見掛けの明るさが同じに見えるようにVR1を調整します。流れる電流はシャント抵抗で検出し、フィルターで平均値を出す回路になっています。視線の移動無しで、同じLEDを見ているだけで済むので、比較的小さな明るさの変化でも判るはずです。

 スイッチを押すと直流点灯、離すとパルス駆動になるので、LEDを見ながらスイッチをON/OFFさせ、VR1を調整することで見掛けの明るさを一致させます。これ、回路としては簡単なロジックなのでArduinoを使うまでも無かったのですが、最初はパタパタと自動切換えなどを考えていたのでこんなことになっています。なお、パルスは自作のパルスジェネレーターで発生させています。

▼回路全体
測定回路
 左上が自作のパルスジェネレーター。明るさ調整と書いてあるツマミがパルス駆動の明るさ調節(VR1)で、操作性を良くするためにありあわせの木の板に取り付けました。

LEDと切り替えスイッチ
 確認用のLEDと切り替え用の押しボタンです。LEDを見ながらボタンを押して明るさの違いが無くなるように調整つまみを廻します。なお使ったのは赤色のLEDで秋月で買った超高輝度の物です。

▼測定結果
測定結果
 駆動周波数は30Hzから10kHz、デューティーは95~1%の範囲で変化させました。なお、表内の値は10Ωの抵抗の両端電圧をmVで表しているので、実際の電流はこの1/10倍mAになります。

▼グラフ
LEDパルスドライブ測定結果グラフ
 デューティーを下げると電流の値が小さくなっています。つまり、同じ明るさににするための電流は小さくなっています。大雑把な傾向で言うと、デューティー10%以下なら60%の電流で同じ明るさに見えるということです。

 この結果、にわかには信じ難いですが、事実みたいです。ただ、周波数が10kHzでも同じ傾向になっていて、人間の目がこんなに高速で変化する明るさの変化に影響を受けるとは考え難いです。ということで、回路的なメカニズムやLEDの発光の特性が見えている可能性があります。

▼CDSで明るさをチェック
CDSで確認
 簡単に出来るセンサーを使った明るさのチェック、ということでCDSをLEDの上に載せて抵抗(= 明るさ)を測ってみました。表の右下の一点だけのチェックですが、センサーで測ってもDCとパルス点灯で明るさの違いは認められませんでした。つまり、センサーで見ても明るさは同じだが、消費電流は約40%少ないという現象は再現していました。(ただ、人間の目で同じ明るさに見えていてもセンサーで測ると20%くらいは明るさが違っていたりします。)

◆考察
 さて、この結果をどう見るかです。素直に結果を受け入れれば、LEDをパルス点灯すれば、60%の電流でも同じ明るさを得ることが出来る、ということになります。消費電力が問題になる場合、これは大きなメリットになります。

 ところで、LEDの発光効率を上げるのにものすごい努力(投資)が行われています。これをパルス点灯するだけで何割も改善が出来るなら、みんなが飛び付きそうな話です。でも現実はそうなっていないので、何か問題というか、どこかに考え間違えがあるのかも知れません。もう少し検討してみたいと思います。

◆関係がありそうな用語、資料
 ・ブロッカ・ザルツァー (Broca - Sulzer) 効果
 ・トールボット・プラトー (Talbot - Plateau) の法則
 ・パルス駆動による視覚心理効果を用いたLED照明の高効率化技術(愛媛大学)

圧力センサーMPS20N0040Dを使う、回路とソフトのテスト

 前の記事で圧力センサーの感度が判ったので、いよいよ回路とソフトを作って実際に圧力測定を行ってみます。今回の記事の結論を先に出すと、

▼炭酸ガス発生装置の圧力を測定
反応式CO2m圧力計テスト中
 圧力センサーを使って、CO2発生装置の反応槽(重曹タンク)の圧力を液晶画面に表示させるところまで行います。

▼回路図(クリックで別窓に拡大)
Arduinoを使った圧力計の回路図
 圧力センサーの出力を5倍の差動(差電圧)アンプで受け、更に12倍のアンプを通してArduinoに接続しています。

 1段目はオペアンプを3個使った計装アンプ構成にした方が良いのですが、作るのが面倒なので簡単な回路にしました。なお、差動アンプのゲインを欲張ると増幅率の精度が悪くなるので、ほどほどの倍率に留めています。また、オフセット調整のVR1には100Ωを使いたかったのですが手持ちが無かったので100Ω(R50)をパラにして誤魔化しています(副作用があります)。

 R6を可変抵抗にしてゲインを調整可能にしたくなります。でもそうすると、ゲインと同時にオフセットも変わってしまうので調整が面倒になります。そんなことで、ゲインは60倍の決め打ちで行くことにしました。なおゲインの最終調整はソフトで行うことにします。

 後段の12倍アンプと合わせ、全体の増幅率は60倍で、この倍率でセンサーのフルスケールである0.4気圧が、Arduinoのアナログポートのフルスケールの5Vにほぼ相当するようになります。なお、センサーのブリッジの供給電圧は電源電圧のままで安定化していませんが、Arduino側のADCのVrefも電源電圧のままで変化するので、電圧の変動の影響はキャンセルされるはずです。

 話が戻りますが、この回路のように整数の増幅率を持つアンプを作る時は、正確な抵抗比が必要な時に便利な、E24の数値の相対比率表を使うと便利です。まあこの記事の用途では、半端な増幅率になってもあまり困らないのですが、、

▼センサーとブレッドボード
圧力センサー MPS20N0040D
 半透明のチューブの先のDIPのICが圧力センサーです。

▼プログラム
/*  圧力センサー MPS20N0040D の動作テストプログラム
* 表示はmmAq 2018/11/11 ラジオペンチ http://radiopench.blog96.fc2.com/
*/

#include <LiquidCrystal.h> // LCDを使用

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 液晶シールドを使用
float k1 = 931.1; // 1V当たりの圧力(mmAqの値)、要調整
float zeroPressV = 0.5; // 気圧ゼロの時の電圧

int mmAq; // mmAq単位の気圧(表現出来る範囲は±3.2kg/cm2)
char buff[10]; // 文字列操作バッファ sprintfで使用

void setup() {
pinMode(13, OUTPUT);
Serial.begin(115200);
lcd.begin(16, 2);
lcd.print("MPS20N0040D test"); // 1行目表示
lcd.setCursor(0, 1);
lcd.print("P= mm"); // 2行目固定表示
}

void loop() {
mmAq = readPress();
lcd.setCursor(2, 1); // 2行目3文字目から、
sprintf(buff, "%4d", mmAq); // 右詰め4文字で (マイナスは-nnn)
lcd.print(buff); // 圧力を表示
Serial.print(buff);Serial.println("mmAq");
delay(500);
}

int readPress() { // 圧力を測定してmmAq単位の値で返す
float p; // 圧力計算結果
long d; // ADC結果バッファ
long sumd = 0; // ADC累積値
digitalWrite(13, HIGH);
for (int n = 0; n < 100; n++) { // 100回
d = analogRead(0); // A0の値を読む
Serial.println(d);
sumd = sumd + d; // 平均処理のために累積
}
digitalWrite(13, LOW);
// 圧力計算式
p = k1 * ((sumd * 5.0) / (100.0 * 1024.0) - zeroPressV ) + 0.5;
return (int)p; // 結果をintで返す
}
 0.5秒間隔で圧力を測定し、キャラクタ液晶に表示するプログラムです。なお表示の単位はmmAqです。
 電圧から圧力に変換する係数(8行目のk1)の値は、前の記事の感度測定結果から持ってきた値です。
 約5000mmAqのスパンを10ビットのADCで刻むと、ステップは5mmAqになりこれでは分解能が不足します。そこで多数回測定して平均値を求めることで1mmAq単位の値を出しています。

▼ブレッドボードと液晶
圧力計のテスト
 右は液晶シールドで、この下にArduino UNO があります。

◆調整方法
 まずはゼロ調整を行います。センサーに何も接続していない状態で、VR1を廻して表示がゼロになるように調整すれば調整は完了です。なお、ゼロ調整した状態では、アナログポートへの出力(U3のピン7)の電圧は0.5Vになっているはずです(9行目の値で電圧は変更可能)。つまり、気圧ゼロは0.5Vで、それより電圧が低ければ負圧ということになります。

 なお、気圧ゼロを0ボルトに設定する手もあります。でも今回のようにオペアンプを片電源で使うと、0ボルト付近の挙動が怪しいので、アナログ回路ではオフセットを付けておいた方が安心です。ちなみに、オフセットは後でソフトで差っ引けば良いし、そもそも0ボルトを基準にすると負の圧力が表現出来なくなります。

▼スパン確認
調整と動作確認
 測定範囲確認のためにシリンジで圧力を加えているところです。確認の結果は、測定範囲 -465 ~ 4181mmAq で、狙い通りでした。

 動作は大丈夫そうなことが確認出来たので、実際の水槽に接続したのが最初の写真です。

◆まとめ
 念のためにU字管を使ったマノメーターで圧力の測定精度を確認しましたが、圧力の値はほとんど一致していました。ということで、k1の値は事前調査の値のまま変更しないで済みました。センサーの感度測定やアンプの倍率設定がうまくいっていた、ということで良かったです。

 最初の写真のように、実際の水槽に接続してみると、タンク圧力とCO2の泡の発生状態との関係が良く判って面白いです。現在の水槽の状態では、タンク圧力は750mmAq程度で、水深による圧力変化はもちろんありますが、圧力のほとんどはストーンの圧損によるものでした。

 ということで、圧力センサーを使ってArduinoで圧力を測定することが出来るようになりました。これをベースにすれば、いろいろな応用方法があると思います。世の中にはもっと高級な圧力センサーがありますが、基本はこの回路のようなブリッジアンプになっていることが多いはずです。ブリッジアンプを一度自分で作ってみるのは、良い経験になると思います。

 次回の記事では、これを化学反応式のCO2発生装置に組み込む予定です。

圧力センサーMPS20N0040Dを使う、特性確認編

 このあいだ作った、化学反応方式でCO2を発生させる装置は順調に動いています。これまで2か月くらい運転して欲しくなったのが、CO2発生タンクの圧力計です。圧力計があれば次のようなことが判るようになるはずです。

1) ガスの発生状況と、現在のガスの貯蔵量。
2) ストーンなどの圧損の値。
3) ガスの発生を止めて圧力の変化を見ることで、リークの有無。

 どれも大切な話なので、液晶画面にタンク圧力も表示させることにしました。

 まずは圧力センサーをどうするかですが、これいろんな物が売られています。安かったので、AliExpressからこんな物を買ってみました。

▼圧力センサー
圧力センサ MPS20N0040D
 AliExpress で買ったMPS20N0040Dと言う型格の、フルスケール40kPa(約0.4気圧)のピエゾ圧力センサーです。これ、送料込みで1個1ドルです。なお、背景は無関係です(手近にあったマウスパッド)。また、中央のセンサーに付いている水色のキャップは配管のチューブ接続用に取り付けた、熱収縮チューブです。

 データーシートはネットからダウンロードできますが、、大雑把な仕様は以下の通りです。MPS20N0040Dターシート
 圧力レンジ:40kPa、電源:5VDCまたは1mA(定電流)、入出力インピーダンス:4-6kΩ
 フルスケール:50-100mV、バイアス電圧(オフセット電圧?):プラスマイナス25mV

 一番重要な出力は50-100mVとなっていて、値にえらく幅があります。(この記事の後で実測して確認します)

▼ピンアサイン(データーシートより抜粋)
MPS20N0040Dのピン接続図
 このセンサーには変換アンプやインターフェイス回路は入っていないので、ブリッジの端子が直接引き出されています。ここで注意が必要なのは、この図はデバイスを下から見た図であるということです。(データーシートの外形図まで見ると判ります)
 DIPのパッケージでオリエンテーションマークまであるのに、裏側から見た図になっているとはふざけた仕様です。そういえば、データーシートも、だらだらとした箇条書きになっていて、普通のデバイスメーカーの書き方とフォーマットが違っていたので違和感を感じていたのですが、たぶん別の文化の影響下にある部品ではないかと思いましたが、どうなんでしょう。

 ともかく、真空管じゃあるまいに、いまどき裏から見た部品図が混ざっていたら絶対に間違えるので、上から見たBSch用の部品図を作りました。

▼MPS20N0040D (TopView)
MPS20N0040D(上から見た図)
 上から見た図に書き換えました、また、ピン番号の付け方もDIPのパッケージのルールに合わせています。ということで、この図はメーカーの図とはピン番号が違っています。

▼特性測定
感度測定方法
 データーシートがあまりにも大雑把なので、簡単な回路で特性を測定してみました。ブリッジの出力電圧をDMMで読む回路になっています。VR1には100Ωを使いたかったのですが、手持ちが無かったので1kΩを使い、パラに100Ωの抵抗(R1)を接続しています。

 圧力は、水を入れた細いシリコンチューブを図のようにU字管にして発生させました。水面の高さの差を巻き尺で測れば圧力が判る仕掛けです。

 このようにして測定した結果は以下の通りでした。なお、部品は3つあるので測定結果も3つあります。

▼ブリッジ出力電圧
測定結果
 まずはセンサーに圧力を加えない場合の出力で、ゼロ調用のVR1をいっぱいに廻した場合のブリッジの出力電圧です。

 VRをCCWにいっぱいに回した時は27mV、CWに回した時は-18mV程度の電圧になっています。このVR1が中央の時はCCWとCWの平均の電圧になるはずなのでゼロ点電圧として計算結果を示しています。

 どうもブリッジのゼロ点(センター)では少しプラスの電圧が出るように作られているようです。値が揃っているので、たぶんこれ狙ってやっているのだと思います。

▼圧力感度特性
感度計算結果
 いよいよ圧力を加えた場合のデーターです。測定前に出力がゼロになるように調整しておき、その後700mmAq程度の空気圧を加えた場合の出力です。

 平均としては、0.0179mV/mmAq となり、フルスケールの40kPaの時の出力は72.64mVということになりました。

 ちなみにデーターシートでは、フルスケールの出力電圧は50-100mVと広い範囲が示されているのですが、実際にはほぼその真ん中付近だったということになります。まあ n=3 でそういうことを言うのはあまり良くないのですが、3つ持ってきて3つともほぼど真ん中だったので、たぶん大丈夫でしょう。

◆まとめ
 えらく安いので心配だったのですが、ちゃんと圧力が測定出来ました。感度係数も判ったので、次回の記事では検出回路を作って、いよいよCO2発生タンクの圧力を測定してみたいと思います。
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード