ALU,レジスタ,I/Oな,MOSFET,FPGA,CPU,手作り,フルディスクリート
オール・トランジスタ4bitコンピュータ CPU1738の製作
ALU,レジスタ,I/Oなどをトランジスタ・レベルで手作りし,さらにFPGAにも実装
[設計・開発] 別府 伸耕(リニア・テック)  [企画]ZEPエンジニアリング

より詳しい技術情報はこちらから↓
[技術解説記事]オール・トランジスタ4ビットCPU製作とFPGA開発[Vol.1 ノイマン型CPUの設計]
MZ-1738-DA1


 
 インテルやARMのCPUの進化に加え,GPU,量子コンピュータなど,新しいアーキテクチャのコンピュータが続々と誕生しています.また,RISC-VというオープンソースのCPU(命令セット)が誕生し,コストパフォーマンスの良い高機能な独自のSoCも多く誕生しています. そもそも「コンピュータ」とは何でしょうか?どのようにして動いているのでしょうか?また,どのようにして作られているのでしょうか?

 写真1に示すのは,CPUというブラック・ボックスを完全にオープンにしたフルディスクリートの4ビット・コンピュータ「CPU1738」です.1738個のMOSFET1070個のLED1804個のチップ抵抗が,現代の計算機のメカニズムを明らかにします.

写真1 フルディスクリート4ビット・コンピュータ CPU1738


 
 CPU1738の全回路図は,下記を参照してください.
 https://www.marutsu.co.jp/contents/shop/marutsu/datasheet/CPU1738_sch_ver1_0.pdf

 動画1は,CPU1738の動作中のビデオです.動画2は,CPU1738にモータ駆動回路とセンサ入力回路を追加して作った移動ロボットです.壁にぶつかるたびに向きを変えて前進したり,後進したりします.こんなにシンプルなCPUでも,自分で条件を判断しながら処理を進めることができます





動画1 1738個のMOSFETで作ったフルディスクリート4ビット・コンピュータ「CPU1738」


動画2 CPU1738で作った自律走行ロボット

[基礎知識]CPUのアーキテクチャ

 CPU1738は,現代の多くのCPUの基本要素をすべて備えています.以下,各部の名称と役割について簡単に説明します.

 CPUを1つのシステムと見なしたとき,その構造を表現するために「アーキテクチャ」(architecture)という言葉が使われます.通常,アーキテクチャと言った場合は回路の詳細まで踏み込まず,システムの「構成要素」とその「接続関係」を表すことが多いようです.

●ROM
 CPUが読み込むプログラムを格納する回路です.通常はCPUの外部にありますが,今回はCPUとセットで作ります.実体は組み合わせ論理回路とスイッチのかたまりです.

●A REG,B REG
 データを一時的に記憶する「レジスタ」です.今回は「Aレジスタ」(A REG)「Bレジスタ」(B REG)の2つを用意します.両方とも4bit幅です.実体はフリップフロップと組み合わせ論理回路です.

●ALU
 データの演算を行う「算術論理演算装置」(arithmetic logic unit: ALU)です.一般的なALUは加算や減算といった「算術演算」に加えて,NOT,AND,ORなどの「論理演算」,さらにデータの「ビット・シフト」といった機能を備えています.

 今回は論理演算を実装せず,加算と減算だけを実行できるALUを作ります.実体は組み合わせ論理回路です.また,演算結果に応じて変化する「フラグ」を記憶する部分はフリップフロップで作ります.

●PC
 ROMに対してアドレス信号を出力する,「プログラム・カウンタ」(program counter: PC)です.CPUはROMから1ステップずつ命令を読み込んで動作しますが,命令を読み出すROMのアドレスを管理するのがプログラム・カウンタの役割です.

 通常は出力値を“+1”する「カウンタ」として動作しますが,強制的に出力値を上書きすることもできます.実体はフリップフロップと組み合わせ論理回路です.

