忍者ブログ
 
移転しました。
2024.05│ 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
カレンダー
04 2024/05 06
S M T W T F S
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
フリーエリア


最新コメント
[11/07 kojima]
[07/21 ゆ〜すけ]
[06/19 ゆ〜すけ]
最新トラックバック
プロフィール
HN:
wbb
HP:
性別:
非公開
職業:
電話当番
ブログ内検索
アクセス解析
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

analog_circut.jpg

資料を片手にシリアル通信と、アナログ-ディジタル変換を演習してみます。


これはひどい。




まず本が酷い。

CDが付いているのを良い事に、紙面でロクにソースの解説をしていない…。
初心者向けの本だとは分っていたけど、ここまでとは思わなんだ。
むしろ、紙面で完全にスルーされているモジュールがたくさんある。基本的に開発環境の使い方しか解説していないなぁ。

とりあえず78k0sに搭載されているUARTな機能を使ってシリアル通信をやってみた。

void print_chr(unsigned char c){
  tx_flg=1;
  UART6_SendData(&c,1);
  while( tx_flg ){ ; }
}

…と言っても、開発環境さんが半自動で生成してくれた素敵なUART6_SendData()関数をラッピングするだけなのです。上記tx_flgは、データ送信が完了次第、0になるのでwhileで送信完了をwaitしてます。
なぜtx_flgが0になっちゃうのかは、「割り込み」という奴です。ソフト屋さんにはあんまり馴染みのない概念です。組み込み屋さんには常識のようですよ。


そんなこんなで適当にシリアル通信が完成。やはりこの評価ボードはお手軽で良い。

つづいてADコンバータを味見。読んで字のごとく、アナログからディジタルへ変換します。アナログ量は電圧です。評価ボードにはサーミスタが付いていて、上に載せた様な回路になっているらしい。
Vccは5Vです。サーミスタは、温度によって抵抗値が変わる素子であります。上記回路では、まず電源電圧5Vが、10kΩの抵抗とサーミスタを通してグラウンドへ落ちます。10k抵抗とサーミスタの間の電圧をAD変換でセンシングしてます。
サーミスタの抵抗が上昇すると観測される電圧が高くなり(グラウンドに流れにくくなるからNE!)、逆に下降すると観測電圧は下がります。

使われているサーミスタはNTCG164 BH103JTというブツらしいのだが、残念ながらGoogleさんに聞いてもデータシートが発見できなかった…これもひどい(´・ω・`)
本来であればサーミスタの出力特性を見て、電圧を計算して温度へ変換する式を考えるのだが、データシートが入手できない以上、外部の温度計を使って人間が観測電圧vs温度の対応表を作ってそこから式を逆算するしかないのかねぇ…。

78k0s_adconv.jpgとにかく、現状では温度表示はできないので、残念だが観測電圧をそのまま出力させてみた。シリアル通信があると変数とか見れて良い良い。
1秒毎にAD変換結果を出力させています。counter値はループカウンタの値で、単なる動作確認用。addatが変換結果ですね。
480付近の値が取れておりまする。液晶ディスプレイの廃熱で暖めてみると450くらいまで落ちました。どうやら温度が高いと抵抗値が低くなるような特性を持っているらしいですね。あのサーミスタめが。


とりあえず今日はここまで。。。
次は温度表示までやってみようかな。

温度以外にも電圧でセンシングできるセンサ増設するとAD変換で値が取れるので、簡単なデータロガーとかが作れちゃうね! これはいい。
 
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
←No.16No.15No.14No.13No.12No.11No.10No.9No.8No.1No.6