スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LCD(TN 1/3 bias, 1/4 duty) を汎用I/Oポートで出力制御

1/3 bias,1/4 duty のSEG-LCDを表示したくなりました。切っ掛けは aitendo で FMラジオ周波数表示器[FM1888-9P2.0]を販売しているのを見たからです。なので最終的にこれを表示出来る様にします。

以前、1/1 bias 1/1 duty(スタティック) という最も簡単な方法はチャレンジしたことがあります。今回は 1/3 biasです。これを実現するには +V,+2/3V,+1/3V,0 の4つの電圧を出力する必要があり、汎用I/Oポートで実現するのは無理かな~と思っていたところ、awawa's lab という所でAVRの汎用I/Oポートで実現されている例がありました。これと同じ事をFM3マイコンで実現してみようと思います。

FM3にも内蔵のPull-UP抵抗はあり、ポートを入力に設定するとHi-Zとなるので、構成はそのままでいけそうです。後はそれぞれの抵抗値を計算するだけですが、awawa's lab ではR1,R2の値を求める式がいきなり書かれています。ココくらいは自分で導出してみようと思います。

回路の構成は下図になります。

seg_lcd_4com_3duty_3bias_fig_01.png

マイコンのGPIOと内部のPull-up抵抗、外部に分圧用の抵抗2本の構成です。+V,0の2パターンはGPIOを出力に設定して Hihg/Low を出力することで out端子 を +V,0 にします。問題の+2/3V,+1/3VはGPIOを入力(Hi-Z)に設定して、Pull-upを有効/無効にすることで実現させます。

seg_lcd_4com_3duty_3bias_fig_02.png

Pull-upを無効にしたのが(A)で、Pull-upを有効にしたのが(B)です。
これで+2/3V,+1/3Vを構成出来れば良いことになります。基本的に抵抗を並列接続にするとその合成抵抗値は小さくなるので、(B)のoutを+2/3Vとする方が良さそうです。ということで必然的に、(A)のoutは+1/3Vとなります。この条件で連立方程式を構成して Rpu の値の何倍を R1,R2 とすれば良いか求めてみます。

(A)より、式(1)が求まります。
seg_lcd_4com_3duty_3bias_math_01.png

(B)より、式(2)が求まります。
seg_lcd_4com_3duty_3bias_math_02.png

式(1),(2)より式(3),(4)が導出されます。
seg_lcd_4com_3duty_3bias_math_03.png

これで、マイコン内部のPull-up抵抗値(Rpu)が分かれば、R1,R2を算出することが出来ます。FM3のPull-up抵抗値は約50kΩらしいので、R1=75kΩ, R2=150kΩですね。E24系列でそろえられる値なので、丁度良いです。

1つのポートで4つの電圧を生成出来るか試しにやってみました。

seg_lcd_3bias_pic_00.jpg seg_lcd_3bias_fig_01.png

4つの出力を得られる事が分かりました。

いよいよ実装と行きたい所ですが、そもそも 1/3 bias,1/4 duty って何じゃらホイって所からですね。1/3 bias は上述している様に3等分した電圧をCOM,SEG端子に与える事を指します。1/4 duty はCOMを4つ使ったマトリクス状になっている構造を扱えるということです。FM1888-9P2.0のピンアサインを見るとCOM0~3(PIN1~4)を軸にPIN5~9に関連付けられた所を表示させる構造になってて、例えば3Gのセグメントを表示するにはCOM2(PIN2)とPIN6を有効にさせるのです。複数桁の7セグLEDをダイナミック点灯させるのに似てますね。

7セグLEDと違う点は、LCD(TN)がCOMとSEG端子間で一定の電圧に達しないと黒を表示しないのを利用してダイナミック点灯を行う所です。また、厄介なのが、LCD(TN)の場合は直流電圧をかけ続けてはいけないという点で、これは一定間隔でCOMとSEG端子の電圧を入れ替えて対応します。

言葉ではなかなピンと来ないので、COMとSEG端子の状態を図示してみました。

seg_lcd_4com_3duty_3bias_wave_01.png

黄色で塗りつぶした所が点灯(黒表示)するタイミングです。黄色の部分はCOMとSEG間の電圧がVcc分あります。それ以外の部分では1/3Vccです。使用するLCD(TN)が1/2Vcc以上で点灯(黒表示)する場合、1/3Vccでは表示されない事になります。若干いびつではありますが、一定電圧がかかり続けるって事は無いのも見て取れます。

この状態になるようにプログラムを実装して…動かしてみます。

COM0~3の波形です。
seg_lcd_3bias_fig_02.png

COM3と全点灯した(つもりの)時のSEG端子の波形です。
seg_lcd_3bias_fig_03.png

COM3と適当な数字を表示した(つもりの)時のSEG端子の波形です。
seg_lcd_3bias_fig_04.png

波形はCOM,SEG端子共に良い感じになってます。

ここまでくればLCD(TN)を繋いでも良いでしょう。
ということで繋いで動かしてみたところ、アッサリと表示出来ました。

seg_lcd_3bias_pic_02.jpg seg_lcd_3bias_pic_01.jpg




作成したプログラムは【物置】に置いておきました。

表示パターンは全て定数で持っておき、極力演算部分を減らしたつもりです。
C99の指示付きの初期化子を使った書き方をしてみたので、少し面白い感じになってます。規格化されてから結構日がたっているので常識になってる?
スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。