コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark


PSoC1 を仲介にして、3.3V駆動、I2C通信で表示ができるキャラクターLCDモジュールのユニットを作成してみた。

ストロベリーリナックスの 3.3V キャラクターLCDモジュールはお安くて入手性も良いのだけれども、いかんせんちょっと小さいのとバックライトがないのとで見づらいところがある。
バックライト付きの 5V LCDモジュールを 3.3V と I2C で使いたいなあと、制御マイコン付きの基板を作ってみることにした。

回路図、K2CADのパターンファイル、基板のガーバーデータ、PSoCプロジェクトの詰め合わせ。
Download: i2c_lcd_psoc1.zip



回路図。
3.3V の供給電源を PSoC の SMP(Switch Mode Pump 昇圧機能)で 5V にしてそれをマイコンとLCDモジュールに供給するといった構造。
SMPで昇圧された電源は10数mA 程度しか駆動できないけれども、ここで使っている秋月のミニLCDモジュールはバックライトLED の消費電力がそんなに多くなく、マイコンと合わせて 10mA ちょいなのが分かっているので動作できている。というかそれを知っていたのでやってみようということになったのです。
I2C のバスが 3.3V のまま 5V 駆動のマイコンでうけているけれども特に問題はなし。

LCDモジュールの多くはコントラスト調整のために半固定抵抗などで調整した電圧を与えてやるが、そのために半固定抵抗を用意するのは面倒なものであった。
ストロベリーリナックスの I2C LCD は拡張コマンドでコントラストの調整ができ、ソフトウェアでコントロールするため便利である。そのコマンドを再現するために、PSoC の DAC を利用し DAC からの出力をコントラスト調整にそのままつないでいる。
アナログモジュールとピンを1つ消費するがずいぶんと簡単に実現できることがわかった。もっと早くこの技を使うべきだったな。

そういえば、このユニット上にショートピンで On/Off できる I2C のプルアップを用意する予定だったけれども忘れていた。その辺の改良は次回ということで。


流石に片面基板で完結できなかったのでジャンパーが 4本ほど。
このへんあまりムキになってパターン引いてもしょうが無いのでさっくりあきらめてジャンパー化した。

最初に作った基板には2カ所ほどミスがあってパッチが飛んでいるけれども、そのへんはご愛敬。
上の方で置いてあるzipファイルには修正済みの物が入っている。


CNCフライスでプリント基板を作るのもいいけれど、いっしょにアクリルも切り出せば割と見栄えのするプロダクトになる。
曲線とか穴とかを含んだものが切り出せるのでうれしいところ。

使用する PSoC は回路図では CY8C29466 となっているけれども、プロジェクトや実際に使ったものは1グレード下でお安い方の CY8C27443 になっている・
PSoC のファームウェアはあまりがんばっていない。
コアが遅いので I2C バスのクロック 400kHz とか到底間に合わない。100kHz がやっとというところ。そのへん割り込み部分にアセンブラでごりごり処理を書いてなんとかとも思ったけれども、がんばるだけのメリットがあまりなさそうなので妥協。

I2C プロトコルはストロベリーリナックスのLCDモジュールコントローラーの ST7032 に準拠。
I2C アドレスの後 2byte を受け取り。連続転送モードとLCDからの読み出しは無し。


  1byte - * RS * * * * * *  (00h か 40h)
  2byte - 8bit data

設定関連の 000001**, 00001***, 0001****, 001***** は無視。
001****S の最下位ビットは ST7032 での拡張モードスイッチで、これを立てて 01****** で設定する中にコントラストがあるのでその流れだけはエミュレートしてある。
連続バイトモードがないのと、100kHz 以下の速度で使うという条件であれば ST7032 と同じ手順で表示ができるはず。


デバッグのお供にこういうユニットと表示ライブラリがあれば便利なんではないだろうか。

Leave a Reply