マルチマイコン制御 ~ハードウェア編~

試作概要

一つのマイコンでは入出力ポートに限界があり、点数を増やしたい場合があります。そこでUSARTポートを利用したシリアル通信で複数のマイコンと通信するライブラリを作りました。
USARTの信号は変換基板を使うことでRS-232Cとして利用でき、RS-485への変換なども可能となります。
速度は115200bpsとこの時代から考えると非常にロースピードですが、多くのスイッチや表示灯を使用する場合など、機器内の省配線には大きく貢献できそうです。

この試作では様々なシステムに展開することを想定し、ライブラリ化しており、なるべく簡素にまとめて関数を数か所追加するだけで実装できるようになっています。尚、ライブラリを含むサンプルソフトはソフトウェア編で記述とします。

試作全体の仕様

マイコンはすべてZT-PIC18F46K2201を使用していてマスター側とスレーブ側の2種類に分かれます。
設定に関してはスレーブ側に入出力とアドレスの項目のみで、どのアドレスのマイコンが出力なのか、入力なのかはマスター側のプログラム上で記載する必要があり、スレーブマイコンの設定はそれに合わせる必要があります。
マスター側に送っている信号は面実装タイプのタクトスイッチ又はLEDが接続されている20点でプロトコル内では1バイトのアドレスと4バイトのデータを送信しています。プロトコル上では未使用部分がありますのでアナログ値を追加するなども可能です。(面倒なのでやってませんが)つまりデータ量は4バイトなので32ビットの信号のうち20ビットしか使用しておらず、12ビット分は追加してもレスポンスは変わらず使用できることになります。

マスターマイコンの仕様

マイコンは上に書いた通りZT-PIC18F46K2201を使用。78M05のレギュレータを実装しているが今回の電源は5Vとしているため関係なく、5Vラインにそのまま電源を供給して実験しました。

スレーブ側の電源はマスター側のUSARTからの供給としたため、裏面のジャンパーはシリアル通信で使用するUSARTの電源を短絡。
ほか、PORT3の1pinも短絡されているが今回は使用していないため関係はありません。

マスターマイコンではスレーブ側のマイコンが接続されているかの管理とスレーブマイコン同士のデータの受け渡ししか行っていないためスイッチ基板とPORT3の配線は余計だが手元に転がっていたのでこれを使用。
出ている配線は5V入力用の電源ジャックとシリアル通信を行う4ピンのストレートのみ。
LCDは秋月電子のAE-AQM1602A(KIT)を使用。

スレーブマイコンの仕様

スレーブのマイコンもマスターと同じくZT-PIC18F46K22を使用。レギュレータは使用しないため無実装。電源はシリアルからの供給としているためUSARTの電源を短絡しています。

設定時にはマスターと同じAE-AQM1602Aとスイッチを取り付けて行います。入出力の設定とアドレスの設定が完了すると使いませんのでプルアップ配線したXHコネクタをスイッチの代わりに接続します。
設定の詳細については後記。

ユニバーサル基板の使い方が間違っているというど正論は不要です。いつもユニバーサル基板を使うときは実装と配線を同じ面に行っています。電源だけ裏に回す事も気が向いたらやりますが・・・。

下の写真は出力側の基板でPORT3とPORT4のピンのマスターからの制御ピンすべてをLEDに接続しています。

入力側も同じく設定が完了するとプルアップ抵抗のついたXHコネクタを突き刺して完了。

入力に関しては面実装のタクトスイッチを用意しており、プルアップ接続しています。解放でHi、押してLowとなります。

分岐基板の仕様

マスター側のシリアル信号を8個のシリアルポートに並列接続し、スレーブのTXラインに関してはほかのスレーブマイコンの信号の影響を避けるため1N4148を追加しています。
基板に関しては秋月電子のパワーグリッド・ユニバーサル基板AE-C3 RoHSを使用しています。
各コネクタ部分には5Vを赤、GNDを黒(無着色)、信号線を白に色分けしています。

この基板の場合、電源は近くのパッドと短絡するだけで完了するのでとても便利です。60円高くてもその効率を考えると十分に価値はあります。

配線はラッピング線?(言い方古い?)鈴メッキ線を使用しています。

スレーブ基板と配線は少しごちゃつくので廣杉計器のBSB-310Eでジョイントしました。USARTのケーブルはすべてストレート接続です。

電源ON

スレーブマイコン8個とマスターマイコン1個、うちスレーブマイコンの半分は出力としてすべてにLEDを接続しています。

消費電流は待機状態で150mA以下。LEDをすべて点灯しても計算上では場合550mA以下。
スレーブマイコンをすべて出力に置き換えた場合、950mAとなり、このテスト環境では1A出力のADアダプターで行けそう。もちろん長期的にテスト環境を維持したい場合は2A出力のACアダプターを使用することが望ましい。

マスターのLCDにはスレーブのマイコンがつながっているかの表示のみ。
電源が入ったままでも接続、切断はOKなので試してみるとよくわかるが物理的につながって通信の応答がある状態で「1」となり、接続など何らかの問題があって通信できない場合は「0」と表示される。
1が8個あるのはアドレス設定1~8のスレーブマイコンがすべて通信できているという事になり、アドレス番号1のスレーブマイコンが無反応の場合、一番左の数字が「0」となる。

LCD表示の右下の1文字は常に表示が変化し、マスターマイコンがフリーズしていない事を意味する。

ちなみにマイコン基板自体にも唯一基板実装されているLEDが1秒間隔で点滅しているのもマイコンがフリーズしていない事を意味し、スレーブ側ではこのLEDで判断する。

動作確認

細かい動作に関してはソフトウェア編で後記するとして、簡単に動きをまとめることとします。

全てのスレーブマイコンのデータはマスター側にまとめられ、入力に設定されたマイコンの入力信号はそのまま出力に設定されたマイコンに送られていて、スイッチを押すごとに出力側のLEDが点灯し、そのレスポンスを確認することができます。
つまり入力側マイコン(アドレス1)のPORT3の一つ目に接続されたスイッチの信号はマスターマイコンを介して出力側マイコン(アドレス5)のPORT3の一つ目に渡され、スイッチの動きは連動しています。同じようにすべてのスイッチは出力側のLEDと連動しており、入力側と出力側の動作確認ができます。

続いてソフトウェア編をご覧ください。