2014年5月
前作「キャラクタLCDモジュール I2C化アダプタ」をプリント基板で製作しました。
基板は一般的なキャラクタLCDモジュールと同じ大きさなので、組み立て後は机上に安定して置くことができます。
2枚の基板は4本のスペーサーで固定され、強度の不安はありません。
本アダプタを使うと、任意のキャラクタLCDモジュール(HD44780互換コントローラ)をI2Cで操作できるようになります。
一般的なLCDモジュールは5V動作ですが、本アダプタにより3~5Vの回路で、そのLCDモジュールを使うことができます。
LCDモジュールをI2Cで操作するプロトコルは公開されているので
(「キャラクタLCDモジュール I2C化アダプタ」の記事)、
任意のマイコンで本アダプタを利用することができます。
※秋月電子で販売中の「I2C接続キャラクタLCDモジュール 16x2行 白色バックライト付」(P-05693) のプロトコルと互換性があります。
回路との接続は VCC/GND/SCL/SDA の4線です。電源逆挿しによる本アダプタ破損防止のため、Pch-MOSFET(Q)を入れています。
VCCは3~5Vに対応。LCDモジュールを制御するATtiny20はVCCの電圧で動作します。
また、HT7750を用いた昇圧回路により、LCDモジュール駆動用の5Vを得ています。
ハンダパッド(JMP)をオープン/ショートすることで、本アダプタはI2Cのスレーブアドレスを 0111100 / 0111101 に設定することができます。
これにより、回路上に本アダプタを2個まで接続することができます。または、回路上にスレーブアドレスが0111100のデバイスがあった場合、
本アダプタのスレーブアドレスを0111101に設定して衝突を回避する、といった使い方ができます。
使用するキャラクタLCDモジュールは、コントローラがHD44780互換である一般的なLCDモジュールとします。
本アダプタには、LCDモジュールのコントラスト(文字の濃さ)調整用のボリューム(VR)と、バックライトの明るさ調整用の抵抗(R)が取り付けられています。
これらは任意の値に変更して構いません。
本アダプタとLCDモジュールは16ピンのピンヘッダ/ピンソケットで接続します。四隅はM2ネジで固定できます。
スペーサーの長さは11mmです(ピンソケットの樹脂部8.5mm + ピンヘッダの樹脂部2.5mm)。
動作中の写真は、電源3.3V、文字数16x2のLCDモジュールのうち10x2の範囲で自動改行/上書き表示するデモの様子です。
LCDモジュール四隅のネジ穴は大抵M2.5なので本モジュールもM2.5の穴を開けてあります。
しかしこのサイズのネジは入手しづらいので、比較的入手しやすいM2のネジ/スペーサーで組み立てます。
右半分のユニバーサル領域は自由に使えます。例えばコントラスト調整のVRを別の形のものに取り替えたり、
バックライト調整の抵抗をon/offスイッチに取り替えるとき、この領域に配置します。
I2Cのプルアップ抵抗を本アダプタ上に持たせるときにも利用できます。
スレーブアドレスを設定するパッド(JP1)から配線を引き出し、切り替えスイッチを取り付けてもよいでしょう。
手持ちのLCDモジュールの端子の並び順が本アダプタと合わない場合、この領域内で独自に配線し直すこともできます。
I2Cのマスター機能を備えたマイコンと本アダプタを、電源(VCC/GND)とI2Cバス(SCL/SDA)で接続します。
I2Cのプルアップ抵抗は2k~10kΩ程度を目安に回路側で持たせてください。
マイコン/I2Cバスの動作電圧は3.3Vでも5Vでも、本アダプタ側での電圧設定は特にありません。
本アダプタの起動時、スレーブアドレス(7桁の2進数)が一瞬表示されます。確認に利用してください。
#include <avr/io.h>
#include <util/delay.h>
#include "I2cCharLcdLib.h"
//スレーブアドレス7bit+R/W
#define SLAVE_ADDRESS (0b0111100 << 1)
int main(void)
{
uint8_t i;
_delay_ms(100); //スレーブデバイス(I2C-LCD)の立ち上がりを待つ
TWI_BusSpeed(TWI_BUSSPEED_CPU8MHz_SCL100kHz);
I2CCHARLCD_Init(SLAVE_ADDRESS, 10, 2);
I2CCHARLCD_SetLineMode(LCD_LINEMODE_COMBINE | LCD_LINEMODE_OVERWRITE, LCD_CURSOR_ON);
I2CCHARLCD_PutChar('M');
I2CCHARLCD_PutByte(0xFF);
I2CCHARLCD_PutWord(0x1A2B);
I2CCHARLCD_PutUInt(65535);
I2CCHARLCD_PutInt(-32768);
for (i = 0; i < 30; i++) _delay_ms(100); //3秒待つ(上書きデモが確実に見えるように)
I2CCHARLCD_PutString("abcdef");
return 0;
}
通信プロトコルは秋月電子の「I2C接続キャラクタLCDモジュール 16x2行 白色バックライト付」
(P-05693) と互換性があり、
今回のライブラリはそれを取り入れたものです。
※コマンドの説明はリンク先商品ページのpdfファイルを参照してください。
これにとらわれず、各マイコンに合わせて自分で自由にライブラリを作成することができます。
前作の記事「キャラクタLCDモジュール I2C化アダプタ」でも詳しく解説しています。
表面実装部品はFET(Q), マイコン(ATtiny20), パスコン(C1)だけです。マイコンはプログラム書き込み済みです。
組み立ては基本的に背が低い部品から取り付けます。
JP1 - I2C Slave Address写真はOpenの状態です。
Open :0111100
Short:0111101
回路と接続する4ピンコネクタは、L型ピンヘッダ、L型ピンソケット、どちらでも構いません。 写真のようにピンソケットにすると、よく利用するオスのジャンパー線が挿せて便利だと思います。
参考までに本アダプタの配線パターンを掲載します。寸法図代わりにしてください。
本アダプタをケースに固定する場合、入手性がよいM3のネジが使えます。図中の青い二重丸の位置を目安に穴を開けるとよいです。
何らかの理由で本アダプタを小さくしたい場合、ユニバーサル領域を切断する方法が考えられます。
LCDモジュールを接続する16ピンコネクタに掛かる負担を支えるため、必ずスペーサー(2カ所になるが)を利用してください。
なお、S1,S2にピンソケット+ピンヘッダを取り付け(高さ11mm相当)、LCDモジュールを支える支柱にすることができます。
安価で入手性のよい部品で構成されています。
5V昇圧部分は実装面積を取りますが、本アダプタは小型化にこだわる必要がないので、価格と作りやすさを優先してこのようにしています。
ダイヤル式のボリュームが好みに合わなければスライド式のボリュームに変更したり、アレンジする楽しみもあります。
部品名 | 部品番号 | 値 | 個数 | 形状/備考 |
---|---|---|---|---|
DC/DCコンバータ | U1 | HT7750 | 1 | TO-92パッケージ |
AVR(マイコン) | U2 | ATtiny20 | 1 | 表面実装品 |
Pch-MOSFET | Q | IRLML6402 | 1 | 表面実装品 |
積層セラミックコンデンサ | C1 | 0.1uF | 1 | 表面実装品 |
電解コンデンサ | C2, C3 | 100uF/10V | 2 | 小型品 |
インダクタ | L1 | 47uH | 1 | リード品 |
ショットキバリアダイオード | D1 | 1S3 | 1 | リード品 |
ボリューム | VR | B10kΩ | 1 | Bカーブで10kΩないし20kΩ |
抵抗 | R | 10~100Ω | 1 | 実際に明るさを見ながら決めるとよい |
キャラクタLCDモジュール | LCD | 任意の機種 | 1 | コントローラがHD44780互換のもの |
コネクタ | CN1 | L型4ピン | 1 | ピンヘッダ、ピンソケット、どちらでも |
ピンヘッダ | -- | 16ピン | 1 | LCDモジュール接続(LCD側) |
ピンソケット | -- | 16ピン | 1 | LCDモジュール接続(本アダプタ側) |
M2スペーサー | -- | 長さ11mm | 4 | ネジはM2で8個必要 |
前作・ユニバーサル基板バージョンのものは大きさも形も悪く、使いづらいものでした。 今回、プリント基板にしてLCDモジュールと大きさを揃えたことで、飛躍的に使いやすくなりました。 満足のいく出来です。