●ID
 ROMから読み込んだ命令を解読する,「命令デコーダ」(instruction decoder: ID)です.この回路の出力に応じて各ブロックの動作が決定されたり,データの経路が切り替えられたりします.実体は組み合わせ論理回路です.

●ステート・マシン
 通常,CPUが1つの命令を実行する動作はいくつかのステップに分かれています.CPUの動作ステップを管理し,全体の挙動を制御するのが「ステート・マシン」(state machine)あるいは「状態機械」の役割です.

 今回は,2つの状態を持つ単純なステート・マシンを作ります.実体はフリップフロップと組み合わせ論理回路です.

●I/O
 「I/O」は,CPUと外部回路の間のインターフェースを担います.

 今回は「出力ポート」(output port)として,4bitのレジスタを用意します.また,「入力ポート」(input port)として,4bit分のシュミット・トリガ入力を用意します.

 このI/O構成は,一般的なマイコンの「汎用入出力」(general purpose input/output: GPIO)と同じものです.

●バス
 今回のアーキテクチャには,複数のブロックが同じ配線を共有する「バス」(bus)が2つあります.“Bus 1”はALUの片方の入力に接続する経路で,“Bus 2”はALUの出力の経路となっています.なお,バスを伝わるデータの内容を表すために,「データ・バス」(data bus)や「アドレス・バス」(address bus)という言葉も使われます.

 バス上で複数のブロックの出力がぶつかる(ショートする)と,誤動作する上に回路が破壊される恐れもあります.そのため,通常はマルチプレクサ(MUX)で接続を切り替える方法が使われます.今回は論理ゲートの数を減らしたかったので,トライ・ステート・バッファを使って不要な出力をバスから切り離す設計にしています.

●スタック・ポインタ(今回は実装しない)
 CPU1738は備えていませんが,「割込み機能」を実装する場合は「スタック・ポインタ」(stack pointer)という回路が必要になります.

 動作中に割込みが発生した場合,CPUはそれまでの処理を中止して,あらかじめ用意されている「割込みハンドラ」と呼ばれるプログラムにジャンプします.これは,プログラム・カウンタの内容を割込みハンドラの最初のアドレスに上書きする操作に相当します.

 割込みハンドラの処理が終了したら,CPUは元の処理に復帰します.復帰するためには,もともと実行していたプログラムのアドレスを記憶しておく必要があります.このために用いられる「アドレスを保存する回路」が,「スタック・ポインタ」です.なお,割込み処理の途中で他の割込みが発生する「多重割込み」にも対応するために,スタック・ポインタは最後に保存した値が最初に読み出される仕組み(これをスタックという)を備えています.

 実体はフリップフロップと組み合わせ論理回路です.

1738個のMOSFETで動く4bitコンピュータ“CPU1738”誕生

●コンピュータの心臓部を作る

 「組み合わせ論理回路」および「順序回路」を使って,コンピュータの心臓部である「中央処理装置」(central processing unit: CPU)を作ります.このCPUは非常に単純なものですが,本質的な部分は一般的なCPUやマイコンと同じです.

●すべてMOSFETで作る
 これから作るCPUでは,ICを一切使いません.付録基板に含まれる論理ゲートだけでCPUを構築します.したがって,使用する半導体素子はMOSFETとダイオード(LED含む)のみとなります.次の表に,実際に使用する論理ゲートの種類と個数を示します.使用する論理ゲートは336個で,ここに含まれるMOSFETは合計1738個です.

●CPUの設計方針
 これから作るCPUの設計方針を,次のように定めます.

  (1)付録基板の論理ゲートだけを使う
  (2)処理の効率よりも,回路の分かりやすさを優先する
  (3)トランジスタ数をできる限り減らす

 私がこのCPUを試作したときは,すべての部品を手作業で半田付けしました.これはちょっとだけ大変な作業だったので,設計中に上記の方針(3)を定めました.とはいえ,回路の分かりやすさを優先するために,あえてトランジスタ数が増えるような設計をしている箇所もあります.

CPU1738の作り方

■1. 工具を準備する

・はんだごて(図1のような温度制御機能付きのもの)
・はんだ

図1 はんだごて
本体はHAKKO"FX-951",こて先はHAKKO"T12-B"

・フラックス(例えば,図2のようなもの)
・ピンセット(先の細い,図3のようなものがおすすめです)

図2 フラックスの例
HAKKO "FS-200"

図3 ピンセットの例
HOZAN "P-891"

・ルーペあるいは双眼実体顕微鏡(10倍から40倍程度.例えば図4のようなもの)
・やすり(小基板の端面を整えるために使います.無くても構いません)
・フラックス・リムーバ(例えば図5のようなもの.無くても構いません


図4 ルーペの例
モノタロウ "L-15X"

図5 フラックス・リムーバの例
HAKKO "017"

・キムワイプ(フラックスを拭き取るために使います.無くても構いません)
・プラスドライバー
・ペンチ
・ニッパ
・はさみ
・テスタ(抵抗レンジがあるもの.ダイオードの極性チェックに使います)
・マスキング・テープ(部品の仮止めに使います.例えば図6のようなもの)

図6 マスキング・テープの例
モノタロウ 6mm幅

■2. テスタによるダイオードの極性確認方法

●ダイオードは左右対称な形状で,極性がある
 本キットで使用するチップ部品には,抵抗,ダイオード,トランジスタ(MOSFET)があります.このうち,抵抗には極性がないので取り付け方向に指定はありません.また,トランジスタはパッド形状が非対称なので極性を間違えて取り付ける可能性は低いと考えられます.
 これに対して,ダイオードは左右対称な形状にもかかわらず極性があるので,誤って逆方向に取り付けてしまう可能性があります.基本的にはカソード・マークを目視確認して取り付けますが,ここではテスタを使って電気的に極性を確認する方法を紹介します.

●ディジタル・テスタの場合
 ディジタル・テスタの場合は,図7のように「アノードにテスタのプラス端子,カソードにテスタのマイナス端子」を接続したときに抵抗値が小さくなります.これは,ダイオードの順方向に電圧が印加されるためです.

図7 「ディジタル・テスタ」の抵抗測定モードを使ってLEDの極性を判定する方法

●アナログ・テスタの場合
 アナログ・テスタの場合は,図8のように「アノードにテスタのマイナス端子,カソードにテスタのプラス端子」を接続したときに抵抗値が小さくなります.これは,アナログ・テスタの抵抗測定モードではマイナス端子の電位がプラス端子よりも大きくなっているからです(抵抗レンジとその他のレンジ(電圧,電流)では,測定値の大きさに対するメータの針の動き方が逆になるため).

図8 「アナログ・テスタ」の抵抗測定モードを使ってLEDの極性を判定する方法



■3. 電源

●電池を使う場合
 本キットの標準電源電圧は3V です.「CLOCK & STATE MACHINE」基板に単3乾電池2本用の電池ボックスを取り付けて,電源として使用してください.

●AC-DCアダプタを使用する場合
 「I/O」基板には,AC-DCアダプタ用のジャックを取り付けられます.AC-DCアダプタを使用する場合は,3.3V 品を推奨します.5(V) 品も使用可能です(電源電圧を大きくした場合に最初に故障するのは発振回路の部分です).

●電源スイッチ
 「CLOCK & STATE MACHINE」基板には,電池の経路の電源スイッチが付いています.また,「I/O」基板にはAC-DCアダプタの経路の電源スイッチが付いています.両方のスイッチが同時にON状態にならないように注意してください.

●動作確認用の電源端子
 各基板への電源供給は,基板間を接続するフラット・ケーブルに含まれる電源ラインを通して行われます.これとは別に,各基板には単体で動作確認をするための電源端子がついています.図9のようにシルクで“VDD”および“GND”と書かれている箇所にスズメッキ線(あるいは部品のリードの余りなど)をはんだ付けして使用してください.あくまでも動作確認用なので,必須ではありません.

図9 各基板の動作確認用電源端子の使い方


■4. 動作チェッカを作る

●部品リスト
 最初に「動作チェッカ」を作ります.基板上のシルクと部品の対応を表1に示します.

表1 「動作チェッカ」基板のシルク表示と実装部品リスト

●完成図
 完成した動作チェッカを図10に示します.電源電圧は3(V) で使用してください.
 このチェッカに取り付けた論理ゲート(ディジタル回路ブロック)が“1”を出力した場合は,“Y”のLED(緑)が光ります.また,論理ゲートが“0”を出力した場合は“Y??”のLED(青)が光ります.

図10 組み立てた「動作チェッカ」

■5. 論理ゲート基板(ディジタル回路ブロック)を作る

●基板の数を確認する
 「ディジタル回路ブロック」は,いくつかの基板が面付けされた形になっています.手で折り曲げて,切り離してください.端面をやすりで整えると綺麗に仕上がります.
 表2に,各基板の個数を示します.実際にCPUで使用するのは,「使用数」の欄に書かれている個数です.面付けの都合により,いくつかの基板が余ります.余った基板は予備として扱ってください.

表2 「ディジタル回路ブロック」の基板リスト

●各基板に実装する部品
 「ディジタル回路ブロック」の基板には,MOSFET(NMOSとPMOS),LED,抵抗,ピン・ヘッダを実装します.実装部品の種類は,すべての基板で共通です.これを表3に示します.

表3 「ディジタル回路ブロック」に実装する部品

●手順1:表面のパッドにはんだを付ける
 以下,「ディジタル回路ブロック」の組み立て手順を説明します.手順はすべての基板で同じです.ここでは「2 NAND」基板を例にして説明します.
 まずは図11のように,1つの部品あたり1箇所ずつパッドにはんだを付けます.

図11 表面にはんだを付ける

●手順2:MOSFETをはんだ付けする

 シルクで“P”と書かれている箇所にはPMOSの“BSS84”を取り付けます.シルクで“N”と書かれている箇所にはNMOSの“BSS138”を取り付けます(図12).
 MOSFETを取り付けるときは,先に1端子だけはんだ付けして仮止めし,続いて残りの2端子をはんだ付けする方法がおすすめです.
 はんだ付けした後に位置を調整したいときは,すべての端子にフラックスを塗り,MOSFETの端子全体が埋もれるくらい多めにはんだを付けます.この状態ではんだを溶かすと,表面張力によってMOSFETが動いて各端子がパッドの中心に移動します.

図12 MOSFETをはんだ付けする

●手順3:LEDをはんだ付けする
 図13のように,LEDをはんだ付けします.入力側(X1,X2)は赤色のLED,出力側(Y)は緑色のLEDを使用します.「基板の下側」にカソードがくるようにはんだ付けしてください.LEDの極性は,図14に示すとおりです.なお,LEDの品種は変更される場合があります.ご了承ください.

図13 LEDをはんだ付けする

図14 LEDの極性

●手順4:裏面のパッドにはんだを付ける
 図15のように,基板の裏面にも1部品あたり1箇所ずつはんだを付けておきます.
 裏面の作業をするときは,図16のように「動作チェッカ」を治具として利用すると便利です.なお,図16ではピン・ヘッダを挿入して基板を固定していますが,この時点ではまだピン・ヘッダをはんだ付けしません.

図15 裏面のパッドにはんだを付ける

図16 「動作チェッカ」を基板固定用の治具として利用する

●手順5:抵抗をはんだ付けする
 シルクで“1 k”と書かれている箇所には1kΩのチップ抵抗を取り付け,“100 k”と書かれている箇所には100kΩのチップ抵抗を取り付けます(図17).

図17 抵抗をはんだ付けする

●手順6:ピン・ヘッダをはんだ付けする
 表面・裏面両方の部品実装が完了したら,図18のようにピン・ヘッダをはんだ付けして完成です.このときも,「動作チェッカ」を治具として使用します.

図18 ピン・ヘッダをはんだ付けする

●間違ってはんだ付けした部品を取り外す場合
 取り外す部品のすべての端子にフラックスを塗り,はんだを多めに流し込みます.部品全体がはんだで埋まる状態にしても構いません.この状態ではんだごてを当てて,そのままゆっくりと持ち上げます.すると,はんだの表面張力によって部品と溶けたはんだが一緒にはんだごての先についてきます.ピンセットでこて先から部品を回収します.

●大量にはんだ付けする場合
 本キットには,大量の「ディジタル回路ブロック」基板が含まれています.効率良く作業を進めたい場合は,同じ工程をまとめて実行することをおすすめします(表面の予備はんだ作業をまとめてやる,NMOSを取り付ける作業をまとめてやる,など).

●動作チェックをする
 「ディジタル回路ブロック」の基板が完成したら,「動作チェッカ」を使って動作確認をしてください.下記に,各論理ゲートの真理値表を示します(表4).もし真理値表のとおりに動作しない場合は,端子の接触不良か部品の取り付け方向ミスが考えられます.

表4 各論理ゲートの真理値表


■6. CLOCK & STATE MACHINE 基板を作る

●部品表
 表5に,シルクと部品の対応表を示します.

表5 CLOCK & STATE MACHINE基板のシルクと部品の対応表

●抵抗,コンデンサ,LED,ピン・ヘッダを取り付ける
 表5にしたがって,抵抗,コンデンサ,LED,ピン・ヘッダなど,背の低い部品を先に取り付けます.

●ピン・ソケットを取り付ける
 続いて,ピン・ソケットを取り付けます.ピン・ソケットは1つ1つはんだ付けしても構いませんが,次の手順でまとめて取り付けることをおすすめします.

 1. ピン・ソケットをすべての箇所に挿入する
 2. 図19のようにマスキング・テープで仮止めする
 3. 各ピン・ソケットの中央のピンだけはんだ付けする
 4. マスキング・テープを外す
 5. 1つ1つのピン・ソケットの角度を調整する(はんだを溶かしながら)
 6. すべての端子をはんだ付けする

 ピン・ソケットのパッドのうち,GNDに接続するパッドは熱容量が大きいのではんだが付きにくくなっています.念入りにはんだを流し込むようにしてください.

図19 ピン・ソケットをマスキング・テープで仮止めしてはんだ付けする

●スイッチを取り付ける

 トグル・スイッチおよびプッシュ・スイッチを取り付けます.プッシュ・スイッチには向きがあるので注意してください.基板をシルクの文字が読める向きに置いたとき,プッシュ・スイッチの「押したときに導通する2端子」が基板の上側にくるように取り付けてください(図20).念のため,テスタでチェックしてください.

図20 プッシュ・スイッチの取り付け方向

●電池ボックスを取り付ける
 電池ボックスを基板にねじで固定します.ねじ穴は3つあります.使用する穴の位置は自由に選択してください.
 電池ボックスを固定したら,電池スナップを基板にはんだ付けします.

●「ディジタル回路ブロック」を取り付ける
 シルクに合わせて,「ディジタル回路ブロック」をピン・ソケットに挿入します.

●動作確認
▲リセット
 CLOCK & STATE MACHINE基板単独で,電源を入れてください.続いて,ピン・ヘッダ“J1”の“N_HALT”端子を“1”(VDD電位)にしてください.この状態で“RESET”のプッシュ・スイッチを押すと,緑色の“RESET”LEDが光り,黄色の“HALT”LEDが消えた状態になることを確認してください.
▲クロックの“AUTO”モード
 “SW1”,“SW2”,“SW3”をすべてON(上側)にします.このとき,発振回路の部分が約2Hzで動作することを確認してください.ここで,“CLOCK SELECT”のスイッチを“AUTO”側にすると,赤色の“CLOCK”LEDが点滅することを確認してください.また,クロックの2倍の周期で青色の“STATE”LEDが点滅することを確認してください.
▲クロックの“MAN”モード
 “CLOCK SELECT”スイッチを“MAN”側にして,“CLOCK”のプッシュ・スイッチを押すと,それに合わせて赤色の“CLOCK”LEDが光ることを確認してください.
▲“HALT”動作の確認
 ピン・ヘッダ“J1”の“N_HALT”端子を“0”(GND電位)にしてください.この状態でクロックを入れると,黄色の“HALT”LEDが点灯することを確認してください.

●クロック周波数の切り替え
 クロック周波数は以下のように変更できます.
 ・SW1,SW2,SW3 すべてOFF:約200kHz
 ・SW1だけON:約200Hz
 ・SW2だけON:約20Hz
 ・SW3だけON:約2Hz

 上記以外のスイッチ設定にした場合は,それぞれの周期の足し合わせになります.

■7. ROM基板を作る

●部品表
 表6に,基板上のシルクと部品の対応表を示します.

表6 ROM基板のシルクと部品の対応表

●表面実装部品のパッドに予備はんだを付ける
 「ディジタル回路ブロック」を作るときと同じ要領で,表面実装部品(R1-R136,D1-D256)のパッドにはんだを付けておきます.はんだは,1つの部品あたり1箇所だけ付けるようにします.

●ショットキ・バリア・ダイオード(D129からD256)を取り付ける
 シルク番号D129からD256の位置には,ショットキ・バリア・ダイオード(BAT43XV2)を取り付けます.このダイオードには,図21に示すようにカソード側に白線が付いています.基板上をシルクが読める向きに置いたとき,カソード・マークが基板の右側になるように取り付けます.

図21 BAT43XV2の極性

 BAT43XV2を取り付けるときは,図22のように1ブロック(8個)のダイオードの極性を揃えて並べておき,まとめてはんだ付けすることをおすすめします.ダイオードの極性確認は,図23のようにルーペ(あるいは顕微鏡)を使って目視するか,テスタを使って行ってください.
 はんだ付け後も,念のためテスタを使って極性確認をしてください.なお,はんだ付けの後はフラックスがダイオードの表面に付着するため,目視による確認が難しくなります.フラックスを取り除きたい場合は,フラックス・リムーバを使用してください.

図22 BAT43XV2は,先に極性をそろえて並べてから一度に取り付けると良い

図23 基板上に並べたBAT43XV2の極性をルーペで確認しているようす

●赤色LED(D1からD128)を取り付ける

 LEDをはんだ付けします.シルクの文字が読める向きに基板を置いたとき,基板の「上側」のパッドがカソードになります.

●1kΩ抵抗(R1からR128)を取り付ける
 1kΩのチップ抵抗を取り付けます.

●10kΩ抵抗(R129からR136)を取り付ける
 10kΩのチップ抵抗を取り付けます.

●DIPスイッチを取り付ける
 DIPスイッチを,文字が読める向き(スイッチを上側にしたときに“ON”になる向き)に取り付けます.DIPスイッチの一番右側のビットがLSB(最下位ビット)です.

●ピン・ヘッダ,ピン・ソケット,ディジタル回路ブロックを取り付ける
 残りのピン・ヘッダおよびピン・ソケットをはんだ付けします.最後に,シルクに合わせて「ディジタル回路ブロック」を取り付ければ完成です.

■8. I/O基板を作る

●部品表
 表7に,基板上のシルクと部品の対応表を示します.

表7 I/O基板のシルクと部品の対応表

●抵抗,コンデンサ,LED,ピン・ヘッダ,DCジャックを取り付ける
 表7に従って,抵抗,コンデンサ,LED,ピン・ヘッダ,DCジャックを取り付けます.

●ピン・ソケットおよび「ディジタル回路ブロック」を取り付ける
 ピン・ソケットをはんだ付けし,シルクに従って「ディジタル回路ブロック」を取り付けます.
 最後に背の高いトグル・スイッチを取り付けて,完成です.

■9. Program Counter基板を作る

●ピン・ヘッダ,ピン・ソケット,「ディジタル回路ブロック」を取り付ける
 ピン・ヘッダとピン・ソケットを取り付けます.ピン・ソケットを取り付けたら,シルクにあわせて「ディジタル回路ブロック」を取り付けてください.

■10. ALU基板を作る

 ピン・ヘッダとピン・ソケットを取り付けます.ピン・ソケットを取り付けたら,シルクにあわせて「ディジタル回路ブロック」を取り付けてください.

■11. A Register基板を作る

 ピン・ヘッダとピン・ソケットを取り付けます.ピン・ソケットを取り付けたら,シルクにあわせて「ディジタル回路ブロック」を取り付けてください.

■12. B Register基板を作る

 ピン・ヘッダとピン・ソケットを取り付けます.ピン・ソケットを取り付けたら,シルクにあわせて「ディジタル回路ブロック」を取り付けてください.

■13. Instruction Decoder基板を作る

 ピン・ヘッダとピン・ソケットを取り付けます.ピン・ソケットを取り付けたら,シルクにあわせて「ディジタル回路ブロック」を取り付けてください.

■14. 回路図

 下記を参照ください.
 https://www.marutsu.co.jp/contents/shop/marutsu/datasheet/CPU1738_sch_ver1_0.pdf

■15. 各基板のレイアウト

 図24に,各基板のレイアウト概要を示します.回路図と合わせて,動作確認の参考にしてください.

図24 各基板のレイアウト概要

■16. 全体を接続する

●平面に展開する場合
 各基板のピン・ヘッダ付近のシルクに従い,各基板を接続します.全体の接続関係を図25に示します.

図25 全体の接続関係

●上下方向に積層する場合
 スペーサを使って基板を積み重ねる場合は,図26のような順序にします.

図26 8枚の基板を縦に積層する場合の順序

■17. プログラム例

●命令一覧
 表8に,CPUの命令一覧を示します.

表8 CPUの命令一覧

●加算プログラム(ループなし)
 リスト1に,“1 + 2 + 3 + 4 +5 = 15”を計算してOUTレジスタに出力するプログラムを示します.

リスト1 加算プログラム(ループなし)

●加算プログラム(ループあり)
 リスト2に,“1 + 2 + 3 + 4 +5 = 15”を計算してOUTレジスタに出力するプログラムを示します.このプログラムを実行するときは,INポートとOUTポートを6芯の「コネクタ付きケーブル」で接続してください.

リスト2 加算プログラム(ループあり)
このプログラムを実行するときは,INポートとOUTポートをケーブルで接続する

●乗算プログラム
 リスト3に,“4×3=12”を計算してOUTレジスタに出力するプログラムを示します.このプログラムを実行するときは,INポートとOUTポートをケーブルで接続してください.

リスト3 乗算プログラム
このプログラムを実行するときは,INポートとOUTポートをケーブルで接続する

●除算プログラム
 リスト4に,“9÷2=4 あまり 1”を計算するプログラムを示します.商の“4”はOUTレジスタに,剰余の“1”はAレジスタに格納されます.
 このプログラムを実行するときは,INポートとOUTポートをケーブルで接続してください.

リスト4 除算プログラム
このプログラムを実行するときは,INポートとOUTポートをケーブルで接続する

■18. モータ・ドライバ基板を作る

●部品表
 表9に,基板上のシルクと部品の対応表を示します.

表9 モータ・ドライバ基板のシルクと部品の対応表

●完成図
 すべての部品をはんだ付けした状態を図27に示します.この回路の電源は3Vです.単3電池2本の電池ボックスを接続して使用してください.

図27 完成したモータ・ドライバ

●制御端子
・M1 ON/OFF, M2 ON/OFF:モータのON/OFFを制御する端子です.
・M1 F/B, M2 F/B:モータの正転・反転を制御する端子です.

■19. ロボット部分を作る

●ギヤボックスを組み立てる
 「ウォームギヤーボックスHE」を2つ組み立てます.ここではギヤ比を「336:1」にするものとします.後でタイヤと接続するために,図28のようにストッパーがついている出力シャフトを選びます.

図28 ウォームギヤーボックスHEを組み立てるギヤ比は336:1とする

●タイヤを組み立てる

 「スポーツタイヤセット」を組み立てます(図29).軸受けは,「ウォームギヤーボックスHE」のストッパーと噛み合うものを選んでおきます.

図29 スポーツタイヤセット

●ボールキャスターを組み立てる
 「ボールキャスター」を組み立てます(図30).今回は2つとも使用します.

図30 ボールキャスター

●シャーシに各パーツを取り付ける
 図31のように,各部品をシャーシ(ユニバーサルプレートL)に取り付けます.
 ・スペーサ(25mm):表面.シャーシの四隅の穴に取り付けます.
 ・ボールキャスター:裏面.スペーサと干渉しないように取り付けます.
 ・ギヤボックス:裏面.スペーサと干渉しないように取り付けます.
 ・モータ・ドライバ基板:表面.ギヤボックスと干渉しないように取り付けます.
 ・電池ボックス:表面.ギヤボックスと干渉しないように取り付けます.
 ・ユニバーサルプレート(小):表面.モータ・ドライバ基板およびボールキャスターと干渉しないように取り付けます.

図31 各部品をシャーシに取り付ける

●マイクロ・スイッチを取り付ける
 マイクロ・スイッチをユニバーサルプレート(小さい方)の先端に取り付けます(図32).取り付けに使用する金具は,L字の金具と同じ袋に入っています.

図32 金具とM2ネジを使ってマイクロ・スイッチを固定する

●マイクロ・スイッチを縦に取り付ける場合(任意)
 L字の金具を使うと,図33のようにマイクロ・スイッチを立てた状態で取り付けることができます.お好みで選択してください.

図33 L字の金具を使うとマイクロ・スイッチを立てた状態で固定できる

●モータをモータ・ドライバ基板に接続する
 左右のモータを,モータ・ドライバ基板の“M1_A”,“M1_B”および“M2_A”,“M2_B”端子に接続します.
 モータの極性は,“M1 ON/OFF”および“M2 ON/OFF”に“1”(VDD電位)を印加したときに車体が前に進むようにしてください.

●マイクロ・スイッチをモータ・ドライバ基板に接続する
 ケーブルを使って,マイクロ・スイッチをモータ・ドライバ基板の“SW”端子に接続します.マイクロ・スイッチの端子は,「押したときにON」になる2端子を使用してください.モータ・ドライバ基板側の“SW”端子には極性はありません.

●CPUとモータ・ドライバ基板を接続する
 ロボットのシャーシ部分が完成したら,シャーシ部分とCPU本体を合体させます(図34).
 I/O基板の穴とシャーシ側のスペーサのネジ部分の位置を合わせて挿入し,スペーサ用ナットで固定してください.続いて,6芯の「コネクタ付きケーブル」でモータ・ドライバとCPUのI/Oポートを接続します.モータ・ドライバ基板のモータ制御端子はCPUの“OUTポート”に,モータ・ドライバ基板のスイッチ端子はCPUの“INポート”に接続してください.

図34 モータ・ドライバ基板とCPU本体を2本のケーブルで接続する


■20. ロボットのプログラム例

●自動方向転換ロボットを作る
 ロボットは,OUTポートにデータを出力することでコントロールできます.ここでは例として,図35のような動作をする「自動方向転換ロボット」のプログラムを紹介します(リスト5).

図35 「自動方向転換ロボット」の動作

リスト5 自動方向転換ロボットのプログラム
クロック周波数は20Hzを選択.ウォームギヤーボックスのギヤ比を"336:1"とした場合

Ⓒ2020 Nobuyasu Beppu

アクセスカウンターアクセスカウンタ

ページトップへ