キャラクタLCD処方箋

SC1602などのキャラクタLCDモジュールを使っていて、ソフトウエア的には動いてくれていいはずの場面なのに、1行目に黒い四角が並ぶところを目の当たりにしたことがある人は少なく無いのではないでしょうか。

こういった原因はいろいろあると思うのですが、対処療法的に効果があるかもしれない内容をまとめてみました。


キャラクタLCDは実は難しい


マイコンを利用した趣味の電子工作では、表示機としてSC1602やSC2004といった、日立のHD44780互換ICを利用したキャラクタ液晶表示機が非常に良く使われます。

HD44780 のGoogle画像検索

これらの液晶表示機は、秋月電子通商などでも安価に購入でき、また、マイコンのプログラミングという観点から見るととても簡単に制御ができるため、マイコン初心者から上級者まで広く使われています。

しかしながら、回路図どおり接続し、ソフトウエアも間違っていないはずなのに、何故か動作しないということがしばしば起こり、初心者泣かせだったりします。
キャラクタLCDの1行目に黒い四角が並んでいる初期化失敗の場面を見たことがある人は少なくないと思います。
それよりは頻度が低いですが、意味不明な文字列のようなものが表示される「文字化け」や意図した位置からずれた場所に文字が表示されるといった症状も稀に見られます。

特にキャラクタLCDをマイコン基板本体から少し離れたところに設置したいと考えたときなどに、信号線を引き伸ばすと不都合が生じることが多いようです。

こういった現象の起こる根本的な原因は、私にはよく分かりませんが、経験的に効果があるチェックポイントをまとめました。

  • 結線のチェック
  • コントラストのチェック
  • パスコンの追加
  • 信号パルスの延長とダミーウエイトの追加
  • バッファの挿入
  • 未使用端子とE(STB)信号線の処理
  • マイコン側の問題?

ただし、経験則ゆえに間違っていることもあるかもしれません。また、いかにもな対処療法は、仮にそれで動作が安定したとしても、それだけで満足せずに原因となっている問題点を探す努力が必要です。

結線ミス(特に電源)


なんだかんだ言って、結局一番多いのは配線の間違いや接触不良です。
導通チェッカの機能の付いたテスタを使って、落ち着いて確認するところからはじめましょう。
特に2行表示のLCDと4行表示のLCDでは、ピン配置がそっくりでありながら電源とGNDのピン配置だけが逆になっているものがあります。

コントラスト


これも単なるケアレスミスなのですが、コントラストの調整がマズイせいで一見表示されていないように見えることがあります。

パスコン


回路製作の際にすべてのICの電源とGND端子のできるだけ近くに0.1μF程度の積層セラミックコンデンサを接続し、IC数個おきに100μF程度のアルミ電解コンデンサを接続する。


こういった話は、電子工作の参考書(例えば、CPUの創りかたOPアンプによる実用回路設計)にはよく書かれていることですが、忘れてしまう人をしばしば見かけます。

キャラクタ液晶モジュールそのものの電源-GND端子間に数十μF程度の電解コンデンサをつけると文字化けやちらつきの頻度が改善されるケースがしばしばあります。
特に信号線を引き伸ばす場合に効果があるようです。

信号パルス(特にE(STB))の長さ


キャラクタディスプレイの制御信号には最小パルス幅が定義されています。例えばキャラクタLCDへの書き込み時にはEnable信号を220ns以上Highに維持する必要があります。

このEnable信号の保持時間をかなり長めに取ってやることによって、動作が安定することがあります。
私はPIC16F873を20MHzで動作させた際、NOPを2つはさみ、少なくとも400ns以上Highを維持していたはずなのに、LCDが正常動作しなかったことがあります。
このときはNOPを10個はさむ、すなわち2μs以上Highを維持するようにしたところ正常に動作するようになりました。

とはいえ、こういった対処療法はあまり好まれません。

バッファの挿入


キャラクタLCDをメイン基板とは離れたところで動作させたい場合は、メイン基板上のマイコンに送信バッファを、液晶表示機に受信バッファをそれぞれ挿入するという選択肢もあります。

ただし、ICが増えることを厭わないならば、メイン基板上のマイコンと液晶制御用のマイコンを分離し、別基板間の通信を考慮したシリアル通信でデータのやり取りをするという案のほうが現実的かもしれません。


001_20101124001952.png
fig.1: 本当に延長したいならシリアル通信で


液晶表示モジュールを4ビットモードで使ったときの空きピン処理


