MC9RS08LA8で作った電圧計 [RS08]
某所より提供された液晶パネル「VIM-503」を使って、電圧計を作ってみました。
基板は、そのまま
MC9RS08LA8で作った評価ボードでは、液晶パネル「LCDP81」を搭載した基板を作成しました。 写真をご覧ください。 今回の液晶パネルは、なんと、この基板をそのまま使用しています。 これは、任意のポートをバックプレーンとして使用することができるというMC9RS08LA8のLCDドライバの特徴の成せるわざです。 また、今回使用した、液晶パネル「VIM-503」が15端子一列分しか必要としないという仕様にも助けられています。 ソフトウェアは、多少、苦労しますが、もう一枚基板を作るのに比べたら軽いものです。
電圧を検出する仕組み
電圧計を作るためには、何らかの方法で基準電圧を手に入れる必要があります。 MC9RS08LA8の場合には、マイコン内部にバンドギャップと呼ばれる基準電圧を作成する機能を持っています。 バンドギャップ電圧は、データシートによると [1.208V (MIN); 1.208V (MAX)] とかなり強気な仕様になっていますが、きっとこれは、何かの間違いでしょう。 私のハンディ・テスタで校正したところ、1.1913V という値が出てきました。
MC9RS08LA8には、10ビットのA/Dコンバータが内蔵されています。 このA/Dコンバータでバンドギャップ電圧と被測定電圧を測定し、その比に先の 1.1913V を掛けると電圧が得られます。 さらに、測定精度を上げるために、A/D変換を64回行い、その和を16ビットの測定値として取り扱います。
この16ビットの値を取得するのが、関数 "do_adc()" です。
消費電力もちょっとは考えた
電圧表示は、 RTI モジュールの内蔵発振器を使って、約0.5秒ごとに更新されます。 A/D変換を行い、電圧値を計算し、液晶パネルに値を表示したら、次の更新までCPUには仕事がありません。 そこで、仕事が終わったらWAIT命令で低消費電力状態に移行し、次回の更新タイミングではRTI割り込みを利用して起き上がるという仕組みを取り入れました。
また、通常動作中は内部クロックを FEI (FLL Engaged Internal) モードに入れて 8MHz の高速バス・クロックで動作させて、WAIT期間中は内部クロックを FBILP (FLL Bypassed Internal Low Power) モードに入れて 16kHz の低速バス・クロックで動作させています。 この動作によって、消費電流は、0.24mAまで落ちました。
RTI割り込みの待ち合わせを行う命令には、もっと低消費電力になるSTOP命令もあります。 しかし、STOP命令を使うとクロックが停止してしまい、LCDドライバも停止して具合がよくありません。 そのため、次善の策としてWAIT命令を使用しています。
もし、どうしてもSTOP命令を使いたい場合には、外部発振子を追加して、そのクロックでLCDドライバとRTIを駆動するという方法もあります。 今回の基板では、外付け部品を減らすため、内蔵発振器のみを使うことにしています。
液晶パネルの駆動電圧
今回使用した、Varitronix社のVIM-503というパネルは、4V程度の駆動電圧が必要になるようです。 MC9RS08LA8のLCDドライバは、チャージポンプを内蔵していて電源電圧から三つのバイアス電圧を作ることができます。 バイアス電圧の作り方には二種類あり、レジスタで設定することができます。
モード | 3/3 VDD モード | 3/2 VDD モード |
---|---|---|
VLL3 | 3/3 VDD | 3/2 VDD |
VLL2 | 2/3 VDD | 2/2 VDD |
VLL1 | 1/3 VDD | 1/2 VDD |
A/D変換によって得られたバンドギャップ電圧から電源電圧を逆算し、これら二つのモードの一つを選択すると、ちょうどいいバイアス電圧が得られます。
この処理を行っているのが、関数 "lcd_cpcontrol()" で、 3.8V と 4.2V をスレシホルドとしてモードを切り替えるようになっています。
LCDWF レジスタの憂鬱
今回のプログラムでは、関数 "lcd_num()" で、16ビットの値を符号付十進数に変換し、セグメントのON/OFFを決めています。 この関数では、配列 "wf[12]" に、一旦 LCDWF レジスタの値を格納し、あらためて関数 "lcd_show()" で液晶パネルに表示しています。
元のプログラムでは、配列 "wf[12]" は使わず、直接 LCDWF レジスタに対してビット操作を行っていました。 今回、 LCDWF レジスタを直接ビット操作しないように変更した理由は、 LCDWF レジスタが書き込み専用レジスタだったからです。
MC9RS08LA8のリファレンスマニュアルには、確かに LCDWF レジスタは読み書き可能であると記述されています。 そのため、何の疑問も抱かずに LCDWF レジスタに対するビット操作を行ったのですが、うまく値が読み出せないことに気が付きました。 そこで、 freescale.com の Service Request に問い合わせたところ、「RS08 シリーズの LCDWF レジスタは、書き込み専用である。」との回答を得ました。 どうやら、リファレンス・マニュアルの不備のようです。
このため、仕方なく、配列を使った間接ビット操作に変更したというわけです。
デモンストレーション
プロジェクト・アーカイブ
今回作成したプロジェクトは、このリンクを "LA02.zip" という名前で保存すると再現できます。
参考文献
HCS08 Unleashed: Designer's Guide to the HCS08 Microcontrollers
- 作者: Fabio Pereira
- 出版社/メーカー: Booksurge Llc
- 発売日: 2007/11/13
- メディア: ペーパーバック
関連文献
コメント欄の流れから、広告を追加しました。 「表面実装リフロー装置(オーブントースター使用)」が紹介されている号です。
トランジスタ技術 (Transistor Gijutsu) 2007年 01月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2006/12/09
- メディア: 雑誌
> データシートによると [1.208V (MIN); 1.208V (MAX)] とかなり強気な仕様になっていますが
ここで吹いた(笑)
by hamayan (2009-04-26 21:16)
バンドギャップ電圧の話、ちゃんと Technical Support に質問しましたよ。
1.208V (MIN); 1.218V (TYP); 1.228V (MAX)
だそうです。あれ?私の測った 1.1913V は入っていないんですけど。
それにしても、バンドギャップ電圧はどうしてMCUごとにバラバラなんだ?
by noritan (2009-04-27 21:41)
こんにちは AC100Vの電気コンロ温度コントローラを作ろうと
大量にある暇な時間を浪費しています
K熱電対温度補償ICつき(秋月)、 SSR 20A、 7セグLED、
ボリューム、スイッチ、、、
部品の確認は始めたのですが、足が足りなくなりそうです
そこで Vrefをコンパレータを使ってとらないで バンドギャップで
取得しようと 調べていたら 神様のブログにたどり着きました。
質問 バンドギャップをから基準電圧を取得する場合は足は使わない
で大丈夫でしょうか? ADのチャンネルを1足引き換えになったり
しないでしょうか?
マイコンQG8 16ピンで考えています。
アプリケーションはスモーカーの温度コントロール
K熱電対で 50-180C度くらいの温度を計ることができれば
アナログ温度計とのにらめっこをやめられるのでとてもうれしいです。
追伸、 似非スモークと違って本当に燻したベーコンはおいしいですよ。
どうですか?
by iio3 (2009-09-30 12:22)
お答えします。
A/D入力ポートとは別にバンドギャップ電圧入力と温度センサ入力があると理解してください。従って、8本のA/D入力端子も同時に丸ごと使えます。
もともと、QG8に入っているA/D変換モジュールの入力は、31本もあるので、その一部にバンドギャップと温度センサをつないだだけのことです。他には、VDD/VSSなんてのもあります。
アプリケーションは、はんだリフロー装置ではないのですね。
*参考サイト*
http://journal.mycom.co.jp/news/2006/07/03/009.html
懐かしのゲームから実用的なものまで、フリースケールの電子工作コンテスト
by noritan (2009-09-30 13:43)
やはり!
一歩前進 亀ですが
リフロー装置のプログラム探したのですが 見つけ切れませんでした。
多分 ほとんど流用可能だと思うのですが、、
いまさら freekにアカウント作るのもなんだし、、、、
うーん
by ii03 (2009-09-30 21:45)
教えていただいた URL 断腸の思いでアクセスしました。
(プログラミングの参考が欲しくて)
が はんだのリフロー装置はなく K熱電対を使ったお風呂ブザーに
なっていました。 なにか 見えない力がはたらいたのでしょうか?
by ii03 (2009-10-01 00:10)
確かに「表面実装リフロー装置(オーブントースター使用)」は、そのWEBページに有りますよ。ただし、写真と簡単な説明だけで、設計の詳細はここには掲載されていません。
実は、この作品は、トランジスタ技術2007年1月号に6ページの記事として掲載されました。そのため、プログラムも活字で公開されており、freescalefreekにもこの作品だけは掲載が無かったと思います。
http://toragi.cqpub.co.jp/tabid/182/Default.aspx
2007年1月号:トランジスタ技術バックナンバー
バックナンバーのページからは、最初の2ページをPDFで見ることができますが、回路図までで、プログラムまでたどりつけません。この号は、MSP430付録基板付きなので、特にバックナンバーの入手は困難を極めると思います。CD-ROM版なら入手可能です。
http://shop.cqpub.co.jp/detail/564/
CD-ROM版 トランジスタ技術2007
ダウンロードサービスも、まだ、活きているみたいです。
http://toragi.cqpub.co.jp/tabid/186/Default.aspx
ダウンロード・サービス
このあたりの一連の話題は、こちらのフォーラムに集まって、ワイガヤしていましたので、ご参考にしてください。
http://micon.arrow.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=29&forum=1
「第一回電子工作キット制作コンテスト」、無事に終了
さて、第三回コンテストはあるのかな?
by noritan (2009-10-01 09:20)
情報ありがとうございます。
今日久しぶりにマルツに行ったら 場所が変わってました。
かなりの距離を歩きました。
ぼちぼちやっていきます。
工作コンテストは やらないでしょうね。
もう3年も前の話なんですね。
継続することが 大切なんですが だめですね。。
言い訳つけて 違うことするからって、やらないんでしょうね。
普通は地道に繰り返し、 他のことも繰り返し、、、
外資って、、、
by iio3 (2009-10-01 23:33)