利用可能な入力と出力の数を拡張したいという状況に陥ったことがあるかもしれません。 arduinoボード、予想よりも多くのデバイスが必要なプロジェクトを実行しているためです。このような場合にできることは 1 つだけです。それは、より多くの接続を備えた上位モデルのボードを購入することを検討することです。でも今は PCF8574はArduinoのI/Oを拡張できます 簡単かつ安価な方法で。
ここでは、PCF8574 を知らない方のために、PCFXNUMX が何であるかを説明します。また、Arduino ボードに接続する方法を段階的に説明し、どのように機能するかを示します。
PCF8574とは何ですか?
El PCF8574 I2C1 バス用のデジタル入出力 (I/O) エクスパンダです。 Philips 製のこのデバイスを使用すると、Arduino などのプロセッサを接続して、より少ないピンを使用してより多くのデバイスを制御できます2。 PCF8574 には、オープン ドレイン構成の CMOS 出力に基づく 8 つの準方向ピンが組み込まれています。
さらに、PCF8574 は低電力デバイスです。 2.5V~6VのVCC動作をサポート。 8 ビットの準双方向 I/O ポート、ラッチ出力、オープン ドレイン割り込み出力、LED 用の高電流駆動機能を備えています。一方、スタンバイ消費電力は非常に低く、10 µA 未満です。
それは非常に便利です Arduino ボードの機能を限界を超えて拡張しますこれは、Arduino が提供するもの以上のものを必要とするクリエイターにとって大きな助けとなります。各ピンが供給できる最大電流は構成によって異なります。
- 出力として動作する場合、シンクとして動作する場合、つまり PCF25 に電流が流れる場合は 8574mA です。これはデフォルトの構成です。
- ソースとして機能する場合、つまり PCF300 から電流が流れる場合は 8574µA です。同様に、すべての出力にはラッチがあること、つまりレジスタ内で状態を独自に維持することを知っておく必要があります。出力の XNUMX つの状態を変更したい場合にのみ操作する必要があります。
コミュニケーションが完了しました I2Cバス経由, そのため、接続されているデバイスからデータを簡単に取得できます。同様に、アドレス ピンが 3 つあり、同じ I8C バスに 2 つの接続が可能であることに注意してください。これは、わずか 64 ピンを使用して 2 台のデバイスを制御できることを意味します。
アドレス設定
この PCF8574 モジュールの一部のモデルには、通常、上の画像にあるような構成ピンとジャンパが含まれています。一方、他のモデルには、XNUMXつのマイクロスイッチで操作を容易にするスイッチが含まれています...とはいえ、それらは使い慣れています。 アドレスを構成する I/O ピンの数:
A0 | A1 | A2 | 住所(リンク先) |
0 | 0 | 0 | 0x20 |
0 | 0 | 1 | 0x21 |
0 | 1 | 0 | 0x22 |
0 | 1 | 1 | 0x23 |
1 | 0 | 0 | 0x24 |
1 | 0 | 1 | 0x25 |
1 | 1 | 0 | 0x26 |
1 | 1 | 1 | 0x27 |
価格と購入場所
わずか数ユーロで見つけることができます。装置です かなり安い I/O の数が少ない一部の Arduino モデルにとって、それがどれほど実用的であるかについては、こちらをご覧ください。したがって、PCF8574 をお探しの場合は、専門店や Amazon、Aliexpress、eBay などの大きなオンライン プラットフォームでも見つけることができます。たとえば、次のようなものをお勧めします。
PCF8574をArduinnoに接続する
へ PCF8574 エクスパンダを Arduino ボードに接続します。 接続図は非常にシンプルです。接続するだけで済みます:
- PCF8574ボードにマークされているSCLピンをArduinoのSCLピンに接続します。このピンはモデルによって異なる場合がありますが、通常、UNO などのより人気のあるモデルでは A5 にあります。
- エクスパンダのSDAピンはArduinoのSDAピンに接続する必要があります。先ほども言いましたが、機種によって変わりますが、一般的にはA4です。疑問がある場合は、モデルのピン配置を確認してください。
- もちろん、PCF8574 の GND ピンは、Arduino 上で GND とマークされたピン、つまりグランド接続に接続されます。
- エキスパンダーの Vcc ピンは Arduino の 5V に接続されています。このように、GND と Vcc によりエキスパンダー ボードに電力が供給されており、動作を開始できるようになります。
操作
PCF8574 を Arduino ボードに接続したら、次は次のことを確認します。 どのように機能しますか。これを行うには、電源ピンに加えて 8 つの Arduino ピンを使用する代わりに、8 つの追加のピンを使用できることに留意する必要があります。一方、考慮する必要がある点は、PCF8574 の 100 つのピンのそれぞれに、MOSFET トランジスタと非常に低い抵抗のプルアップ抵抗があることです。これは、トランジスタがアクティブなときの電流強度が XNUMX マイクロアンペアであると仮定しています。
これにより、次のようなパノラマが得られます。
- 出力としての構成- ピンが出力として使用される場合、上で説明したように電流シンクとして機能します。つまり、電流が流入します。
- LOW: 低電圧では電流が流れません (負荷 = Vdd)。
- HIGH: 高電圧の場合、最大 25mA の電流が流れることができ、負荷は GND に接続されます。
- 入力としての構成: 常に HIGH に設定する必要があり、この場合はソースとして機能します。つまり、電流が流れ出します。
- 閉まっている: 外部負荷が与えられていない場合、ピンの電圧は GND になります。
- 開く: 外部負荷が発生すると、端子電圧は Vdd になります。
Arduino IDE コード
Arduino でこの PCF8574 を使用するコードを作成する方法の例が必要な場合は、必要に応じて変更できる次のコード例を使用するのと同じくらい簡単です。
- 出力としての構成:
#include <Wire.h> const int pcfAddress = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { for (short channel = 0; channel < 8; channel++) { // Escribir dato en canal 'channel' Wire.beginTransmission(pcfAddress); Wire.write(~(1 << channel)); Wire.endTransmission(); // Leer dato de canal delay(500); } }
- 入力としての構成:
#include <Wire.h> const int pcfAddress = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { short channel = 1; byte value = 0; // Leer dato de canal 'channel' Wire.requestFrom(pcfAddress, 1 << channel); if (Wire.available()) { value = Wire.read(); } Wire.endTransmission(); // Mostrar el valor por puerto serie Serial.println(value); }
も使用できることを覚えておいてください。 PCF8574用に特別に作成されたライブラリ 実際の例も含まれています…