液晶表示機を4ビットモードで使用する際の未使用端子をどのように処理するかという問題は、長らく議論されてきたようです。

この問題は居酒屋ガレージ日記の居酒屋ガレージ店主(JH3DBO)さんが液晶表示モジュールを4ビットモードで使ったときの空きピン処理にまとめています。E(STB)信号線の処理など8ビットモードでも参考になる話が書いてあるので、読んだことの無い方はぜひ一読をオススメします。

マイコン側の問題?


最後に、私の昔の経験をひとつ。
いまだに原因もよく分かっていない話ですが。

およそfig.2のような回路を作ったところ、マイコンとしてPIC16F84Aを使ったときはLCDモジュールが正常に動作する一方で、PIC16F88を使ったときは動作しないという現象に出くわしました。


002_20101124001952.png
fig.2: 84Aでは動作するが88では動作しない回路?


PIC16F88は84Aと比べて高機能なため、単純なプログラムを組むだけでも、余計な設定項目が多いのが難点といえば難点です。
ただ、このときはアナログ関係の設定もシリアル通信関連の設定もディスエーブルとしたので、84Aから88への移植の問題ではないと思います。PIC16F88が壊れた可能性も考慮して複数の個体で試しましたが、どれも同じ結果でした。(ただし、同時期に購入した個体しかなかったため、ロットは同じだと思います。)

そもそも、この回路の設計思想はA/Dコンバータが乗っているPORTAをできるだけ使わず、PORTBだけでキャラクタ液晶を動作させるというものでした。これをあきらめて、三本の制御信号線(E,RS,RW)をPORTAに移したところ、PIC16F88でも動作するようになりました。

このエピソードで言いたかったことは、キャラクタLCDは初心者も良く利用する基本的なモジュールでありながら、実は結構気難しくてうまく動いてくれないこともあるということです。

参考URL




参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: PIC 失敗談 

LTspiceの接頭語

LTspiceでは、色々なところで、数字に付ける接頭語(kとかmとか)がつかえます。
便利な接頭語ですが、LTspiceは大文字と小文字の区別をしないため、注意をして使わなければ、とんでもない間違いをすることがあります。

001_20091204025516.png 002_20091204025515.png


LTspiceで使える接頭語一覧


LTspiceの接頭語の一覧を以下に示します。

SuffixMultiplier
T1E12
G1E9
Meg1E6
k1E3
Mil25.4E-6
m1E-3
u1E-6
n1E-9
p1E-12
f1E-15
table.1: 接頭語一覧


"μ"は、"u"で代用します。

大文字と小文字を区別しない


LTspiceは、大文字と小文字を区別しません。これに関連する罠として有名(?)であるのが、Megとmです。
10の6乗を意味するM(メガ)は、LTspiceではMegとかく必要があります。大文字のMはm(ミリ)、すなわち10の-3乗と解釈されます。

スーパーキャパシタのシミュレーション


秋月電子通商で、耐圧が5.5V、内部抵抗30Ωで容量が1Fの電気二重層コンデンサを扱っています。
非常に大容量であるこのコンデンサは、5V系マイコンのバックアップ電源などに使われるようです。

この内部抵抗30Ω、静電容量1Fのコンデンサに5V電源を接続したときの充電波形のシミュレーションを試みました。


001_20091204025516.png
fig.1: 充電のシミュレーション

002_20091204025515.png
fig.2: 充電波形


さて問題です。fig.1-2はどこが間違っているでしょうか?
私はシミュレーションを走らせてみるまで間違いに気がつきませんでした。

付録


このエントリで使用したLTspiceのシミュレーション用ファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。


フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: LTspice 過渡解析 失敗談 

テスタにまつわる失敗談

1週間ほど家に帰れないことになったので、出先から更新します。
本格的なエントリを書くには、いろいろと環境が整ってないので、代わりに通常の更新では恥ずかしくて書けないような失敗談を書こうと思います。


○倉庫が煙だらけに
それは、以前私が倉庫の交流100Vの様子がおかしいからみてくれと言われたときでした。
その時はたまたま私の所属している班の所有しているテスタが出払っていたので、隣の電気系の班のものを借りることにしました。

AC200Vレンジに合わせて、テストリードをコンセントの中に差し込むと・・・テスタが爆発しました。


001_20090427001803.jpg


そのとき使ったテスタは、MAS-830Lのような、10A測定端子だけ他の測定端子とは独立したタイプのものでした。
そうです。テストリードを10A測定端子のところに刺してつかったのです。

