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の指示付きの初期化子を使った書き方をしてみたので、少し面白い感じになってます。規格化されてから結構日がたっているので常識になってる?

Versaloon基板を自作してみる(基板到着 + 実装 + !?)

基板が届きました。といっても、前回の発注記事の後に電源(USB)のVccとGNDが短絡している事が判明して、もう一度発注し直したので間が空きました。

RIMG0464.jpg

早速実装しました。FXMA108BQXを手付けできるかどうかが心配でしたが、フラックスをぬりぬりして半田付けすると意外と簡単に付ける事ができました。

RIMG0465.jpg

これにVersaloonのファームウェアを書き込んで動作確認をします。この基板(Versaloon_da)はSTM8S-DISCOVERYのST-Link部分のVersaloonに関係無い配線を取り除いた構成になっているので、以前作成したバイナリを書き込みます。書き込みには JTAGKey clone を使いました。

早速LPC1114を繋いでデバッグを開始しようとしたところ、繋がりません。何か嫌~な予感がして、端子出ししておいたUARTのTx,RxとUSB-UART変換とを繋いで同じPCで2つのTeraTermを起ち上げて通信の確認をしてみたが、うんともすんとも言わずです。でも、Versaloon_daのTxを自身のRxへ繋いだ場合は通信出来てます。これはチョッとピンと来るモノがありました。水晶振動子の発振がうまくいってないのではないかと。で、改めて見てみると水晶振動子を基板に付けてしまうというよくありがちな事をやってしまってました。水晶振動子の足を切ってしまった後だったのですが、少し長めに残していたので、半田鏝でチョイチョイ押しながら浮かしてやると、UART通信がうまくできるようになりました。STM32VLDISCOVERYなんかの基板だと大げさなくらい浮かしてますからね…。

RIMG0467.jpg

気を取り直して、LPC1114へSWD接続してOpenOCDから繋ぎます……… !? まだ繋がらないんですけど…。これには参りました。いろいろと試してみたけど結局繋がらず。お手上げ状態で眠りにつき、朝起きた時にまたまた嫌~な予感がしました。VersaloonのFirmwareのソースコードを確認すると、SWD接続にはPB5,PB7,PB9の端子を使っています。自分の回路図を見てみると、PB5,PB7しか繋いでなく、PB9は空きピン扱いになってます。やってしまいました orz  幸い、PB9はPB7へダイレクトに接続でよかったので、ジャンパをとばしました。

RIMG0466.jpg

チップ抵抗の半田付けがきたないですね…。

ジャンパも付け終わり、LPC1114へSWD接続してOpenOCDを起ち上げると、今度はうまく繋がりました。telnetでデバッグできる事も確認できましたし、めでたしめでたしです。一応、修正後の回路図をUPしておきます。

versaloon_da_schematic_v1_2.png

Versaloon_da_parts_list.png



2013年04月24日 追記
部品一覧を追加しました。
載せるのを完璧に忘れていました…。

[エフェクター] FUZZ DEVIL (作成~完成)

ガーバアウトした基板が今日届きました。

RIMG0445.jpg RIMG0444.jpg

念の為、導通チェックと間違った配線にしていないか確認をした後、部品を取り付けました。

RIMG0446.jpg RIMG0447.jpg

ケースは前もって穴空け、塗装、レンダリングまで済ませていたので、ボリュームやフットスイッチ、ジャック等を取り付けました。周りが桜見物している中でスプレーをシューシューしてボーッと待つの繰り返しをしていたので怪しい人この上なかったと思います…。

RIMG0448.jpg RIMG0450.jpg

レンダリングは「誰でも作れる ギター・エフェクター2」のモノをWEBから落として来て、インクジェット用ラベルシートに印刷して貼り付けました。一応、その上からクリアを吹き付けています。

肝心の音ですが、歪んでます。ま~FUZZですから。ただ、ギターらしいギターを持っていないのと、ギターアンプを持っていないので評価はできないです。何じゃそりゃ!!ってな感じですが、普段は歪まない様に設計するオーディオアンプを作っている中で、たまには逆の事もしても良いではないかとの発想で作ってみたのです。Fuzz Super Edge 2 に続き2台目となりましたが。

[エフェクター] FUZZ DEVIL (基板発注)

ギターを持っていないのに、何故か作ってみたくなるのがエフェクター。
今回は「誰でも作れる ギター・エフェクター2」から "FUZZ DEVIL" を作ってみる事にしました。と言っても、本に回路は載ってるし、パターンも載っているので考える部分は少ない。

本ではエッチング用のパターンが付いてくるが、メンドイのでパスです。ユニバーサル基板で作成してもいいのだけれど、何となくパス。ということで、MBEでガーバデータを作成して Fusion PCB へ発注してしまいました。円安になってきてるが、ま~いいでしょう。

作成したアートワークとガーバビュワーで表示した内容です。
部品をまだ買っていないから買いに行かねば。

fuzz_devil_mbe.png

fuzz_devil_top.png fuzz_devil_bottom.png

Versaloon基板を自作してみる(設計+発注)

STM8S-DISCOVERYのST-Link部分を使ったVersaloonは既に作成済みだが、これはターゲットが3.3V動作の物までなので、5Vや3.3V未満で動作する場合は使えない。なので、1.6V~5Vまで使える様にレベル変換ICを咬ませた基板を作成する事にした。

Versaloonのオリジナルソースコードでは色々な基板(オリジナル+DISCOVERY)に対応しているが、20ピンのJTAGで繋ぐのは自作したJTAGKey2 cloneがあるので、それを使うので、SWD対応のみで、UARTのTx/Rxが出てるのが良かったので、STM8S-DISCOVERYのバイナリを使い廻せる構成にしてみました。

回路図とガーバ・ビュワーで見たアートワークです。

回路図が間違っていました。修正した回路図をこっちらに載せてます。

versaloon_da_color.png

mbe_view.png gerver_view_top.png gerver_view_bottom.png

アートワークはMBE(Minimal Board Editor)で作ってます。
MBEは自動配線が無いので大変ですが、5x5cm, 2層の基板であれば何とか作成出来ます。何かと融通も利きますしね。

チップ抵抗を覗き、殆どの部品は既に入手しているので、大小関係を現物で確認して大丈夫そうだったので、Fusion PCBへ発注してみました。さてさて、どうなることやら。
黒ねこ時計 くろック D02
プロフィール

jujurou

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

カレンダー
05 | 2020/06 | 07
- 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 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

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

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

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter