ここんとこ、パーツ収集に励んでま~す^^;
ある時、AliExpressを散歩してると、
デジタルポテンショメータなるものを見つけました。
これは買ってません^^;
AliExpress.com Product - 5pcs X9C103P DIP8 X9C103 DIP-8 9C103P DIP
X9C103PIZ
この可変抵抗器をシリアル制御にしたようなものですが、
上のRENESAS X9C103は、100段階で、ちと少ないですね~
100段階でもいいのなら、1個20円程度と安価です。
で、8bitの分解能のがないかな~と探すと、ありました!
MCP41010:Single 10KΩ、SPI I/Fです。
ICに刻印がないですが、ここが安かったもので^^;
US$ 0.82(6% OFF、送料 $0.27)(3個では、送料 $0.37でした)
AliExpress.com Product - YUXINYUAN 1pcs MCP41010-I/P MCP41010 DIP DIP-8 new
original Can be purchased directly
実物は、これ
まともなやつが届いております。
Datasheetは、このPDF。
Single/Dual で10K、50K、100KΩの6種類あります。
Dualは、ステレオ等の音量調節用途とかが主流だと思います。
では、届いたのでチェックします。
ちょっとGoogle先生に尋ねて~
GitHubのここにMCP41010ライブラリがありますが、
ちょっとチェックだけなのでExampleの中を理解するのが面倒ですね~
なので、こっちにしました。
ライブラリも使ってなく、LEDを光らせて、実態配線図もあるので
素早くチェックするには丁度いいかなと^^;
無事にLEDの輝度が変化してチェックが終わりました。
が、終わった後、Datasheet眺めてると
ワイパー電流定格が±1mAだ~(・o・)
ワイパーとはLEDを繋いでる摺動子に相当する端子で
LED ~ 220Ω ~ GND と接続されてるので
最大20mA位流れてしまって、完全に定格オーバーです(T_T)
作者さんには悪いけど、この回路は動かしてはいけないですね~
幸い壊れませんでしたが...
特にワイパーがVCCやGND側に近い時は、
入出力電流に気をつける必要がありますね~
2.7~5.5Vの範囲で使う必要があります。
5.5Vで10KΩだと、3mW程度、極小の可変抵抗器というところです。
SPIは、CS、SI、CLKの3本です。
Singleタイプ(MCP41xxx)は、8pin DIPで端子が足りんのですね~
DualのにはSOがあってデイジーチェーン接続できます。
DatsheetのBlock DiagramをSingle用に編集しました。
Wiper Register部とControl部は、絶縁されてません。
Singleタイプのピンアサインです。
Datasheetに2種類の使い方MODEが載ってます。
<RHEOSTAT MODE>
可変抵抗器として
特に抵抗値が低い場合、電流定格±1mAに注意が必要です。
電圧分圧器として(所謂、ポテンショメーターです)
これは、V1:2.7~5.5Vを守れば、電流定格は超えないですね。
では、先の参考サイトのスケッチをちょっと変えて
抵抗値の変化を観ます。
このスケッチでは、void loop内の
・v=0 の時、A~W間抵抗値が最大(B~W間は最小)
・v=255 の時、 A~W間抵抗が最小(B~W間は最大)
になりました。
*********
int csPin = 2; // Chip Select on pin 2 of Arduino
int sckPin = 4; // Serial Clock on pin 4 of Arduino
int sdiPin = 5; // Serial Data Input on pin 5 of Arduino
byte address = B00010001; // Command byte // 17
//byte address = 0x11; // 17
void potify(byte val)
{
digitalWrite (csPin, LOW);
spi_transfer(address);
spi_transfer(val);
digitalWrite(csPin, HIGH);
}
void spi_transfer(byte bb)
{
byte mask;
for (int i = 7; i >= 0; i--)
{
mask = 0x01 << i;
int v = !!(bb&mask);
digitalWrite(sdiPin, v);
digitalWrite (sckPin,HIGH);
digitalWrite(sckPin, LOW);
}
}
void setup()
{
pinMode(csPin, OUTPUT);
pinMode(sckPin, OUTPUT);
pinMode(sdiPin, OUTPUT);
Serial.begin(9600);
Serial.println("Ready!");
}
void loop()
{
for (int i = 0; i <= 255; i++)
{
int v = i;
Serial.print("v: ");Serial.print(v);Serial.println();
potify(v);
if (i==255)
delay(2000); //抵抗値最小の時、テスターの針を落ち着かせたいので
else
delay(30);
}
}
*********
実体配線図です。
Arduino NANOを使います^^;
抵抗値はアナログテスター(SANWA ZX-505)で!
[NANO]・・・[MCP41010]
D2 ・・・ 1pin:nCS
D4 ・・・ 2pin:SCK
D5 ・・・ 3pin:SI
5V ・・・ 4pin GND ・・・ 8pin
5pin:PA0 ~ 6pin:PW0 間を観測します。
7pin:PB0・・・OPENです。
実際はこんな感じで・・・
ちなみに、テスターに付けてるテストクリップは、これです。
クリップにしては高いですが、細かい所にも届いて重宝します。
US$ 3.49(30% OFF、送料 $0.29)
AliExpress.com Product - Cleqee P1511B 2mm Female Plug to Internal Spring Test Hook Probe AWG Test Lead Kit Can connect the Digital Multimeter Probeでは、動画で!
テスター:x100レンジなので、抵抗目盛の100が、10KΩです。
これ以上速くするとテスターが追従できません(T_T)
昔~し使ってたCdsとLEDのアナログフォトカプラ思い出しました^^;
秋月電子のこんなのです。
Codeと抵抗値の特性グラフがDatasheetに載ってます。
なかなかリニアに変化してくれるんですね。
マーティーが観たのは、RWAの方です。
先のスケッチで書込値「v」(上のグラフのCode)を固定してみます。
PA0~PW0間を測定してます。PB0:OPENです。
v=255
*********
~~~前略~~~
void loop()
{
for (int i = 0; i <= 255; i++)
{
// int v = i;
int v = 255;
~~~後ろ略~~~
*********
x100レンジで、100Ω
x1レンジで、95Ωってとこかな。
v=127
*********
~~~前略~~~
void loop()
{
for (int i = 0; i <= 255; i++)
{
// int v = i;
int v = 127;
~~~後ろ略~~~
*********
x100レンジで、4.8KΩ、10KΩのほぼ1/2です。
v=0
*********
~~~前略~~~
void loop()
{
for (int i = 0; i <= 255; i++)
{
// int v = i;
int v = 0;
~~~後ろ略~~~
*********
x100レンジで、9.5KΩ
MCP41010とArduino NANOは、
PCのUSBで給電していますが、電源OFFすると
ちょっと期待してたんですが、
抵抗値(Registerポジション)は記憶してないですね~(T_T)
4.8KΩと読めるので、10KΩのほぼ中央値で
上の「v=127」の時と同じ値です。
アナログテスターで測るとレンジによって値が変わるんです(-_-;)
x10レンジ、1.2KΩ
x1Kレンジ、32KΩ
たぶん、Register部のMOS-FETがテスターの電圧で
微妙な動作をしてるのだと思います。
回路によっては、電源ON/OFFの過渡時も要注意かな?
Datasheetによると
動作状態でもVDDによりこんなに抵抗値が変化するようです。
これは、Code=00hなので、ほぼワイパー(摺動子部)だけの特性です。
もうちょっとDatasheetを眺めてると
抵抗器として使う時、温度係数が800ppm/℃
ん!? 1ppm=0.0001%なので~ 800ppm=0.08%
まあマーティー工房の工作では、大丈夫そうですね~^^;
ちなみに、ここに、
「炭素皮膜抵抗は一般的に-200ppm/℃~-800ppm/℃程度」
「金属皮膜抵抗は高精度品で±5ppm/℃、汎用品でも±100ppm/℃未満」だと。
可変抵抗器の温度係数は、なかなか見つかりませんね~
金属被膜の多回転トリマで±100~150ppm/℃辺りのようです。
5~50℃でみると、10KΩに対して500Ω程の変化かな。
これは、抵抗器モードで、
マーティーが観たRWAと逆のRWBですが、
抵抗値が小さくなると、温度係数が急に悪化してます。1000ppm/℃=0.1%/℃、10℃差で1%、50℃差で5%
低抵抗でワイパー抵抗(摺動子の接触抵抗に相当)の影響が大きいです。
用途にもよりますが、気に留めておいた方がいいかな?
まあ、大抵は、下のポテンショメーター・モードで使うので...
実は、具体的な使用先は決まってません(-_-;)
デジタルポテンショメータを見つけた時に、
最初に思いついたのがこれなので、10KΩにしてました。
この電源は、0~48V 10Aの可変で、
電圧調整を10KΩの可変抵抗器でやってるのです。
デジタルポテンショメータ(MCP41010)に置き換えて
PWM制御じゃなくて、SPI制御でDCのまま可変できるかな~?と^^;
US$ 32.29(50% OFF)
MCP41010の使用条件があるので、両端電圧を確認してみます。
外付け用のVRが付属しているので、付け替えてオシロのプローブ当てましたが、赤が低圧側とは!(´-﹏-`;)
VRの両端電圧は、
左:出力0V時、≒4.8V右:出力50.9V時、≒4.8V
きれいなDCで5Vに近いし、ポテンショメーター・モードになるので、
MCP41010の使用場所としてはドンピシャです!
約50Vで256stepなので、1step:0.2Vってことになります。
まあモーター制御だと電圧固定でPWM制御するのとどっちがいいか?
ということで、すぐにやる予定はないのですが...^^;
Datasheetの応用例の
こうゆうアンプも面白そうですね~
何に使えるかな~^^;
最近はこういう具合でパーツコレクションしてますが、
チェックの方が追いついてません(T_T)
使ったことないパーツを試すのは楽しいですね~^^;
お店の忘備録です。後で別のが必要になるかもなので...(-_-;)
価格は執筆時点の2020年9月調べです。
1個入り、Single 50KΩ:MCP41050は、ここが安そう。
US$ 2.49/2個(送料 $0.53)
AliExpress.com Product - 2pcs MCP41050-I/P DIP-8 MCP41050 DIP8 41050 DIPSingle 100KΩ:MCP41100 DIPタイプは、2軒だけのようで、
送料入れると1個で$3以上で高いです。
SOPの方が1/5の価格です。
US$ 2.77/5個(10% OFF、送料無料)
AliExpress.com Product - (5piece)100% New MCP41100 MCP41100-I 41100I sop-8 ChipsetDIP 2個とSOP 5個が同じ位の価格なので
この様な変換基板を使うのも手ですね~
US$ 0.18/10枚(10% OFF、送料 $0.52)
10枚つながってるので、手で折って切り離します。
ピンヘッダーが別途必要ですが...
AliExpress.com Product - 10pcs SOP8 turn DIP8 adapter plate SMD adapter plate2個入りのDualタイプは、SO端子があるのでデイジーチェーン接続ができます。
Dual 10K:MCP42010のDIP
と
Dual 100KΩ:MCP42100のDIP
は、多くの店があったのでリンクしなくても大丈夫でしょう。
Dual 50K:MCP42050のDIPは、数店しかなく、ここが最安かな?
0 件のコメント:
コメントを投稿