10A測定端子とCOM端子の間は、電流測定用のシャント抵抗でつながれています。両方の端子の間は短絡していると言い換えてもいいでしょう。交流100Vを短絡させれば、当然テストリードが融けて煙ぐらい出ます。安物のテスタがたたってヒューズも入ってませんでしたし。

テスタを借りた班の人に謝りに行ったときのこと。
「あのテスタは、いつも電流を測るために使っていたので、テストリードは10Aの端子にに挿しっぱなしだったんですよ。」

それ以来、私は使用前にテストリードの挿入端子を確認する事/使用後にテストリードを電流端子に挿しっぱなしにしない事を学習しました。

○余談
さて、テスタを燃やしてしまったわけですが、交流100Vの電圧は測定できてません。
しかたがないので、電気系でない班からテスタを借りて電圧を測ってみることにしました。

事情を話すと、その班の人は快くテスタを貸してくれました。
「電気のことはよくわかりませんけど、うちの班のテスタは大丈夫ですよ。いつも交流100Vとか、それをスライダックで落とした電圧とか測ってますから!」

そう言って渡されたテスタは、赤のテストリードが電圧測定端子に、黒のテストリードが10A測定端子に挿されていました。

なるほど、確かに電圧は測れるけど・・・。

○関連エントリ


○電子工作ブログランキング参加中
にほんブログ村 その他趣味ブログ 電子工作へ
1クリックお願いします。

tag: テスタ 失敗談 

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRScilabmachikaneyamaKKRPSoCCPAOPアンプPIC強磁性モンテカルロ解析常微分方程式トランジスタodeインターフェース状態密度DOSecalj定電流PDS5022スイッチング回路半導体シェルスクリプト乱数レベルシフトHP6632A温度解析ブレッドボードI2CR6452A分散関係トランジスタ技術可変抵抗確率論数値積分反強磁性セミナー非線形方程式ソルバ絶縁バンドギャップ熱設計偏微分方程式バンド構造GW近似カオス三端子レギュレータLEDフォトカプラシュミットトリガISO-I2CA/DコンバータLM358USBカレントミラーTL431マフィンティン半径PC817C数値微分アナログスイッチ発振回路サーボ直流動作点解析74HC40532ちゃんねる標準ロジックチョッパアンプLDAアセンブラFFTbzqltyイジング模型ブラべ格子開発環境補間量子力学電子負荷BSchパラメトリック解析単振り子基本並進ベクトル熱伝導繰り返しGGAMaximaTLP621ewidthSMP相対論抵抗位相図ランダムウォークスピン軌道相互作用六方最密充填構造不規則合金FETコバルト失敗談QSGWcygwinスレーターポーリング曲線スイッチト・キャパシタラプラス方程式gfortranキュリー温度状態方程式条件分岐格子比熱TLP552LM555TLP521三角波NE555過渡解析FXA-7020ZRWriter509テスタ詰め回路MCUマントルダイヤモンドQNAPデータロガーガイガー管自動計測UPS井戸型ポテンシャルawk第一原理計算仮想結晶近似ブラウン運動差し込みグラフ平均場近似fsolve起電力熱力学OpenMPスーパーセル固有値問題最適化最小値VCAシュレディンガー方程式VESTAubuntu最大値面心立方構造PGAOPA2277L10構造非線型方程式ソルバ2SC1815fccフェルミ面等高線ジバニャン方程式ヒストグラム確率論マテリアルデザイン正規分布結晶磁気異方性interp1フィルタ初期値ウィグナーザイツ胞c/aルチル構造岩塩構造スワップ領域リジッドバンド模型edeltBaOウルツ鉱構造重積分SIC二相共存ZnOquantumESPRESSOCapSensegnuplotmultiplot全エネルギー固定スピンモーメントFSM合金ノコギリ波フォノンデバイ模型ハーフメタル半金属TeXifortTS-110不規則局所モーメントTS-112等価回路モデルパラメータ・モデルヒストグラムExcel円周率GimpトラックボールPC直流解析入出力文字列マンデルブロ集合キーボードフラクタル化学反応三次元Realforce縮退日本語最小二乗法関数フィッティング疎行列シンボル線種ナイキスト線図陰解法負帰還安定性熱拡散方程式EAGLECrank-Nicolson法連立一次方程式P-10クーロン散乱Ubuntu境界条件MBEHiLAPW軸ラベルトランスCK1026MAS830L凡例PIC16F785LMC662AACircuit両対数グラフ片対数グラフグラフの分割specx.f

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