自作電子小物/実験用DC電源 V0.4
自作電子小物/実験用DC電源 V0.4
Power supply mini
2009年3月12日木曜日
CQ出版社の月刊誌であるトランジスタ技術2008年10月の付録基板に、手製の電圧・電流表示を付けただけの、 実験用の小型DC電源です。ご紹介させて頂く程でもありませんが、付録を企画された方へのレスの一つと思い掲示させて頂きます。本記事は、電源そのものよりも電圧・電流計の製作記になっています。
中心 となる安定化電源部は、付録基板をそのまま無改造で利用しました。もちろん、付録の小冊子通りR1のチップ抵抗を取り除き、100kΩ可変抵抗器とCinの220μFのコンデンサを追加しました。電源源は以前から使用していた15VのACアダプタをそのまま使再利用しました。
このまま でも満足なのですが、やはり実験用途には出力電圧の表示がないと不便ですし、目安程度でも良いから電流表示も欲しい所です。そこで、電圧・電流メータを出来るだけ安く付ける事を考えた結果、手持ちの部品を最大限使えば、かなり安く出来そうなので製作に入りました。電源基板がコンパクトなので、表示は7セグメントのLEDを、マイコンには、電流計測用の直列抵抗の微小電圧を計測するアンプを省けると言う事で、Cypress Semiconductor社のPSoCを選択しました。
<仕様>
名称:小型DC電源
分類:電圧・電流表示付き実験用可変安定化DC電源装置
入力電源:ACアダプタ15V経由の商用AC100電源
出力電圧:1〜14V
出力電流:〜0.7A
表示:
種別:7セグメントLED(赤)、3桁×2行
項目:上段:出力電圧[V]、下段:出力電流[mA]
精度:
電圧:0.0~14.0[V]±5%(表示は10V未満は0.01V、10V以上は0.1V単位)
電流:1~700[mA]±5%(表示は10mA未満は0.01mA、100mA未満は0.1mA、100mA以上は1mA単位)
更新頻度: 約10回/秒
付加機能:電流値が300mAを越えると点滅します
外形:幅:55mm、奥行き:85mm、高さ:50mm
<構成・方式>
■基本
電圧・電流表示部の部品数を抑え安く済むように、マイコンを最大限利用し外付け部品を極力少なくなるようにします。
■電圧計測
単純に、分圧抵抗でマイコンに取り込めるレベルに減圧してます。扱う最大電圧が14V、A/Dコンバータの入力範囲を0〜5Vとした場合、1/2.8以下に分圧すれば良いのですが、計算しやすいと思い1/4で考えました。
一般的に、Vss,Vdd付近は、かなり怪しくなるので注意しなければなりませんが、今回は0Vからの測定をする必要がないので問題ないと思われます。
なお、PSoCでは1/nに出来るプログラマブルなアンプがあるのですが、マイコン自体の電源を越えた電圧を加えても良いと言う事ではなく、仕様の絶対定格の制限はつきまといますね。
■電流計測
色々な方法があるかと思いますが、やはり単純に考えました。被測定回路にあまり影響が出ないような低い抵抗値の抵抗を直列に挿入し、その抵抗に発生する電圧降下を測定して、電流値を算出する方式とします。
難しくしているのは、扱う電圧値が極めて小さい事です。そのため、増幅するか高感度なA/Dコンバータを使用するかといった対応になります。オペアンプ等を使用した増幅回路が必要かと思いますが、部品数を抑えたいと考えるならば、やはりPSoCのアナログブロックが使えない物かと考えてみました。
ハイサイドに電流検出抵抗を挿入した場合、PSoCの入力電圧を越えますので、直接入力する事はできません。ローサイドでは簡単に出来そうな感じですが、実際はVssに近い領域はPSoCの許容範囲外です。ならばと言う事で、ハイサイドでそれぞれ分圧した結果を差分すれば、電圧レベルはさらに下がりますが、理論的には降下電圧を得る事が出来るはずです。
電流検出抵抗を0.1Ωとした場合、最小表示精度の0.1mAで2.5μVという極めて低い電圧です。ここでは、電圧差を計測するので、PSoCのINSAMPと呼ばれる差動アンプが適当です。また、この電圧レベルになるとノイズの影響が出やすいでしょうし、ターゲットの電源部がスイッチング動作をしていますので、乗ってくるノイズをある程度排除できるINSAMPは、まさに好都合と思われます。最大96倍の増幅が出来ますが、まだ不足するのでもう一段アンプ(PGA)を重ね、A/Dコンバータの解像度も最大の8192カウント(13bit)にする事で、 計算上では何とかなりそうな感じです。INSAMP,PGAのデータシートを見て制限事項・許容範囲等・条件を確認しましたが、今ひとつ理解出来ない事もあり、このように単純な物ではないかもしれません。PSoCで行けそうと言う事で、とりあえずやってみましょう...やった結果、温度の影響(ドリフト)が大きくなり、改悪した感じになってしまいました。やはり、10倍の精度アップは簡単にいかないようです。(バージョン0.3)
暖かいうちは、これでも気にならなかったのですが、涼しくなってくると段々気になってきました。そんな所、サイプレス社のアプリケーションを物色している時に、この問題を打破できそうなテクニックがありました。AN2340でローサイドに電流検出抵抗を入れているのに、PSoCで計測できているのです。+バイアスをかけて取り込めるレベルまで引き上げてやればいいだけなのです。なるほど!私は、鼻からローサイドでの検討を突っ込んでしていませんでした。
アプリケーションノートではVrefを外部に引き出して、バイアス源にしていましたが、今回は単純化してVdd固定です。Vssから100mV程離せば実害が無い事は過去の経験がありましたし、あまり離しすぎると精度が落ちてしまいますので、当初200mV当たりで検討を始めました。部品がどんどん増えて行きますが、とりあえず実現できるか試してみます。さっそく、結果ですが、ローサイドにすれば全て解決と言う訳ではなく、論理を単純にしマージンを数倍稼ぐ事は出来ましたが、問題視していた温度影響が解決される物ではありません。
この回路構成では、電流が流れていない時、0Vで均衡するように対称となる抵抗の精度が問われます。私は、それを半固定抵抗で吸収すれば良いと思い、抵抗器の熱影響を軽く考えていました。この問題もあり、改めて熱精度について調べて見ましたが、抵抗器の種類により影響の度合いが10倍以上も違う事に愕然としました。今ひとつ実感がないので、一般的に温度影響の少ない「金属皮膜」抵抗を入手し置き換えた所、温度影響がほとんど無くなりました。これで問題解決です。
そもそも、電流検出抵抗を1Ωのままにしていれば、少ない数の安価な部品で済みます。ロードレギュレーションを改善するためのセンス端子を引き出せれば、このような事を考えずに済むのですが。
■校正方法
校正の為の部品を増やしたくありませんし、自己使用という事で、ソフトウエアで補正計算を行う方法で問題ありません。校正時はプログラムを書き込み直します。とは言え、バージョン0.3でソフトウエア校正の面倒さに多少疲れましたので、100円位のコストアップだったら部品が増えても良いとも考えていますが...
マイコンは方式設計の通り、PSoCを使用し、入手しやすいCY8C27644を選択しました。
電流検出抵抗は当初(バージョン0.2までSchm.jpg)は1Ωにしていましたが、バージョン0.3では0.1Ωに減らしました。これは、本来の電源のロードレギュレーション(電流変化による電圧変動の少なさを示す指標)を小さくする目的です。その代償として、ノイズの影響を無視出来なくなったため、コンデンサを付加する必要が出てきました。
表示部は 本来ならばLEDの電流駆動にトランジスタが必要な所ですが、今回使用したLEDが3mA/セグメントでも意外と明るく、薄暗い実験部屋で使う分にはOKと判断し省略しました。トランジスタ駆動にすれば、表示の明るさで悩む必要もありません。もしかしたら、Expressの7セグメントモジュールがそのまま使えてしまうので、プログラムコードを全く書かずに済むかもれません。
PSoCへの5V電源は、ACアダプタの15Vから分流し、3端子レギュレータで作り出します。特に条件はありませんので、安いもの何でもOKです。(プログラム書込み時、レギュレータを逆流し素子破壊する可能性と、DCDCコンバータが動作し外部に電源供給してしまう事に注意)
作成後、半固定抵抗の調整が必要です。電流0の状態でPSoCのピンP00とP01間が0Vになるように半固定抵抗器を調整して下さい。 部品の精度が良ければ、大体真ん中の位置で合うはずです。
<部品>
計2800円ぐらい(トラ技本体を含みますが、ケース・配線材料と送料・交通費等は含みません)
実際の所ほとんどが手持ち品で済みました。というか、有る物で済ませた感じです。
<コンフィグレーション>
モジュールの配置は特に注意する点はありません。
グローバルリソースの設定
各モジュールのプロパティ
ピン割当て
<ソースコード>
PSoC Designer でチョちょっと作る程度のものなので、C言語の学習材料にするなら丁度良いと思います。出来上がったものも、そのまま実用になりますし一石二鳥です。フローチャートを示します。
約300ステップ程度の小さなコード(main.c)ですが、特に説明した方が良い事項は次の物です。なお、7セグメントLED表示ははユーザモジュールを利用していますので、表示リフレッシュを全く意識せずに済みます。
■入力オフセット電圧のキャンセル法
INSAMP,PGAユーザモジュールのデータシートを見ると、入力にはオフセット電圧が付いてきます。固定値なら、逆オフセット値で補正すれば良いでしょう。所が、実際動かして確認すると机上通りの数値が出て来ない上、温度と関係するのか安定しません。
不安定なので補正しきれそうもないと思い別の方法を考えていた所、INSAMPの2入力に1つの入力を与えれば0V値が出てくるはずだと気がつきました。つなぎ変えはAMUXモジュールで実現できます。この、0V値を基準にすればオフセット値そのものをキャンセル出来そうです。温度ドリフトもある程度吸収される事が期待されます。
■ソフトウエアでローパスフィルタもどきを
測定値、特に電流値がかなりバタツキます。表示させると見にくいので、値をならす事にしました。直近の20サンプリングの平均を取る方式です。リングバッファを使って直近のサンプル値を取れる様にしています。ソースコードには他の方式も書いてありますが、平均方式で問題ないです。
■PGA2の4倍ゲイン時のスケールオーバ対策
ゲインを動的に下げる事で対応。100mAを境界としてゲインの切換えを行います。
■温度ドリフト対策
高倍率でのアンプを使用しているためか、バージョン0.3は電流0値で、かなりの温度影響がありましたが、原因が抵抗器のランクによるものだと判明し、部品交換した後は十分の1程度に改善されました。それでも、幾分温度の影響はあるようです。
<ダウンロード>
Designer5プロジェクトファイル :
ライセンス:フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
WindowsXP HomeEdition SP3 / Parallels Desktop for Mac Build3226
CadSoft Computer EAGLE 5.6 Light Edition for Mac
CY3210 MiniProg1
V0.2まで
Cypress Semiconductor PSoC Designer 5.0 (SP3a Build718)
HI-TECH C for the PSoC Mixed-Signal Array Version 9.60PL5 (Lite版)
Cypress Semiconductor PSoC Programmer 3.05
V0.3から
Cypress Semiconductor PSoC Designer 5.0 (SP5.5 Build985)
ImageCraft C compiler Release V7.01
Cypress Semiconductor PSoC Programmer 3.06
<校正方法>
校正しなくとも、アナログメータ程度の精度はあると思いますが、表示される数値が気になるようでしたら、下記の方法/手順になります。
校正するにはテスター、DMM等の基準となる電圧・電流計と、負荷に使う1K,500,100,50,10Ωぐらい適当な抵抗器もしくは可変抵抗器(ワット数に注意)が必要です。温度ドリフトが多少あるようなので、10分以上電源を入れてから作業した方が安定した値がとれます。
1.バージョン0.3の場合
(1)電圧の校正
•ソースコードを編集し、電圧校正計算式をコメントアウトしてビルド・プログラム書き込み
•出力端子に電圧計を接続し、電圧ツマミを操作し数ポイントの実電圧値とパネル電圧値を記録
•表計算ソフト等を使用して、逆補正式を生成
•ソースコードを編集し、電圧校正計算式を変更してビルド・プログラム書き込み
(2)電流の校正
1)分圧抵抗のマッチング
•ソースコードを編集し、”//#define NOADJUST”の行のコメント//を外してビルド、プログラム書込み
•出力端子に電圧計を接続、負荷はつなげず、電圧ツマミを操作し1Vに設定
•パネル電流値が0になるように、内部の半固定抵抗を調整
2)ゲイン4倍の電圧オフセットの計測
•負荷はつなげず(電流0にする)、電圧ツマミを操作し数ポイントの電圧値とパネル電流値を記録
•表計算ソフト等を使用して、電流0のオフセット値を算出する逆補正式を生成
3)ゲイン4倍の傾き誤差の計測
•出力端子に負荷の抵抗をつなげ、電圧ツマミを操作し数ポイントの電圧値とパネル電流値を記録
•負荷の抵抗を変えて①を繰り返す
•表計算ソフト等を使用して、傾き値を求める
4)ゲイン1倍の電圧オフセットの計測
•ソースコードを編集し、”#define LOWGAINV 15000”の行を”#define LOWGAINV 0”に変更してビルド、プログラム書込み
•(b)と同じ手順を繰り返す
5)ゲイン1倍の傾き誤差の計測
•(c)と同じ手順を繰り返す
•ソースコードを編集し、電流校正計算式を変更、”#define NOADJUST”と”#define LOWGAINV 0”の行を元に戻してビルド・プログラム書込み
(3)完了
2.バージョン0.4の場合
(1)半固定抵抗の調整
•CY8C27443のP00ピンとP01ピンの電圧を測り、0Vとなる様に半固定抵抗を調整する
•部品の精度が良ければ、目盛の位置が半分ぐらいで合うはず
(2)校正の無効化
•ソースコードを編集し、”#define ADJ_xxx xxx”の記述のある行を全てコメントアウト
•ビルドしてプログラムを書き込み
(3)測定
•負荷抵抗と出力電圧を調整し、最低〜最高電圧、電流0mA〜700mAの間の数値(基準値と表示値)を10〜20ポイント程度記録する。
•表計算ソフト等を利用し、電圧および電流の傾き値とオフセット値を、0〜100mAの場合と100〜700mAに分けて算出しておく。
(4)校正の有効化
•電圧の傾きを1000倍して “#define ADJ_V_SLOPE xxx” の行に反映
•電圧のオフセットをmV単位で “#define ADJ_V_OFFSET xxx” の行に反映
•100mA未満の電流の傾きを1000倍して “#define ADJ_I_SLOPE_L xxx” の行に反映
•100mA未満の電流のオフセットをmV単位で “#define ADJ_I_OFFSET_L xxx” の行に反映
•100mA以上の電流の傾きを1000倍して “#define ADJ_I_SLOPE_H xxx” の行に反映
•100mA以上の電流のオフセットをmV単位で “#define ADJ_I_OFFSET_H xxx” の行に反映
•ビルドしてプログラムを書き込み
(5)完了
<性能検証>
0〜100mA(バージョン0.4)の精度
100〜700mA(バージョン0.4)の精度
軽く補正した割には、大体3%以内に収まっているのでまずまずです。バージョン0.4では補正作業が格段に楽になりました。追い込めば、けっこう良い数字が出るかもしれません。一応、補正前の数値はこれです(V0.4mes3_hi.pdf、V0.4mes3_lo.pdf)
電流を流していない状態での電流表示はピッタリ0にはならず、温度の影響を受け(10℃当たり0.1mAぐらい)、かつ常時ふらつきます。(0.05mA位)
<実装>
●ケース
いつものアクリル板で手作り。手のひらサイズに仕上がりました。付録基板は両面テープにて固定です。
これだけで、電源機能は使えるようになります。
●表示基板
ブレッドボード上で回路の確認と、ソフトウエアの開発が一段落した後に、手持ちの蛇の目基板を使って、部品を固定しました。無理矢理に詰め込んだ感じで、大きさもギリギリセーフです。
●裏面
LEDのセグメント間配線が一番時間がかかりました。こんなの、手作業でやるもんじゃないと思いつつ「ソルダーズハイ」てな感じになってました。今度は絶対、パターンを起こすか、一体型のLEDを使うと思います。
ケースの大きさは、ツマミとターミナルの配置で決定してしまったので、内部のスペースには余裕があります。
●上面
MiniProgでFLASHに書き込み、動作確認。一カ所ぐらい配線ミスがあっても良さそうなものだが今回はパーフェクト。
LED表示はこのように見える仕掛けです。最近、この乳白色のアクリル板が気に入っていて、板越しに見える感じが良いです。心配した明るさは、自分としては、まあOKです。明るい部屋では厳しいです。(写真では大変明るいように見えますが実際はそれほどでもない)
上段が電圧、下段は電流を示しています。その内、表示やつまみの説明にレタリングを入れたいと思っていますが、自分で使う物なので、結局そのままになっています。
<完成>
前に苦労(PSoCでMPPT)したので、INSAMPでのA/D変換は簡単にはいかないだろうと思ってましたが、やはり一筋縄ではいきませんでした。とにかく精度が出ません。実測を繰り返しデータシートとにらめっこしつつ、傾向をつかんで、その程度の物なのかと納得するしかありません。
<専用基板>
将来的な他への流用を考え、 3種類の基板パターンを作ってみました。表面実装部品などは使わないようにしていますので、作りやすいと思います。ただし、実際製作している訳ではないので、動かないかもしれません。無料で使用できるPCB設計ソフトウエアのCadsoft社「EAGLE」を利用しました。設計ファイルも<ダウンロード>出来る様にしています。
●R1:平面型(縦59mm×横56mm、片面一層、 ジャンパ要:赤線部分)
●R2:横長2枚構成(縦25mm×横74mm、片面一層)
2枚の基板のつなぎは、ピンヘッダ/ピンフレームを使用する想定です。
●R3:正方形2枚構成(縦41mm×横42mm、片面一層、 ジャンパ要:赤線部分)
2枚の基板のつなぎは、ピンヘッダ/ピンフレームを使用する想定です。
<関連>
<あとがき>
これまで、ACアダプタに可変電圧の3端子レギュレータをつないだだけの単純なものを使っていました。これは、秋月電子通商のAKI-PICプログラマを、自作したケースに入れた際、スペースに余裕があったので、電源部を流用して実験用可変電源機能も付けたものです。つまり「電源付きPICプログラマ」と言う物でした。狭い机上にはスペース節約にもなり結構良かったのですが、最近このAKI-PICプログラマのファームアップに失敗し、使えなくなってしまいました。この機会にPICkit2にシフトする事にしましたが、電源としてのみ使うには大きくて邪魔なので、解決方法を考えていました。貧乏なので、手持ちのものを漁っているとトラ技の付録基板が有る事を思い出しました。これでコンパクトなやつを作って、AKI-PICと離別しようと思ったのがきっかけです。「電源付きPICプログラマ」では、PICとLCDモジュールで電圧計の機能を付加していましたので、今回も表示機能はぜひ欲しいし、できれば電流計も付けたい。電圧・電流計は秋月でパネルメータが1000円からあるので、普通はこれが選択肢トップなのですが、「金はないけど時間はある」という状況では、手持ち部品で自作する、とあいなった次第です。
富樫 豊彦 tog001@nifty.com
Variable DC power supply with voltage & current display
DC-DC converter type
AC adapter 15V -> 1~14V
100mA class