
■ PCF8574 I2Cバス 8ビット 双方向 I/Oエキスパンダ ■ |
I2Cバスの2本の信号線を使用して、8つのI/Oポートを拡張するICです。
2.5V〜6Vで動作し、入力には100μAのプルアップも搭載されているので、マイコンのポートピンが足りないときや、外部にスイッチやLEDを増設する際に重宝します。
ポートを出力に設定すると、[H]出力では100μAのドライブ能力しかありませんが、[L](シンク)電流はポートあたり25mAあるので、LEDを直接駆動できます。
デバイスの設計がうまくできていて、ポートの入出力を切り替えるためのコマンドが必要ないため、入力も出力も簡単なI2C通信で行えます。 (詳細は日本語データ・シートを参照)
スレーブ・アドレスを8つから選択できるので、同じI2Cバスに8個のPCF8574を接続できます。
○ 動作電源電圧2.5V〜6V。
○ 低スタンバイ電流。(標準 2.5μA)
○ 80mAの総パッケージ引き込み(シンク)能力。
○ 100kHzのI2Cバス・インターフェース。
○ オープン・ドレインの割り込み出力(/INT)。
○ 3つのアドレスピンで、8つのスレーブ・アドレスを選択可能。
PCF8574の日本語データ・シートが見つからないので、私的に翻訳してあります。
個人で使用するために翻訳した物を掲載しておりますので、翻訳間違いや誤字による、
いかなる損害にも責任を負いません。 |
外部スイッチの増設テスト |
・以前に設計製作した展示用のゲーム装置に仕様追加の依頼があり、押しボタンスイッチの増設が
必要になったので、PCF8574を使用したスイッチボックスを製作しました。
・ゲーム装置本体の大幅な改造を無くすため、本体に付けてある2つのスイッチのポートをI2Cの
SCLとSDAに割り当てて、USBコネクターとUSBケーブルを流用して4つのスイッチを増設します。
・以下は、事前にテストするために、AVR & BASCOM-AVR トレーニング・ボードに接続して
制御した情報です。
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
・PCF8574との通信は、書き込みと読み出しの短いサブルーチンを呼び出すだけです。
・PCF8574の割り込み出力(/INT)を使用すると入力処理が簡単になりますが、今回はUSBケーブルを
流用したため、ポートを常時スキャンする仕様です。
・ポートの情報がバイナリー値でLCDに表示され、外部スイッチが押されるとスイッチの情報が
表示されます。
・今回の回路にはLEDを付けてありませんが、テスト・プログラムではスイッチが押された上位ビットの
LEDを点灯するようになっています。
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|

PCF8574搭載モジュールのテスト |
・Amazonや中国通販(AliExpress)で入手できる、PCF8574 I/O拡張モジュール(完成基板)の
テストです。
・I2Cバスのプルアップ抵抗器やスレーブアドレス選択用ジャンパーピンも搭載されているので、
電源とマイコンから2つのポートを接続するだけで、8個のI/Oポートが簡単に拡張できます。
・[INT]ピンも使用できます。 ([INT]ピンのプルアップはマイコン側で行う必要があります)
・このモジュールには電源やI2C信号の出力も付いているので、同じモジュールを連結して
ポートを増やすこともできます。
(スレーブアドレスのA0,A1,A2は、それぞれ選択を変えて下さい)
・このテスト回路では、4つのスイッチと4個のLEDを接続して動作のテストを行っています。
・テストは当ページに記載のAVR & BASCOM-AVR トレーニング・ボードを使用しています。
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
・上記の「外部スイッチの増設テスト」では、I2C通信のみでPCF8574を制御しています。
このモジュールでも同じプログラムが使用できます。
・さらに、下記のプログラムでは、[/INT]ピンを使用してスイッチの状態を検出しています。
・PCF8574との通信は、書き込みと読み出しの短いサブルーチンを呼び出すだけです。
・スレーブアドレスを変更したり、モジュールを増やしてアドレスを割り振る場合は、サブルーチンを
呼び出す前に下記の行でスレーブアドレスを指定してから呼び出して下さい。
Const Pcf8574adr = &H40 'PCF8574のスレーブ・アドレスを選択。
(&H40, &H42, &H44, &H46, &H48, &H4A, &H4C, &H4E)
・スイッチが押されると、ポートの情報をバイナリー値でLCDに表示し、押されたスイッチの
情報がLCDに表示されて対応するLEDが点灯します。
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|

