MCU

コンテンツ

H8 MCUボードにイロイロつないでみる/1 - マザーボード?にMCUボードを乗せる
H8 MCUボードにイロイロつないでみる/2 - I/Oポートを増やす+温度センサーを付ける
H8 MCUボードにイロイロつないでみる/3 - ロータリーエンコーダをつけてみる
H8 MCUボードにイロイロつないでみる/4 - 赤外線リモコン受信素子をつけてみる
H8 MCUボードにイロイロつないでみる/5 - 周波数カウンタにしてみる
H8 MCUボードにイロイロつないでみる/6 - ・・・

MCUボードにイロイロつないでみる/2

大物・小物が親基板に付いた所で、次は、やはり配線してみましょう!ですね。
それで、LCDやらLED、SWなどをつなぐポート配分を考える事に。

・・・・・?・・・・・・・・・・?・・・・・・・・・・???

ん~、悩みました、結構な時間考えたのですが、、、

使えるポート、ほとんどないじゃん!!


無理すれば、つなげそうなのですが、タイマー入出力とかを後で使う予定なので、そういうポートを潰していくとダメなのですよね。
もうぅ~、入出力ポートはシングルチップモードで使うの前提ですかね!?
はい、あきらめてI/Oポートを増やしましょう…、という事で、以下の回路図の通りに出力ポートを増やす事にしました。

I/O回路図

手持ちの部品を利用する事を前提ですので、もっと良い回路があるかもしれませんが、今回はコレでいきます。
ちなみに、HC138をHC139にして、#RDも使うと、入力ポートも作れます*1

という訳で、親基板の上にICを配置して配線…、できあがったのが以下のものです。

第一段階のI/O基板

NICの処理はROMに焼いているので勝手に立ち上がっています。
何もないと、つまらないので、温度計測用のICをA/Dにつないで表示させてみました。
配線は、0.2φUEW線で以下のとおり(あまり考えずに…)行っています。

I/O裏面の配線


この先、ロータリーエンコーダ付けたりとかして、ちょっと、やってみたい事があります。

A/D変換のこと

A/D変換は、アナログを扱う専用のボードではないのでノイズなどで値がブレます。
よって、以下のように多めにサンプルして平均化する事にします。
実験した結果では、20サンプル位でも落ち着くみたいです。
ref電圧が5Vで10ビットだと4.8mV刻み*2となりますが、どう使ったものか…

#define AD_SAMPLE_NUM (50)

ulong adval;
short ii, wk;

adval = NULL;
for(ii = 0 ; ii < AD_SAMPLE_NUM ; ++ii) {
    wk = AD.ADCSR.BYTE;                     /* Dummy read               */
    AD.ADCSR.BYTE = 0x25;                   /* 00100101 ch5 Start       */
    while(AD.ADCSR.BIT.ADF == 0) ;          /* 変換終了を待つ           */
    adval += AD.ADDRB;                      /* 単純に加算していく       */
}
adval = (adval >> 6) / AD_SAMPLE_NUM;       /* 平均値にする             */
adval = (adval * 48875) / 10000;            /* mVに変換 48875=5V÷1023  */


追記、温度センサにアンプをつけてみた

10mV/℃の温度センサを4.8mVステップのA/Dにつないでも、0.5℃単位でしか温度変化がわからない。
それでは、あまりにもつまらないのでDCアンプを追加でつけてみた。
本当は、温度センサの出力を4.8倍して0.1℃単位にしたかったのだが、OP AMPがRail-to-railタイプではなかったので、5V電源では頑張っても3.75V程度までしか出力電圧が出なかった。
よって、50℃まで計る*3として、

10mV×50℃+600mV(0℃の時のセンサ出力電圧)=1100mV

なので、

3.75V÷1100mV=3.4倍

までは増幅できそうである。
まぁ、キリの良い所で、以下の通り3倍のアンプとする。

アンプ回路図

本来なら、センサ出力→3PINと出力1PIN→SIGへ抵抗を入れるべきと思われるが、趣味の工作なので省いた。

これで、30mV/℃の出力になり、1℃÷(30mV÷4.8mV)=0.16℃単位で計測ができるようになる。
もっとも、この温度センサは誤差が±3℃という事なので
「温度表示が0.2℃刻みで変化するようになった、でも、だから何?」
という程度である。

センサからの出力が変わったので、ソフトの変更*4をお忘れなく。

アンプ配線



H8 MCUボードにイロイロつないでみる/3

*1 今回は、入力ポート数は間に合っているのでやっていませんが、そのうち変更するかもしれません
*2 普通にノイズが乗ったりとかするので妥当な線と言えるかもしれません。欲を言えば12ビットなら良かったのに…と。
*3 温暖化で気温上がってますから(笑
*4 0℃の電圧600mV→1800mV、mVに変換する時、1/3にする
最終更新のRSS
Last-modified: 2010-07-27 (火) 17:39:13 3035日前
HTML convert time: 0.072 sec.