お手製お手軽デジタル可変電源
TIの電圧レギュレータICTPS7A47でお手軽なデジタル可変電源を作った記録です。
利用した秋月電子さんのモジュールは10年前の発売で、web上にも様々な記事があって今更感はあるのですが、実際に使ってみて便利だったのと、菊水電子さんの「ハイカワ」を読んで触発されたのとで、メモ代わりに残しておきます。

今回の主役はTPS7A47です。基本的に中味が分からないと分かったつもりにならないと手が動かない人なので、まずはデータシートを見ました。

典型的なバンドギャップリファレンス電圧1.2Vと分圧抵抗から非反転増幅器で0.1V単位の電圧を得て、これを誤差増幅器に導いています。シンプルで堅実。気に入りました(上から目線ですみません)。
使い方としては機能ブロック図からも読める通り、電圧設定端子をHi-ZにするかLOW(GND)に落とすかで切り換えます。

秋月さんのモジュールでは切換にハーフピッチのDIPスイッチを使っています。 先達の経験を拾い読みしていたところ、sharowさんがノイズについて検証された記事 の「秋月!なぜそこをケチった。」という叫びを見つけて、CNRの0.1uFに1uFのチップコンを小亀実装しました。置き換えなかったのは小亀にする方が作業が楽だったからです(基板にストレスが掛かるところでは禁じ手)。

実験に頭を使いつつオフセット1.4V+2進数の計算をしながら老眼でポチポチやるのは面倒なので、マイコン制御します。ATmega328PにArduinoの内蔵8MHz発振F/Wを焼いて使うことにしました(参考:あらかじめ焼いて売っているもの)。設定はHi-ZとLOWの切換なので、ArduinoのDIOをINPUTとOUTPUT-LOWへ切換えればいいはず。ただ、DIOから設定端子にノイズが乗るかも知れないので気になったらフェライトビーズなどで対策することにします(宿題)。DIOの設定はジャンク箱にあったロータリーエンコーダ(同等品)を使い、たまたまプッシュスイッチ付きだったので、これを押したらリセットと電源OFFが入るようにします。これのため、TPS7A47のENに繋がっているVINへのプルアップ抵抗R1を外しました(上の写真左側)。というのは、ATmega328Pのリセット端子に高電圧が掛かると何が起こるか分からないからです(壊れなくてもヒューズが飛ぶかも)。あと、設定電圧と実際に出ている電圧をLCDで読み取れる様にしました。 そんなことを考えながら組み立てた内側はこんな感じになりました(モジュールの大きい電解コンは裏に付けています):

ケースは大昔に買ったまま使いそびれていたALTOIDSミントサイズ缶がジャストサイズだったので使いましたが、裏側はこんな悲惨なことになっています:

ブリキがハンドニブラーだと延びてしまって切りにくいことを痛感しました。金属ケースにするならアルミが扱いやすいです。ちなみに足は消しゴムです。 回路図はこんな感じです。Arduinoのコードはリポジトリを作って GitHubに上げておきました。

BOMは次の通りで、合計3300円でした(ロータリーエンコーダは同等品)。なお、電線・ハンダ・ラベル等の副材はカウントしていません:
作って2週間も経ってから見直すと、色々と粗があります。最大のは、なんでATmega328Pを5Vで動かしたのか。制御側は3.3V単一でよかったのに。ははは…
何かの参考になれば幸いです。
パドラッパ from MacBook Air (2017)
利用した秋月電子さんのモジュールは10年前の発売で、web上にも様々な記事があって今更感はあるのですが、実際に使ってみて便利だったのと、菊水電子さんの「ハイカワ」を読んで触発されたのとで、メモ代わりに残しておきます。

今回の主役はTPS7A47です。基本的に中味が

典型的なバンドギャップリファレンス電圧1.2Vと分圧抵抗から非反転増幅器で0.1V単位の電圧を得て、これを誤差増幅器に導いています。シンプルで堅実。気に入りました(上から目線ですみません)。
使い方としては機能ブロック図からも読める通り、電圧設定端子をHi-ZにするかLOW(GND)に落とすかで切り換えます。

秋月さんのモジュールでは切換にハーフピッチのDIPスイッチを使っています。 先達の経験を拾い読みしていたところ、sharowさんがノイズについて検証された記事 の「秋月!なぜそこをケチった。」という叫びを見つけて、CNRの0.1uFに1uFのチップコンを小亀実装しました。置き換えなかったのは小亀にする方が作業が楽だったからです(基板にストレスが掛かるところでは禁じ手)。

実験に頭を使いつつオフセット1.4V+2進数の計算をしながら老眼でポチポチやるのは面倒なので、マイコン制御します。ATmega328PにArduinoの内蔵8MHz発振F/Wを焼いて使うことにしました(参考:あらかじめ焼いて売っているもの)。設定はHi-ZとLOWの切換なので、ArduinoのDIOをINPUTとOUTPUT-LOWへ切換えればいいはず。ただ、DIOから設定端子にノイズが乗るかも知れないので気になったらフェライトビーズなどで対策することにします(宿題)。DIOの設定はジャンク箱にあったロータリーエンコーダ(同等品)を使い、たまたまプッシュスイッチ付きだったので、これを押したらリセットと電源OFFが入るようにします。これのため、TPS7A47のENに繋がっているVINへのプルアップ抵抗R1を外しました(上の写真左側)。というのは、ATmega328Pのリセット端子に高電圧が掛かると何が起こるか分からないからです(壊れなくてもヒューズが飛ぶかも)。あと、設定電圧と実際に出ている電圧をLCDで読み取れる様にしました。 そんなことを考えながら組み立てた内側はこんな感じになりました(モジュールの大きい電解コンは裏に付けています):

ケースは大昔に買ったまま使いそびれていたALTOIDSミントサイズ缶がジャストサイズだったので使いましたが、裏側はこんな悲惨なことになっています:

ブリキがハンドニブラーだと延びてしまって切りにくいことを痛感しました。金属ケースにするならアルミが扱いやすいです。ちなみに足は消しゴムです。 回路図はこんな感じです。Arduinoのコードはリポジトリを作って GitHubに上げておきました。

BOMは次の通りで、合計3300円でした(ロータリーエンコーダは同等品)。なお、電線・ハンダ・ラベル等の副材はカウントしていません:
item | detail | price | pcs | subtotal |
---|---|---|---|---|
Reg. | AE-TPS7A4700 | 1100 | 1 | 1100 |
Reg. | LP-2950L 3.3V, 5V | 20 | 2 | 40 |
uP | ATmega328P-PU | 380 | 1 | 380 |
LCD | AE-AQM0802 | 720 | 1 | 720 |
rot.enc | w/ push sw | 400 | 1 | 400 |
subs | D-type BB | 40 | 1 | 40 |
R | 100k 1pair, 10k 5 | 1 | 7 | 7 |
C | 1uF | 12 | 7 | 84 |
C | 0.1uF | 10 | 1 | 10 |
chip C | 1uF | 5 | 1 | 5 |
chip L | 10uH | 44 | 1 | 44 |
LED | 3mm RED | 10 | 1 | 10 |
DC jack | 2.1mm | 50 | 1 | 50 |
heat sink | 16x25x16mm | 50 | 1 | 50 |
case | ALTOIDS | 360 | 1 | 360 |
| 固定リンク | 0
« SNSの移行というかお着替え【2025/04/28追記】 | トップページ | Seeed XIAO nRF52840をNiMH電池で動かす一方法(の中間報告)【2025/02/08追記・2025/04/22補足】 »
コメント