デジタルポテンショメータMCP4018を使ってみました.
今回はArduinoで値を変化させてみます.
環境
- Arduino UNO R3
- MCP4018
- Arduino IDE 1.8.5 for macOS
製作
MCP4018のDIP化
小型のパッケージは自作基板に実装するときとても便利ですが,実験でブレッドボードに取り付けたいとき不便です.
今回は,AliExpressで購入したピッチ変換ボードを利用しました.
MCP4018は0.65mmピッチです.
購入したものは販売中止になっていましたが,ほぼ同じものがありました. ja.aliexpress.com
Amazonにも(Aliより高い)
uxcell PCBアダプター コンバータプレート 両面 10個入り 1mm ピッチ 24ピン IC DIP
- 出版社/メーカー: uxcell
- メディア: ホーム&キッチン
- この商品を含むブログを見る
取り付けた様子が以下の図です(2つ付けました).
そして拡大
(↓こちらで拡大しました)
Kenko 顕微鏡 Do・Nature 20~40倍 LEDライト内蔵 コンパクト携帯型 STV-40M
- 出版社/メーカー: ケンコー
- 発売日: 2009/09/29
- メディア: Camera
- 購入: 1人 クリック: 57回
- この商品を含むブログ (1件) を見る
ABTUの刻印が見えますが,この向きで左下が1番ピンです.
Arduinoとの結線
データシートを元につなぎます. まずこのようにつなぎます.
Arduino | MCP4018 |
---|---|
3.3V | 1 (VDD) |
GND | 2 (VSS) |
SCL ※ | 3 (SCL) |
SDA ※ | 4 (SDA) |
※ Arduino UNO R3ではAREF端子の隣がSDA,そのさらに隣の端がSCKピンが利用できる.R3含む全てのArduino UNOではA4がSDA,A5がSCLを兼ねている.
さらに,今回は動作チェックのため,追加で以下のようにつなぎます.
Arduino | MCP4018 |
---|---|
A0 | 5 (W) |
5V | 6 (A) |
MCP4018は10kohmの抵抗器の片側がVcc,もう片側がAピンに接続されており,その抵抗の任意の中間点にWピンが接続されています.
A側を5Vに接続することで,MCP4018の抵抗は点Wから見たとき,5V電源を2つの抵抗で分圧しているようになります.
つまりWの位置がVss付近のときWは0[V],Wの位置がA付近のときWは5[V]になり,その間はWの位置に比例して増加します.
最終的にこのようになりました.
スケッチ
// MCP4018用実験プログラム // MCP4018の抵抗を一定時間ごとに一定量変化させる. #include <Wire.h> void setup() { Serial.begin(9600); Wire.begin(); } int cnt = 0 , a; void loop() { // MCP4018 のアドレスは0101111 → 16進数で2Fにセットされている // 0〜127の値を送る Wire.beginTransmission(0x2F); Wire.write(cnt); Wire.endTransmission(); // 送信した値と,それをW→Vss間の抵抗で表した抵抗値をシリアル出力させる. Serial.print("set = "); Serial.print(cnt); Serial.print(" ( "); Serial.print(cnt / 127.0 * 10.0); Serial.print(" kohm)"); a = analogRead(0); // W-Vssの電位差をシリアル出力させる. Serial.print("\t\tanalogRead = " ); Serial.print(a); Serial.print(" ( "); Serial.print(a / 1024.0 * 5.0 ); Serial.println(" [V] )"); // カウントアップ cnt += 5 ; // カウントが127を超えていたら,意味がないので,0に戻す. if( cnt > 127 ) cnt = 0; delay(200); }
実験結果
プログラムを実行すると以下のように出力されます.
セットした値に応じて,抵抗値が変化していることがわかります.