3.2 もう少し踏み込んで回路化してみる 物理量のやりとり 13 簡単に言ってしまえば、「れ回目に地面と当たった時の物理量を、れ十 1 回目の演算の初 期値とする」をやればいいのです。 そこで、プロック A の速度をプロック B の初期速度入力に、プロック B の速度をプロッ ク A の初期速度入力にたすき掛けのような接続します。この速度を受け渡すときに減衰率 /\ を乗じたものを初期速度として受け渡せば、高さがだんだん低くなる演算が可能になり ます。 演算の切り替え 地面との衝突を判定した場合、演算フ。ロックを切り替えるような制御回路が必要になり ます。プロック A が演算中、地面との衝突を判定した場合、プロック A は演算を停止し、 プロック B が演算を開始するような制御になれば良いのです。 こまでのやりとりを回路化したものが、図 3.2 になります 。こでの、のとし て別々に演算していた結果を加算器で合成させて、″ ( のとして出力させています。仮にプ ロック A が演算中 ( (t) が結果を出力し続けている状態 ) だった場合、プロック B は の = 地面座標で演算を停止していますから、演算結果がおかしくなることはありま せん。 3.2.2 演算の制御回路を考えてみる 演算している状況を図 3.3 のタイムチャートで表してみました。初期値設定 ( 高さ、ボー ルの初速など ) を行い、ボールを打っ演算を行うまでは保持 ( 待機 ) しておきます。 跳ねる動作を行っている時、プロック A が演算しているときは、プロック B はプロック A からの物理量 ( この場合は速度 ) に常にもらい続けている状態、すなわち追従している 状態です。 地面との衝突と判定した場合、プロック B に演算が切り替わり、プロック A は追従モー ドに切り替わります。 この動作を繰り返せば理論的には跳ねている動作が実現しますが、こで注目すべきな のは、プロック A とプロック B の動作は常に反対のことを行っていることです。したがっ て、「地面との衝突を検知したら、演算モードと追従モードが入れ替わる」ような制御回路 を組めばよいということがわかります。
6 あります。 第 2 章テニスゲームを作ろう ! ( 1 ) サーブを打ち込む 0 ( 3 ) ポールを打ち返す ( おさらい ) 図 2.1 ( 4 ) コート外 ( 画面外 ) の判定 ( 2 ) 地面に着いたら跳ねる テニスゲームを作るには ? ( 4 ) コート外 ( 画面外 ) に飛び出した場合、 ( 1 ) の状態に戻る。この時のサープ権の移行も 行っ。 この一連の動作を、アナログコンピュータだけでやってしま います ! ! ー 0 っというと、なんか夢みたいな話ですね w 。
4.2 回路を設計する 17 XI SW3 SW2 SWI XO テコーダ回路 ( 率直に設計した Ver. ) 図 4.2 XI 10 SW3 1 SW2 12 13 12 13 11 11 SW 1 器 PI テコーダ回路 (NAND ゲート Ver. ) 図 4.3 1 XO が成り立ちます。 これらを率直に回路に落としこむと、図 4.2 のようになります。 先ほど SW2 は XI と同じと述べたのでそのまま繋いでも良いのですが、入力と出力との 間に一度何かしらのバッフアを入れたいので、 SWI のロジックを組むために使った NOT ゲート ( インバータ ) に、もう一度 NOT ゲートを繋げて元に戻したものを出力させてい ます。 このままでも問題ないのですが、わざわざ AND ゲートと NOT ゲートを用意するのは 面倒です。そこで、これを NAND ゲートのみで構成して使う部品の種類を節約します。 図 4.3 に完成したロジック回路を示します。 4.2.2 地面との判定 地面との判定にはコンパレータを用います。地面に相当する電圧と比較して、ボールの 高さが地面より下回った場合、 ' 1 ' が出力されるようにします。図 4.4 にコンパレータ回路 を示します。 コンパレータには LM311 を使用します。 LM311 は出力がオープンコレクタのコンパ レータですが、エミッタ側 ( 1 番ヒ。ンに相当 ) もオープンになっています。 1 番ピンを GND
21 第 5 章おわりに 今回は跳ねるボールというのを題材に、アナログ回路とディジタル回路混在のハイプリッ ド・アナログコンヒ。ュータを解説していきました。 ずっと跳ねつばなしのボールというのも、なんかシュール過ぎではありますが w 、跳ね る動作というのを模擬できてのではないかと思われます。 このアナログコンヒ。ュータシリーズの題材とした素のゲーム『 TennisforTwo 』ですが、 発表された 1958 年の翌年の 1959 年には「月面でテニスをした場合を模擬、すなわち重力 加速度を 6 分の 1 にして演算させたらどうなるか」なんてことをしながら解説していたと 言われています。そういう意味合いでは、似たり寄ったりなことをしているのかなあとか . じ、ったり もうーっ Wikipedia を読んでいて驚いたのが、本家『 Tennis for Two 』は 3 週間ほどで 製作してしまったということです。まあ元々アタマの良い人が作ったものでもありますし、 ミサイルの弾道計算等に使用していた本物のアナログコンヒ。ュータがあったことを考える と単純に比較はできませんが、私は随分のんびりやってるなあと思います w ( 何よりゼロ から作ってますからという言い訳で w ) 。 今回跳ねるボールをシミュレーションできたことで、アナログコンピュータ部分はほぼ できたと言ってよいでしよう。次の課題の打ち返すという動作は、主にェ方向がメインに なる演算ですが、理屈からすれば、方向を変えるだけいけそうです。 あとはシーケンスをしつかり練りなおした上で、ロジック回路を組みたいところです。 次回はもしかしたらディジタル回路がメインになっていくかも ? 。 それではまた次回もお付き合いのほど、よろしくお願いいたします。
15 第 4 章跳ねる回路を製作しよう 回路構成は決まったので、この章では回路の組み立て、実験までを行っていこうと思い ます。 4.1 仕様のおさらいと追加 5 ページで述べた仕様を、一部抜粋しておさらいします。 ・オペアンプの電源電圧は土 5 [ V ] で使用します。 ・テニスコートを横から見た、ボールの様子を映し出します。 本質的には、ボールのシミュレートはアナログコンピュータ、シーケンスの部分は ータ ( もちろんディスクリート部品 ) のみで構成しますが、あま ティジタノレコンピュ りにも細かい判定をさせないといけない場合はマイコンで判定させるといった方法 を取っていこうと思います ( ごめんなさい w ) 。 今回からロジック回路が追加されるため、仕様も以下のことを追加します ( というか忘 れてました w ) 。 ・ロジック回路の電源電圧は十 5 [ V ] で使用します。 ー十 5 [ V ] を ' 1 ' 、 O[V] (GND) を ' 0 ' という論理にします ( 正論理 ) 。 4.2 回路を設計する 4.2.1 積分器のロジック 前作で初期値も入れられる積分器を製作しました ( 図 4.1 ) 。この回路は SWI ~ SW3 の 3 つのアナログスイッチを切り替えることで、出力保持、積分演算、初期値設定 ( 追従モー ド ) 、リセットの 4 つの機能を切り替えられました。しかしながら、 3 つのアナログスイツ チを制御するのですから、 8 通りの組み合わせが存在する上、万が一、マイコンで制御する ことも考えても、 3 つのアナログスイッチを 2 入力のディジタル入力で制御できたほうが 使い勝手が良さそうです。 今回は、表 4.1 の真理値表になるようなロジック回路を製作します。 そこで、 2 入力のディジタル信号を 3 出力に変換するロジック回路 ( デコーダ ) を組み ます。
12 第 3 章テニスゲームを設計しよう ~ 跳ねる編 ~ くなるようにします。ボールのエネルギーに直接関わってくるのは速度になりますので、 跳ねる前と後で速度が減衰していくようにします。したがって、式 ( 3.2 ) のような関係にな ります。 ( 3.2 ) 3.2 3.2 ユ + 1 ( 0 ) = 地譚 ) もう少し踏み込んで回路化してみる 跳ねるという反復運動を回路にするには 跳ねるという動作をさせるには、回路で次の動作をさせることが必要です。 ( 1 ) ボールの放物運動を演算させる。 ( 2 ) ボールが地面に当たった事を判定する。 放物運動の演算 これらの要素について、詳しくみていきましよう。 演算回路を切り替える回路 ・れ回目の物理量をれ十 1 回目を演算する回路に引き継ぐ回路 ・地面との判定回路 放物運動の演算をする回路 ( れ回目用とれ十 1 回目用の 2 系統用意する ) これを実現させるためには、大きく分けて 4 つの要素を作ります。 っと、ざっとこんな感じです。 ( 4 ) 以降繰り返し。 ( 3 ) 地面に当たった時の物理量を、次の運動を演算する回路に渡して演算させる。 力する』とすることで判定させます。 そこで、コンパレータを用いて『地面と衝突』 = 『ある電圧以下になった場合に信号を出 ボールが跳ねることは、すなわち地面に当たった事を判定しなくてはなりません。 地面との衝突判定 うな演算をさせます。 用意します。プロック A とプロック B を交互に動作させることで、あたかも跳ねているよ 下、プロック A という ) とれ十 1 回目用の回路 ( 以下、プロック B という ) 、 2 つの回路を これは前回やったことであり、図 2.3 の回路そのものです。これをれ回目用の回路 ( 以
5 ースゲームを作ろう ! ( おさらい ) 第 2 章テー りにも細かい判定をさせないといけない場合はマイコンで判定させるといった方法 ティジタノレコンピュ ータ ( もちろんディスクリート部品 ) のみで構成しますが、あま 本質的には、ボールのシミュレートはアナログコンピュータ、シーケンスの部分は 速度も決められるようにします。 ローラを作ってみます。打っときの速度 ( パワー ) は一定としますが、気が向いたら ・プレーヤーは、『角度調整』と『打っボタン』でボールを決められるようなコント といけないかもしれません。 し、ボールを打った時の高さは超えないように、縦方向のスケーリングは変えない 10 マス x 10 マスなので、その中にコートが収まるようスケーリングします。ただ 実際のテニスコートの縦方向の長さは 23.77 [ m ] 、使用するオシロスコープの画面は ・テニスコートを横から見た、ボールの様子を映し出します。 ・オペアンプの電源電圧は士 5 [ V ] で使用します。 まずは全体の基本方針を決めました。全体的に、以下の様な仕様にします。 2.1 基本設計 運動をシミュレートしてみました。まずはそのお話を簡単におさらいしましよう。 をテーマに進めています。そのための基本方針をまとめてみました。前回はボールの放物 まずは前回のおさらい。本書ではアナログコンヒ。ュータでテニスゲームを作ってみよう テニスをさせるには、次の動作が必要になってきます。 のイラストを素に考えてみましよう。 まずは、テニスゲームを実現するには、何をする事が必要なのかを考えてみます。図 2.1 2.2 テニスゲームを作るには何が必要か ? を取っていこうと思います ( ごめんなさい w ) 。 ルが地面に着いたら、跳ね返る動作 ( 1 ) サープを打っ角度、速度、最初の高さを調節して、ボールを打っ動作 ( 2 ) ボー ( 3 ) ボールを打ち返す動作。この時もボールを打っ角度、速度を調整して打ち返す必要が
まえがき っとコミケ以外にも精を入れつつ、いつものごとく、「まあ当落通知見てから書き始めれ ばいいよね ( すっとぼけ ) 」とノンキしていたら C88 は落選。 まあ 3 回も連続して当選すれば落ちるだろうとは思いましたが・ そして今回の当選と相成りました。 配置を確認したらビックリ。なんと中央通路側に配置されてるじゃありませんか ! ? 。 いろんなジャンルの方々の目に触れる目立っ場所じゃないですか ! ! 一ロロ盟 Q39a89 ロ 9a93a2 一ロ盟 3 ロロ口 aa 田国コ 一ロロ 3 ロロ口盟ロ CI コ 一口ロロ 3a9a89 99993a - ロロロロ 98 盟国 89 一製ロッ QQ99a83 999 ロ田 9a9 ココココ 一コロロ国田 - ロ図製コ田 9 29a 田口コ 一亠 - ロ田 98a98 印 、ど■ー■ 一第 = 当一を 第、第囈 神亨時袋所 材イ なんか、緊張してきた ( 震え ) 。 そんなことより、本当に書き終えるのでしようか wo C88 を目標に書いてあった書きかけの原稿をみたら、「えっ ? 、これ内容的にうまくいく こと前提になってるけど、大丈夫だよな ? ( 震え ) 」と心配になってきました。 とりあえず、先に謝っておくことがあります。 前回、「次号で完結 ! 」って言ったけど、