Arduinoの内部プルアップ抵抗の値を調べる

Arduinoではマイコンの内蔵プルアップ抵抗を利用できます。
ネットを検索してみると、30kΩ程度とのこと。

タッチセンサをArduinoで遊ぶ前の予備実験として、この内蔵プルアップ抵抗の値を調べてみました。

ボードはJapanino(学研)
回路としては、プルダウン抵抗として、A1端子とA5端子に 10kΩの抵抗を接続、GNDに落とします。

そのうえで以下のコードを実行、Arduino IDEでシリアルモニタを起動すると、プルアップ抵抗の値が送信されてきます。


const int ain1 = 1;
const int ain2 = 5;
const int r1 = ain1+14;
const int r2 = ain2+14;
long Rp1,Rp2; //internal pullup 25k ohm
long Rex=10000; // external 10k ohm

void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // 9600bpsでポートを開く
pinMode(r1, INPUT);
pinMode(r2, INPUT);
digitalWrite(r1,HIGH); //プルアップ抵抗 オン
digitalWrite(r2,HIGH);
Serial.println("start");
}
void loop() {
int v1,v2;
v1=analogRead(ain1);
v2=analogRead(ain2);
Serial.print("v1 ");
Serial.print(v1);
Serial.print(" ");
Serial.print("v2 ");
Serial.println(v2);

Rp1=Rex*(1024-v1)/v1;
Rp2=Rex*(1024-v2)/v2;


Serial.print("Rp1 ");
Serial.print(Rp1);
Serial.print(" ");
Serial.print("Rp2 ");
Serial.println(Rp2);

delay(1000);
}

実行例

start
v1 239 v2 240
Rp1 32845 Rp2 32666
v1 239 v2 240
Rp1 32845 Rp2 32666
v1 238 v2 239
Rp1 33025 Rp2 32845


... (略

v1 vb2 はADコンバータで測定した素の値。
Rp1 Rp2が それから計算した内蔵プルアップ抵抗の値です。
値が若干ふらついてますが、 ほぼ 33kΩ前後の値が表示されています。