Tennis For Twoを読み解いてみる(4)

未分類

回路図(1)

第4回になります。一言でいえば、今回は初期値充電回路になります。

初期値

ボールを打ち返す前の初期値(\(x, y \)方向の初速)を計算(保持)する必要があります。コントローラに取り付けられた可変抵抗に応じて、適切な初期値(初速、角度)をコンデンサに充電させます。理想的にはボールの軌道は二次元ですから、ボールの初速と角度を別々に設定できるようにする必要があります。しかし、コントローラには可変抵抗1つしかありません。オリジナル回路では初速は一定として、角度のみ変更できるように設計されています。力学上では\(x \)方向, \(y \)方向の初速は次式です。

$$ v_x = v_0 \cos \theta $$

$$ v_y = v_0 \sin \theta $$

この式を忠実に再現するためには、\(\sin \), \(\cos \)を計算する必要があります。しかし、アナログ回路で\(\sin \), \(\cos \)の計算は非常に困難です1。そこで、\(\sin \), \(\cos \)の補完的性質のみを再現し簡易的に実装しています。可変抵抗には2連ボリュームを用います。2連ボリュームはつまみの角度と抵抗値が独立して線形的に変化するので、補完的に使用することができます。これにより、\(\sin \), \(\cos \)と同じような補完的性質を再現することができます。本当の意味では再現できていませんが、人間が操作する分には違和感がないでしょう。回路図にするとイメージとして次のように接続していることになります。

つまり、つまみを時計回りに回して\(\sin \)が大きくなるとすると、\(\cos \)が小さくなります。一方、つまみを反時計回りに回すと\(\sin \)が小さくなり、\(\cos \)が大きくなります。これは、グラフにすると次のグラフになります。赤が\(\sin \), 青が\(\cos \), 緑が疑似\(\sin \), 紫が疑似\(\cos \)です。

多少、雑かもしれませんがそれなりに一致していえるとも言えそうです。角度は\(0 \leq \theta \leq \frac{\pi}{2}\)までしか使わないので、問題ないでしょう。よくよく考えたら、\(\sin \), \(\cos \)の一次近似とお同じですね。

回路への落とし込み(初速計算)

実際の回路は次のようになっています。

赤枠の可変抵抗と青枠の可変抵抗がセットになっています。先ほどと同じですね。

これで\(\sin \), \(\cos \)に似た実装はできます。先ほどの式からわかるように初速は固定値ですが、乗算する必要があります。演算器は数が限られているので、これも少し簡易的でありますが、可変抵抗を二段シリーズにすることで実現します。初速用可変抵抗の定格抵抗値を\(R_1 \), \(\sin \), \(\cos \)計算用の定格抵抗値を\(R_2 \)として, \(R_1 << R_2 \)となるように設定します。

これにより、\(\sin \)の出力\(V_{sin} \)は次式で計算できます。

$$V_{sin} = (1-x) \times V_0 = (1-x) \times \frac{R_1 (1-y) V_{cc}}{R_1 (1-y) + yR_1 // \frac{R_2}{2}}= (1-x) \times \frac{R_1 (1-y) V_{cc}}{R_1 (1-y) + \frac{yR_1 \frac{R_2}{2}}{yR_1 + \frac{R_2}{2}}} \approx (1-x)(1-y)V_{cc}$$

ここで、\(x\), \(y\)はそれぞれ、角度用可変抵抗と初速用可変抵抗の開き具合を表しています。値域は\(0 \le x, y \le 1\)です。1pin側に最大まで回したとき1とします。実際の回路ではR1=5kΩ, R2=50kΩとなっています。このように、出力電圧は初速用可変抵抗と角度計算用改変抵抗の積で近似できます。ちなみに、\(\cos \)の出力\(V_{cos} \)は次式で計算できます。

$$V_{cos} = x \times V_0 = x \times \frac{R_1 (1-y) V_{cc}}{R_1 (1-y) + yR_1 // \frac{R_2}{2}}= x \times \frac{R_1 (1-y) V_{cc}}{R_1 (1-y) + \frac{yR_1 \frac{R_2}{2}}{yR_1 + \frac{R_2}{2}}} \approx x(1-y)V_{cc}$$

回路への落とし込み(充電の切り替え)

ここまでの説明により初期値電圧を得る回路はわかると思います。たぶん。あとは、各プレイー用に対応するコンデンサをリレーにより切り替えているだけです。Ry1B, Ry1D, Ry1F, Ry1Nが相当します。

サービス位置の計算(サービス位置)

リレーの説明としてはRy-1K-1Lだけが残りました。このゲームではサービス時の\(x\)方向の位置を調整できるようになっています。サービス位置はどちらのプレーヤがサービスを開始するかによって、コンデンサの充電方向が異なります。Ry-1K-1Lによって開始するプレイヤー側の表示されるように、充電方向が切り替わります。

(*´Д`)これで(4)回は許して。。

  1. 知らないだけかも。。。難しそうですが、モータとかのsin特性を持つデバイスを使えばできるのかな?

コメント

タイトルとURLをコピーしました