5V電源用の液晶キャラクターディスプレー(LCD)に簡単な外部回路を組んで3.3Vで使えるようにした、というお話。 ( jg1pld@jarl.com)
1.きっかけ
Bluetooth接続の温度計を作ろうと思い立ち久しぶりにArduinoを触ってみた。Bluetoothモジュールの電源電圧は3.3Vだし、これから使おうとしている温度センサ(ADT7422)も3.0V(2.7V〜3.3V)仕様である。SDカードをつけるにしても3.3Vなら直に接続できるのでArduino_pro_mini [3.3V, 8MHz]を使うことにした。温度センサは現在手持ちのBMP180で代用したが1日程度で完成しBluetoothも問題なくPCと繋がった。
温度計の動作チェック用にI2C_LCDを探したが5V駆動のものしか無く、試しにそれをつないでみた。1602タイプのパラレル接続LCDとI2C変換モジュールで2つ合わせて400円程度だったと記憶している。I2C変換モジュール上のチップにはPCF8475Tの刻印がある。
Fig.1-1 LCD and I2C converter
3.3Vの電源(およびI2C信号線)をつないだ5V用LCDは案の定、文字を表示しなかった。ただ、バックライトは5V接続のときとあまり変わらない明るさで光っているのは意外だった。
Fig.1-2 Low voltage operation of 5V_LCD
それでも何とかならないかと、I2C変換モジュールのコントラスト・ボリュームを回したり液晶面の視野角を変えてみたり色々いじっているうちに、ボリュームを回し切ったところで何か薄っすらと文字が浮かび上がっているのに気づいた。上の写真ではわからないが目視ではプログラムした文字がうすく見える。どうやら、I2Cの信号をLCDがちゃんと受けとっているようだ。なので、もっとコントラストを上げることができれば使えるんじゃないか、と思った。
2.コントラスト端子をいじる
I2C変換モジュールのコントラスト・ボリュームを回すことでコントラスト端子(Vo)の電圧を0Vから電源電圧(3.3V)まで可変できるが、ボリュームを回し切った状態でのコントラスト端子電圧はほぼ0ボルトであった。これをさらにマイナス側にもっていけばコントラストを上げられるのでは?と思い、電池を使ってマイナス電圧のゲタをはかせてみた。具体的には、I2C変換モジュールのVo端子とLCD基板のVo端子の間に1.5Vの電池を入れた。
Fig.2-1 Decreasing contrast terminal voltage
コントラスト・ボリュームを回してみるとLCD基板のVo端子電圧が-0.8Vの辺りでコントラストが最良の状態となり、文字がくっきりと見えるようになった。LCDを仕様どおりの5V駆動した場合と遜色のないコントラストが得られることを確認できた。このときの電池電圧は1.53V、電流は370μAであった。LCDの電源をOFFにすると電池電流は半分以下(160μA)に減少した。
Fig.2-2 Applying minus voltage to Vo
何のことはない、LCD基板のVo端子電圧をマイナス側にシフトすれば電源電圧3.3Vでもちゃんと使えるのだった。
3.電池の代わりに外部回路を付加
Vo端子にマイナス電圧をかけるだけのために電池を使うのはちょっとダサいので、DC-DCコンバータを付けてみた。使用したDCコンバータICはTC7660で、Fig.3-1のようにコンデンサ2個を外付けするだけで動作する。8ピンに+3.3Vを印加すれば極性反転した-3.3Vの電圧が5ピンに出力される。この電圧を半固定抵抗で分圧してVo端子ににつなげばOKというわけだ。
Fig.3-1 TC7660 carge pump dc converter
実際に作ったものが下の写真。(余談:TC7660の値段は確か10個で300円くらいだったか、昔のことで記憶が定かでないが、、、)
Fig.3-2 DC-DC converter unit
さっそくLCD基板に取り付けた。言うまでもないがI2C変換モジュールのVo端子とLCD基板のVo端子とは切り離してある。半固定抵抗を調節してVo端子電圧を-0.8Vあたりに設定するとFig.3-3のようにキャラクターがくっきりと現れた。
Fig.3-3 3.3V operation of 5V-spec-LCD