背景
ポテンショメータとは指令によって抵抗値を変化させれる回路です。以前ポテンショメータAD5254を扱う基板を作りましたが、「4ポートも要らない」のと「ICの価格が1000円超えで高い」という不満が出てきたので、2ポートのMCP4661を扱う基板を作りました。
スイッチサイエンスで購入できます。
5k、10k、50k、100k
商品の使い方などを紹介します。
回路の許容電圧と電流: 5.5V 2.5mA
MCP4661の端子の電圧と電流の情報です。回路電源電圧 2.7~5.5V
ポテンショメータ端子最大電流量: 2.5mA
ポテンショメータ端子最大電圧: 電源+0.3V
データシートはこちらです。
https://ww1.microchip.com/downloads/en/DeviceDoc/22107B.pdf
種類: 5kΩ、10kΩ、50kΩ、100kΩ
MCP4661が展開している4種類全ての抵抗の基板を作りました。目印の抵抗の位置でポテンショメータの抵抗を判別できます。
抵抗はMCP4661内部の回路に組み込まれているので、基板の目印の抵抗の位置を変えてもポテンショメータの抵抗は変わりません。
左から5kΩ、10kΩ、50kΩ、100kΩです。
2行目にそれぞれ502、103、503、104と書かれています。
ICの文字を読んで判別するのは手間なので、目印の抵抗の位置で判別するのが良いです。
アドレスをジャンパで切替可能
初期状態ではアドレス選択ピン3本は全てVDDに繋がっています。VDD側を切断してGND側に接続することでアドレスを切替可能です。
書き込み保護は無効状態
MCP4661には書き込み保護(write protect)ピンがあり、それをGNDに繋げるとEEPROMの値が保護されます。基板のピンはGNDに繋げず、保護を無効にしてい状態です。
必要があればはんだを盛ってGNDに繋げてください。
なお、書き込み保護を有効にするとEEPROMは保護されますがメモリの値は保護されず変更可能な状態が続くので、状態が完全に保護される訳ではない点に注意です。
Arduinoのライブラリを公開済み
MCP4661_asukiaaaというライブラリを公開しています。https://github.com/asukiaaa/arduino-MCP4661
Arduinoならライブラリマネージャでインストール、PlatformIOならpaltformio.iniのlib_depsに記述すれば使えます。
インストール後はこのように制御できます。
#include <MCP4661_asukiaaa.hpp>
MCP4661_asukiaaa::Core potentio(&Wire,
MCP4661_asukiaaa::DeviceAddress::A0H_A1H_A2H);
void setup() {
Wire.begin();
}
uint16_t val = 240;
void loop() {
potentio.writeWiperRAM(0, val);
potentio.writeWiperRAM(1, MCP4661_asukiaaa::MAX_WIPER_VAL - val);
++val;
if (val > MCP4661_asukiaaa::MAX_WIPER_VAL) {
val = 0;
}
}
サンプルコードはこちらです。
https://github.com/asukiaaa/arduino-MCP4661/tree/master/examples
257ステップなので最高値は256(0x100)
プログラムを書く際に最高値が255ならuint8_t型で扱えるのですが、256が最高値なので厳密に上限値を扱いたい場合はuint16_t型で256を渡してください。uint16_t val = 0x100; // 256
potentio.writeWiperRAM(0, val);
値が0のときW-B間抵抗0、256のときW-A間抵抗0
基板に印字している通り、0のときにW端子とB端子間の抵抗がほぼ0になり、256の時にA端子とW端子間の抵抗がほぼ0になります。P0系もP1系も同じです。
基板設計情報
基板の設計データはgithubで公開しています。CADソフトはKiCadを利用しました。
https://github.com/asukiaaa/MCP4661-breakout
回路図です。
回路図のpdfはこちらです。
https://raw.githubusercontent.com/asukiaaa/MCP4661-breakout/master/docs/schema-rev202404.pdf
おわり
データシートを見返さなくても印字された情報を見れば端子の役割が何となく分かるポテンショメータMCP4661の基板を作れました。良かったらご利用ください。
スイッチサイエンスで購入できます。
5k、10k、50k、100k
参考
MCP4661のデータシートです。https://ww1.microchip.com/downloads/en/DeviceDoc/22107B.pdf
今回の基板と一緒に作ったArduino向けのライブラリです。
https://github.com/asukiaaa/arduino-MCP4661
基板の設計データです。
https://github.com/asukiaaa/MCP4661-breakout
回路図です。
https://raw.githubusercontent.com/asukiaaa/MCP4661-breakout/master/docs/schema-rev202404.pdf
0 件のコメント :
コメントを投稿