0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

中華製16桁×2行LCDの不具合を解消する!

Posted at

経緯

2024年10月に Amazon Japanで中国製のLCDを購入 しました。

価格は6,000円、16桁×2行のバックライト付きLCDが2つ入ったものを2つ買いました。 届いてすぐに動作確認をしましたが、うまく点灯しませんでした。

しかし、この不良は、若干の手直しで、動作するようになりますので、
同じ症状でお悩みの方が居られましたら、皆さんに共有したいと思います。

どのような商品?

取扱説明書も、図面も、何もついていない、Amazon あるある商品。
パッケージにQRコードが付いていますので、製造メーカサイト からサンプルプログラムをダウンロードできます。
頒布されているサンプルには、以下のものが入っていました。

  • LCDのデータシート
  • PCF8574(I2C)インターフェイスチップのデータシート
  • その他、おすすめ商品のデータシート
  • USBドライバ(CH340、当商品とは全く関係なし)
  • Arduino、C++、Pythonでのサンプルコード
    • Arduino版(C++)のソースは他メーカー(Adafruit)のライブラリを使用
    • C++のサンプルは、ライブラリが添付していないため使用できません
    • Pythonのものは、RPi.GPIO を使用しており ラズパイ5 では動きませんでした

まずは動作確認

Arudino で簡単な サンプルコード を作って動作を確認していきます

上記の動画では、「12_」と出ていますが、実際には「12345」と出力しています。
「12_」も出たりでなかったりで、動作が非常に不安定でした。

サンプルコード

  • 前記のLCDを動作させた仮コード(Arduino 用)は以下の通りです。

  • lcd.init() を2回呼んでますが、2回呼ばないと動きません!
sketch_NanoIOT.ino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

    lcd.init();
    lcd.init();

    lcd.display();
    lcd.backlight();
    lcd.cursor();
    lcd.setCursor(0,0);
    lcd.print("12345");
}
void loop() {
  // put your main code here, to run repeatedly:
}

商品の仕様・構成

まずデータシートから確認していきます。
LCDモジュールだけのデータシートと思われる、製造メーカーサンプル在中の LCD1602.pdf (商品名:TC1602B-01)から抜粋;

LCDバックライト最大定格 最大 150mA
LCDバックライト定格 5.0V
液晶モジュール定格 4V~ 4.2V (typ値) ~4.4V 100mA
LCDモジュール電源 5.0V
外部接続 GND / VCC / SDA / SCLの4線式(I2C)
I2C制御IC PCF8574T または PCF8574AT
8ビット・シフトレジスタにI2C機能が付いたような代物
LCD制御IC 恐らく日立の HD44780 (1999') と同等
その他
  • LCDモジュールだけのデータシートで、LCDモジュールの寸法図が書かれており、当該商品とは別物だと分かります
  • 液晶モジュールとバックライトの稼働電圧が異なりますが、液晶モジュールの電源ラインに抵抗やレギュレータらしきものは付いていません
  • バックライトLED用に耐圧45V/100mA の電圧バラストタイプのトランジスタ1つと、電流制限用の抵抗100オームが付いてます

PCF8574 の接続ライン

次に I2C インターフェイスの PCF8574 ですが、チップ自体のデータシートであり、特段おかしいところはありませんでした。

本商品としてのデータシートは付属していないので、チップ間接続を調べることにします。
テスターと虫眼鏡で確認したところ、以下のような接続でした。
LCDを、4ビットモードで制御する仕様です

PCF8574の端子 LCD側の端子(4ビットモード) 備考
D0 RS 0=コマンド/1=データ
D1 RW 0=書き込み/1=読み込み
D2 E 許可ライン(クロック的)
D3 Backlight 0=オフ/1=オン
D4 D4 4bitモードでのD4ライン
D5 D5 4bitモードでのD5ライン
D6 D6 4bitモードでのD6ライン
D7 D7 4bitモードでのD7ライン

PCF8574 の I2Cアドレス選択

I2Cアドレス選択は、以下のようになっています
(PCF8574 のデータシートから抜粋)

I2Cアドレスライン I2Cアドレス選択
PCF8574A
0x3F(初期値)
PCF8574
0x27(初期値)
A7 0 内部固定 0 内部固定
A6 0 〃 0 〃
A5 1 〃 0 〃
A4 1 〃 1 〃
A3 1 〃 0 〃
A2 下位3ビットは基板上のジャンパより、
ジャンパ 信号レベル
オープン High(1)
ショート Low(0)
デフォルト 全オープン(0b111と等価)
A1
A0
アドレス線 (A0~A2)ジャンパ(赤枠

下の黒く四角いのが PCF8574 です
その上の3本脚の黒いのが電圧バラスト用のトランジスタ

動作させるための修正

対策その1) 電源電圧を下げる

データシートからの観点で、液晶モジュールに、typ値の 4.2V でなく 5V が供給されている点が気になるので、まずここから改善します。LCDに直接手を加えるのではなく、電源ラインに抵抗を入れて降圧させることにしました。

画ずらが汚いですが、赤丸 の箇所が電源ラインに挿入した抵抗です。
色々やってみて41オームに落ち着きました。
電圧は、typ値より若干低い 4.1V 弱になりました。

対策その2) バックライトの電流制限抵抗を交換

次は液晶の文字色が黒くなる現象の対策です。

動作症状

  • 症状としては以下のものが挙げられます。

    バックライト 状態 正常性
    消灯時 明るい光にかざすと、液晶部分が白く抜けている 正常
    点灯時 じわじわと、でもほぼ瞬時に黒く変色する 異常

不良原因

  • 前記の症状から、考えられる原因は、以下の通りです。

  1. バックライトの消費電力が大きい
  2. ゆえに液晶部で著しい電圧降下が発生
  3. 電圧降下により液晶色が白から黒に変色する

修正

  • 次のように修正して行きます
修正箇所(添付写真)の説明
1. 左端赤枠のところにLEDの A(アノード), K(カソード)が見えます
2. 赤矢印(ハイライト部分)のところに LED のラインが通っています
3. 橙色の箇所に「101」と書かれたチップ抵抗 100オーム があります。
これを 220オーム 1/4W のチップ抵抗(「221」表示)に交換します。
※ 抵抗の交換には、元の抵抗の取り外しと、ハンダ付け作業が必要です。
IMG_1611-1 編集済み 2.png

修正後の動作確認

これですべての手順は終わりです。修正後の様子を撮影しました。
青地のバックライトに、白抜きの字がちゃんと表示されています!

最後に

如何だったでしょうか?

では、また!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?