抵抗器のカラーコードを読んで抵抗器を見つけるのは難しいと思います。抵抗値を見つけることの難しさを克服するために、Arduinoを使用して簡単なオームメーターを構築します。このプロジェクトの背後にある基本原理は、分圧器ネットワークです。未知の抵抗値は16 * 2LCDディスプレイに表示されます。このプロジェクトは、Arduinoとインターフェイスする16 * 2LCDディスプレイとしても機能します。
必要なコンポーネント:
- Arduino Uno
- 16 * 2LCDディスプレイ
- ポテンショメータ(1キロオーム)
- 抵抗器
- ブレッドボード
- ジャンパー線
回路図:
Arduino Uno:
Arduino Unoは、ATmega328pマイクロコントローラーをベースにしたオープンソースのマイクロコントローラーボードです。14個のデジタルピン(うち6個のピンはPWM出力として使用可能)、6個のアナログ入力、オンボード電圧レギュレーターなどがあります。ArduinoUnoには、32KBのフラッシュメモリ、2KBのSRAM、および1KBのEEPROMがあります。16MHzのクロック周波数で動作します。Arduino Unoは、他のデバイスと通信するためのシリアル、I2C、SPI通信をサポートしています。以下の表は、ArduinoUnoの技術仕様を示しています。
マイクロコントローラー | ATmega328p |
動作電圧 | 5V |
入力電圧 | 7〜12V(推奨) |
デジタルI / Oピン | 14 |
アナログピン | 6 |
フラッシュメモリー | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
クロック速度 |
16MHz |
16x2 LCD:
16 * 2 LCDは、組み込みアプリケーションで広く使用されているディスプレイです。16 * 2LCDディスプレイのピンと動作について簡単に説明します。LCD内には2つの非常に重要なレジスタがあります。データレジスタとコマンドレジスタです。コマンドレジスタは、クリア表示、自宅カーソルなどのコマンドを送信するために使用され、データレジスタは、16 * 2LCDに表示されるデータを送信するために使用されます。以下の表は、16 * 2lcdのピンの説明を示しています。
ピン |
シンボル |
I / O |
説明 |
1 |
対 |
- |
接地 |
2 |
Vdd |
- |
+ 5V電源 |
3 |
ヴィー |
- |
コントラストを制御する電源 |
4 |
RS |
私 |
コマンドレジスタのRS = 0、 データレジスタのRS = 1 |
5 |
RW |
私 |
書き込みの場合はR / W = 0、読み取りの場合はR / W = 1 |
6 |
E |
I / O |
有効にする |
7 |
D0 |
I / O |
8ビットデータバス(LSB) |
8 |
D1 |
I / O |
8ビットデータバス |
9 |
D2 |
I / O |
8ビットデータバス |
10 |
D3 |
I / O |
8ビットデータバス |
11 |
D4 |
I / O |
8ビットデータバス |
12 |
D5 |
I / O |
8ビットデータバス |
13 |
D6 |
I / O |
8ビットデータバス |
14 |
D7 |
I / O |
8ビットデータバス(MSB) |
15 |
A |
- |
バックライト用+ 5V |
16 |
K |
- |
接地 |
抵抗カラーコードの概念:
抵抗の値を特定するには、次の式を使用できます。
R = {(AB * 10 c)Ω±T%}
どこ
A =最初のバンドの色の値。
B = 2番目のバンドの色の値。
C = 3番目のバンドの色の値。
T = 4番目のバンドの色の値。
以下の表に、抵抗器のカラーコードを示します。
色 |
色の数値 |
倍率(10 c) |
公差値(T) |
ブラック |
0 |
10 0 |
- |
褐色 |
1 |
10 1 |
±1% |
赤 |
2 |
10 2 |
±2% |
オレンジ |
3 |
10 3 |
- |
黄 |
4 |
10 4 |
- |
緑 |
5 |
10 5 |
- |
青い |
6 |
10 6 |
- |
バイオレット |
7 |
10 7 |
- |
グレー |
8 |
10 8 |
- |
白い |
9 |
10 9 |
- |
ゴールド |
- |
10 -1 |
±5% |
銀 |
- |
10 -2 |
±10% |
バンドなし |
- |
- |
±20% |
たとえば、カラーコードがブラウン–グリーン–レッド–シルバーの場合、抵抗の値は次のように計算されます。
ブラウン= 1グリーン= 5レッド= 2シルバー=±10%
最初の3つのバンドから、R = AB * 10 c
R = 15 * 10 +2 R =1500Ω
4番目のバンドは±10%の許容誤差を示します
1500の10%= 150 + 10パーセントの場合、値は1500 + 150 =1650Ωです。-10パーセントの場合、値は1500 -150 =1350Ωです。
したがって、実際の抵抗値は1350Ωから1650Ωの間のどこかになります。
これをより便利にするために、抵抗のリングの色を入力するだけで抵抗値を取得できる抵抗カラーコード計算機があります。
Arduinoオームメーターを使用した抵抗の計算:
この抵抗計の動作は非常に単純であり、以下に示す単純な分圧器ネットワークを使用して説明できます。
抵抗R1とR2の分圧器ネットワークから、
Vout = Vin * R2 /(R1 + R2)
上記の式から、R2の値を次のように推定できます。
R2 = Vout * R1 /(Vin – Vout)
ここで、R1 =既知の抵抗
R2 =未知の抵抗
Vin = Arduinoの5Vピンで生成された電圧
Vout =グランドに対するR2の電圧。
注:選択した既知の抵抗(R1)の値は3.3KΩですが、ユーザーはこれを選択した抵抗の抵抗値に置き換える必要があります。
したがって、未知の抵抗(Vout)の両端の電圧の値を取得すると、未知の抵抗R2を簡単に計算できます。ここでは、アナログピンA0(回路図を参照)を使用して電圧値Voutを読み取り、以下のコードで説明するように、それらのデジタル値(0 -1023)を電圧に変換しました。
既知の抵抗の値が未知の抵抗よりもはるかに大きいか小さい場合、エラーはさらに大きくなります。したがって、既知の抵抗値を未知の抵抗に近づけることをお勧めします。
コードの説明:
このプロジェクトの完全なArduinoプログラムとデモビデオは、このプロジェクトの最後に提供されています。コードは意味のある小さなチャンクに分割され、以下で説明されています。
コードのこの部分では、16 * 2LCDディスプレイがArduinoに接続されるピンを定義します。16 * 2lcdの RS ピンはarduinoのデジタルピン2に接続されています。16 * 2lcdの イネーブル ピンはArduinoのデジタルピン3に接続されています。16 * 2 lcdのデータピン(D4-D7)は、Arduinoのデジタルピン4、5、6、7に接続されています。
LiquidCrystal lcd(2,3,4,5,6,7); // rs、e、d4、d5、d6、d7
コードのこの部分では、プログラムで使用されるいくつかの変数を定義しています。Vinは、arduinoの5Vピンによって提供される電圧です。Voutは、グランドに対する抵抗R2の電圧です。
R1は既知の抵抗の値です。R2は未知の抵抗の値です。
int Vin = 5; // arduinoフロートの5Vピンの電圧Vout = 0; // arduinoフロートのA0ピンの電圧R1 = 3300; //既知の抵抗フロートの値R2 = 0; //未知の抵抗の値
コードのこの部分では、16 * 2lcdディスプレイを初期化します。コマンドは、クリア画面、カーソル点滅時の表示など、さまざまな設定の16 * 2lcdディスプレイに与えられます。
lcd.begin(16,2);
コードのこの部分では、抵抗R2(A0ピン)のアナログ電圧がデジタル値(0〜1023)に変換され、変数に格納されます。
a2d_data = analogRead(A0);
コードのこの部分では、デジタル値(0〜1023)が電圧に変換されてさらに計算されます。
buffer = a2d_data * Vin; Vout =(バッファ)/1024.0;
Arduinoの宇野ADCは 10ビット分解能である( - 2 ^ 10 = 1024の値が0から整数値ので)。これは、0〜5ボルトの入力電圧を 0〜1023の 整数値にマップすることを意味します。したがって、入力 anlogValue を(5/1024)に乗算すると 、入力電圧のデジタル値が得られます。ArduinoでADC入力を使用する方法をここで学びます。
コードのこの部分では、未知の抵抗の実際の値は、上記で説明した手順を使用して計算されます。
buffer = Vout /(Vin-Vout); R2 = R1 *バッファ;
コードのこの部分では、未知の抵抗の値が16 * 2lcdディスプレイに出力されます。
lcd.setCursor(4,0); lcd.print( "オームメーター"); lcd.setCursor(0,1); lcd.print( "R(オーム)="); lcd.print(R2);
これは、Arduinoを使用して未知の抵抗器の抵抗を簡単に計算できることです。また、チェックしてください:
- Arduino周波数計
- Arduino静電容量計