自作電子小物/実験用DC電源 V0.6
自作電子小物/実験用DC電源 V0.6
Power supply mini V0.6
2010年12月15日水曜日
実験用の小型直流可変電源装置で、20V/1A級、定電圧および定電流の機能を持ちます。ピークホールド付のデジタル電圧・電流計が付いており、変動あるとカツカツ音、過負荷時等には警告音も出ます。コンセントへはACアダプタを使用していますので感電の心配もなく、少ない部品で簡単に作れます。
製作費は約3500円、電源部に可変ボルテージレギュレータのLT3080(リニアテクノロジ社)、制御部にテキサス・インスツルメンツ社のマイコン MSP430F2013 を使用し、ソフトウエアは C言語 にてコーディングしています。
<機能/特徴>
■定電圧だけでなくmA単位で定電流させる事が出来る
■非常に少ない部品数で作りやすい
■面倒な校正作業は不要
<仕様>
名称:小型DC電源
分類:電圧・電流表示付き実験用可変安定化直流電源装置
入力電源:ACアダプタ10〜30V経由の商用AC100電源
出力電圧:DC0.5〜20V(最大は入力電源と負荷電流により変動)
出力電流:〜1A
表示:
種別:16桁×2行 キャラクタLCD(バックライトなし)または4桁×2行7セグメントLED(赤)
項目:上段:出力電圧 [V] 最大値と現在値、下段:出力電流[mA、A]最大値と現在値
精度:
電圧:±5%(LCD表示は0.001V、LED表示は0.01V単位)
電流:±5%(表示は〜約150mAは0.1mA、それ以上は0.001A単位)
更新頻度: 約10回/秒
付加機能:
一定値を超えるとビープ音(18V、150mAと0.9A)
変動があるとクリック音(0.1V、約150mA以下は1mA、それ以上は10mA)
電圧、電流の自動ゼロ値校正、電源を切っても校正データは保存
最大値を保持(LED版は最低値も保持)
外形:幅:146mm、奥行き:95mm、高さ:50mm(突起部を除く)
<技術的なポイント>
■ハードウエア
・ボルテージレギュレータLT3080を使用した定電圧と定電流制御
・Texas Instruments社のMSP430F2013マイクロコントローラ
・電圧・電流の計測
分圧抵抗による直流電圧の計測
シャント抵抗(微小直列抵抗)による直流電流の計測
MSP430内蔵のシグマデルタ型16ビットA/Dコンバータを使用
・圧電スピーカの単純直接駆動
■ソフトウエア
・プログラミング言語はC、開発環境は IAR Systems Embedded Workbench for MSP430
・SD16_Aと内蔵PGAを使用した、非割込での入力
・独自I2C接続LCDモジュール表示ライブラリの利用
・ビープ音をTimer_A2でPWM出力
・EEPROMの代わり、”Information FLASH”への恒久データ保存
■開発法
・回路とプリント基板設計は、無料で利用出来るCadSoft Computer社のEAGLEを使用
・プログラム開発は、無料で利用出来るIAR社のIDEを使用
・プログラム書込み器は、eZ430を使用
<おおまかな設計>
前バージョンの0.5は、費用的に少なく済みましたが、部品数がとても多くなってしまいました。もっと、単純にならないものかと考えなおしたものです。また、電源部も手持ちのボルテージレギュレータを使用してた関係で最低電圧が1.2Vからの制約と電流調整ボリュームがデカかったので、これも改善します。
部品数を減らすには、アンプを省略するするのが一番効果的。アンプを内蔵できるPSoC、もしくはMSP430(PGA内蔵品)が、安く入手出来る部品で、私的な選択肢です。既に、PSoCは使用した事があるので、MSP430、それも16bitA/Dコンバータとの組み合わせが出来て、値段の安いMSP430F2013をターゲットにします。
電源部は、前回検討に上がったLinearTechnorogy社のLT3080がやや高価ですが、単純な回路で要件を実現可能できると思われたので使用してみる事にしました。
<詳しい設計>
■PS部
データシートの標準的応用例に、要件ピッタリの回路がありましたので、そのまま適用します。ただし、出力最小電流0.5mAを守る為に、1kΩを入れています。これだと0.5V以下が保証されませんが私的には問題ありません。
■メータ電圧検出部
MSP430F2013のSD16の最大計測値はVref=1.2Vの場合、+0.6Vです。最大20Vまで測定出来るようにしたいため、0.6/20=0.03、33分の1以上分圧する必要があります。とりあえず1k:39kΩ、つまり40分の1とします。
A/Dコンバータの最小精度は1.2V/65536=18.3μVなので、最小0.57mV単位となります。これだと、精度的には十分ですので、特にレンジ分け等は不要です。
■メータ電流検出部
前回同様シャント抵抗0.1Ωを使います。
■メータアンプ部
MSP430F2013に内蔵しているPGAを使用します。最大32倍までしか増幅できませんが、16bitの精度がありますので、一般的な内蔵A/Dコンバータの10bitに比べ64倍細かく変換出来るので、比較すると2000倍のゲインがあるようになるはずです。
本当に、微小電圧を正確に増幅出来るものか不安でしたが、ブレッドボードで確認し問題が無い事が判りましたので、これで進めます。何も問題がないので拍子抜けした感じです。
■メータ電源部
メータに3.3V電源を供給する部分が必要になりますので、これも簡単に3端子ボルテージレギュレータを使って生成します。
最大3.3V/5mA程度の電流が使われますが、最大30Vの入力があるので、電圧差25Vを吸収する必要があります。電力消費は
(30V-3.3V)x0.05A=0.14W
許容損失的には特に問題ありませんが、3.3V品で30V耐圧のものが少ないので部品集めでは注意が必要です。
<回路図>
PS部
計器部
LCDモジュールのみ販売店が限定される事はご勘弁下さい。
7セグメントLEDモジュールへの置き換えする手もあります。
<部品>
PS部
ヒートシンクは入っていません。ACアダプタは、使用可能電圧範囲が広いので、余っていたり使っていない物を探すと流用出来る場合が多いと思います。
メータ部
合計3000〜4000円ぐらい。これにプリント基板作成すると+1000〜2000円、ケースに1000円と言った感じです。
<ソフトウエア>
■開発に必要な物
Windows PC(パソコン)
IAR Embedded Workbench for MSP430 V4 (*1)
MSP-FET430U14等のプログラム書込み器(EZ430-F2013からワイヤを引き出して利用する事も可能)
*1: IAR Systems社のサイトからダウンロード可能 (Link)
■ソースコード
main.c : アプリケーション本体。LCD関係以外の全てが記述されています
lcd.c : LCDモジュール制御サブルーチン本体
lcd.h : LCDモジュール制御サブルーチン定義体
delay.c: 時間待ちサブルーチン本体、 lcd.c から呼び出される
delay.h: 時間待ちサブルーチン定義体
USI_I2CMaster.c: I2C制御サブルーチン本体、 lcd.c から呼び出される
USI_I2CMaster.h: I2C制御サブルーチン定義体
itoanm.c : 固定小数点整数ー文字変換サブルーチン本体
itoanm.h : 固定小数点整数ー文字変換サブルーチン定義体
独自に開発したI2C LCDモジュール制御サブルーチンを利用しています。これは、lcd.h内にハードウエア設定を定義するだけで簡単に使えます。
割込など特別な事は行っていませんし、単純な処理なので、ソースコードを読めばすぐ判ると思います。A/Dコンバータから値を取込み、変換計算をして、LCDに表示する処理を無限に続けるのが主なロジックで、その中に値が越えた時に音を出すとか、ボタンが押された時の処理とかが入っているだけです。
MSP430F2xxファミリはEEPROMを持っていませんが、データ保存用のFLASHが256バイト内蔵されています。64バイト単位でのデータ更新という条件がありますが、同一アドレス空間なので直アクセス出来たりEEPROMに比べ使い易い面もあります。const変数をここに追い出せば、手間なしでプログラムメモリを削減出来ます。
プログラムメモリが2kBなので、大した機能を付ける事が出来ませんでした。表示もprintfを使うと、それだけでメモリが一杯いっぱいになってしまいます。そこで次の対策を行いました。
(1)stdioを使わない
数値文字変換を自前のサブルーチンを使う事で、やっとアプリケーションを組込めるようになりました。
(2)USI制御サブルーチンを簡易版に変更
本来i2c_lcd機能はTIが提供するI2C制御サブルーチンのUSI_I2CMaster.s43(アセンブラ)が必要なのですが、これが意外とメモリを使うので、サブセット版を作ってメモリ節約しました。これで600から200バイトに削減出来ました。
参考に、メモリマップを掲載させて頂きます。
もっと、もっと付け加えたい機能がありますが、メモリが足りません。逆に、2kBでよくこれだけ出来ると言うべきかもしれません。
<ダウンロード>
IAR EW4.11プロジェクトファイル:
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
Windows2000 SP6 / VMware Fusion 3.0.2 / Mac OS X 10.5
CadSoft Computer EAGLE 5.6 Light Edition for Mac
IAR Embedded Workbench for MSP430 V4.11B Kickstart edition
eZ430-RF2500
<基板>
部品数が少ないので、蛇の目基板でも十分作れると思いますが、専用プリント基板を作ってしまいました。
実際作ったのは計器部のみで、PS部は蛇の目基板で作りました。
<ケース>
アクリル板を加工して、ケースを作成しました。
間口はデスクトップPCの5インチベイと同じ大きさで、2種類の案が出て来ました。本当は縦長バージョンが気に入っているのですが、やっぱり前面で数値を確認出来る様にしないとダメだろうと思い直し、横長バージョンを作ってみる事にしました。奥行きはそんなに必要でないので、ちょっと寸図まりになった感じ。
この位のサイズになると、厚み3mmでは華奢になってしまうので5mmで考えましたが、黒の部材が手近で売っていなかったのでクリア材に黒塗装としました。剥げるのであまり好きではない方法です。
ヒートシンクは昔PCサーバに使っていた物が丁度幅が合っていたので再利用。それに基準に寸法を決めました。本当は熱容量的には最悪時に不足するようなのですが、実際どの程度の発熱なのかも知りたいので使ってみます。
天板はメンテナンス用に開く様になっています。ヒンジ部分は、虫ピンを両サイドから差し込んでいるだけです。PS部を取付けた直後の状態。まだ計器部を取付けていない状態です。 右の写真は底部から見た所。
出来上がり。やはりバックライトの無いLCDは、作業部屋のような暗い場所は苦手です。LCDモジュールとピン互換で作った「7セグメントLEDモジュール」に転装してみました。やっぱり赤7セグLEDは良いです。
<性能検証>
メータ部分の精度を確認しました。
負荷として抵抗1kΩまたは100Ωを接続して電圧を変えてDMMのsanwa PC20を2台使い、電圧と電流を計測した結果です。(V0.5のケースを流用していた時の状態)
自動でオフセットゼロ補正されますが、個体補正は仕込んでいない状態です。ただし、電流値はPGAの増幅率にMSP430F2013,SD16_Aのデータシートのtyp値を使った定数にしています。
表計算ソフトで出した、一次式を見れば判ると思いますが、傾きは1.00に極めて近いですし、オフセット量も少なく抑えられています。電圧誤差では、指数関数的に下った感じになっていると言う事は、固定値でズレているような感じ、つまりオフセット誤差があるように思われます。自動でゼロ補正しているのですが、十分に機能していないという事でしょう。電流誤差では、1つだけ極端に外れた数値がある意外は、1%以内になっているのは感激です。とりあえず、通常使う分には十分です。
<関連>
<あとがき>
V0.5を検討している最中に、圧倒的に部品数が少ないので、こちらをメインで作ろうとしていたのですが、やはりMSP430は一般的とは言えないと思い、開発順を逆にして両方作ってみる事にしました。マイコンだけで大した部品が無いのですが、十分実用になる小物が出来ました。力づくで目的を達成するのも悪くはありませんが、「こんなので大丈夫なの?」というぐらい単純なのものが良いです。
現在は、7セグメントLEDに転装したこの小物がメインの実験用電源になっています。
富樫 豊彦 tog001@nifty.com
Variable DC power supply with voltage & current display
20V/1A class