PCF8574 I2C LCD アダプターのテスト |
・Amazonや中国通販(AliExpress)で入手できる、PCF8574 I2C LCD アダプター(完成基板)の
テストです。
・秋月電子のACM1602K-NLW-BBW等の、16ピンで横1列のLCDモジュールの裏面に、直接
ハンダ付けで実装できます。
・20文字4行のACM2004D-NLW-BBW等も接続できます。
(ワイヤー配線を行えば、14ピンで2列のLCDモジュールにも接続できます)
・I2Cバスのプルアップ抵抗器やスレーブアドレス選択用のハンダ・ジャンパーも搭載されているので、
電源とマイコンから2つのポートを接続するだけで、LCDの表示が可能です。
・アダプターのI2CアドレスA0,A1,A2を変えることで、同じI2Cバス上に8台までLCDを接続することも
可能です。
(スレーブアドレスのA0,A1,A2は、それぞれのアダプターで選択を変えて下さい)
(並列接続した際に、ボード上のI2Cバスのプルアップ抵抗値が、2KΩ程度より低くならないように
注意して下さい)
・LCDによってバックライトLEDの電流制限抵抗器が必要な場合は、LEDのジャンパーピンを外して
抵抗器を取り付けます。
・テストはArduinoボードを使用していますが、各種AVRマイコン回路に接続できます。
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
・接続するLCDが1台の場合は、 「PCF8574 I2C LCD アダプターの設定」ルーチンをそのまま
使用可能です。
・2台以上のLCDを使用する場合や、スレーブアドレスが他のI2Cデバイスと重複する場合は、
「Pcf8574_lcd = &H4E」行でアドレスを指定して下さい。
(&H40, &H42, &H44, &H46, &H48, &H4A, &H4C,
&H4E)
・同時に、それぞれのスレーブアドレスで「Initlcd」の初期化を実行して下さい。
・各LCDの表示命令の前に「Pcf8574_lcd = &H4E」行でアドレスを指定して、表示するLCDを
選択して下さい。
・I2Cバスは、ポートピンを自由に選択できるソフトウェアI2Cと、AVRの専用ピンを使用する
ハードウェアTWIが選択できます。
・「Const I2c_select = 1」行で、0:ソフトウェアI2C と 1:TWI で指定します。
・ソフトウェアI2Cの場合は、使用するSCLとSDAピンを指定して下さい。
・ハードウェアTWIの場合は、各AVRの専用ピン名を記述して下さい。
・LCDは、16文字2行でも20文字4行でも同じ設定で可能です。
・バックライトを制御する場合は、変数「Backlight = 1」で(0:消灯, 1:点灯)を指定した後に、
「Locate 1 , 1」などのダミーの命令を実行して下さい。
・ATtinyチップに搭載されているUSIを使用する場合は、別途USI用のプログラムを参照して下さい。
・XMEGA・XTINYチップを使用する場合は、別途XMEGA・XTINY用のプログラムを参照して下さい。
・[LCD_I2C_PCF8574.lib] ライブラリを、
C:\Program Files\MCS Electronics\BASCOM-AVR\LIB\ に保存してからコンパイルして下さい。
複数LCDのテスト。
USIのテスト。
XMEGA用のテスト。(BASCOM-AVR(製品版)が必要です)
XTINY 用のテスト。(BASCOM-AVR(製品版)とXTINY Add Onが必要です)
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|
|