アナログ回路

「アナログ回路」の編集履歴(バックアップ)一覧はこちら

アナログ回路」(2020/10/12 (月) 16:41:58) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

n
&bold(){注意} この項目は少し難しい内容になっています。 #contents() **基本 少し専門的な用語が多いので、補足しておきます。 ***この項目で使ってる用語 回路素子・・・サーキットボード上に置けるチップのうち、入力された信号に対して、別の信号を出力するものの総称です。 立ち上がり・・・信号がオフからオンに切り替わる瞬間の事です。 立ち下り・・・信号がオンからオフに切り替わる瞬間の事です。 微分回路・・・立ち上がりや立下りなど、信号の強さが変わったことを検出する回路です。 パルス・・・一定時間だけオンになる信号のことです。LBP的には単発信号と言うと分かりやすいと思います。 RAM、保持回路・・・メモリ、記憶素子の事です。オンやオフなどの状態を記録しておく為の回路です。 遅延・・・信号の変化を、一定時間遅らせて次に伝える事を言います。 絶対値・・・マイナスの値の場合、その符号を取るということです。 100進数・・・ひとつの桁に0~99の数値を持つ数字の表記方法です。足し算の繰り上がりの際は、100以上になるとその100をひとつ上の桁に1としてプラスします。 ***アナログ回路とは? アナログ回路とは、マイクロチップ内の回路のうち、アナログ信号を専門に処理する回路のことです。 マイクロチップ上の回路を流れる信号には、大きく分けて2種類の情報が含まれています。 ひとつはオン・オフ情報で、配線や素子が光っていればオン、消えていればオフの信号が流れていることを表しています。また、オンの状態には更に正と負の二つの状態(デジタル符号)が存在しており、一度オフになってしまうと符号は保存されません。オフの状態にも通常オフとnaturalと呼ばれる2種類があり、一部の入力特性に関係しています。これを便宜上デジタル信号と呼びます。 もう一つは目に見えない情報で、-100%から100%までの数値が含まれています(実際は24bitのデジタル信号で、100%を超える値も存在する)。これを便宜上アナログ信号と呼びます。 このアナログ信号は曲者で、素子によっては入力情報がリセットされてしまったり、マイナスが取れてしまったりします。 さらに配線上では見えないデータなので、光っていない配線にも情報が流れている場合があります。回路設計のときはモーターをスピードレベルに設定して、逐一信号の強さを確認するようにしましょう。 これらの扱いにくい点の反面、アナログ回路には大きなメリットも沢山あります。この回路をマスターすれば、LBPの回路を意のままに操れるようになるでしょう。 ***アナログで表せる数 32Bit 単精度の浮動小数点数と思われる。 (IEEE 754 形式) 通常は (±) 100% ~ 0.00001% が基本となる。(7.225桁) 浮動少数点数なので桁落ち、情報落ちに気をつければ更に小さい数も扱える。 2分の1回路で100%を149回扱った数字が最小値となる。(実験から) #単精度の最小値は2^-149である、故に単精度の浮動小数点数と思われる。 計算上最大値はおよそ3.4x10^38%となる(100%を128回 2倍した数) 情報落ち、桁落ち、積み残し、 有効桁が10進数で7桁なので 12%+23%=50% だが、12%+0.0000023%=12.0000023 -> 12.00000%となってしまう 0.000003+0.000002%の計算は LBPでは100-(100-0.000003-0.000002)とするため計算できない 100%の電池の代わりに0.00001%などの値を使用すると計算できる。 タイマーにごく小さい値で増加させている時(速度)、最初のうちは増え続けるが、 タイマーの値が大きくなると同じよに増えなくなってしまう。 0.000000001%などの小さな値を使用しても7桁分しか使用できない。 2進数-10進数 2を基数(2進数)とした浮動小数点数なので、10進数<->2進数変換できない値は誤差が出る **回路素子 詳しい入出力特性は[[ガジェット毎の解説]]にて ***ANDゲート ANDゲートの出力はややこしく、出力の絶対値はインプット側の信号の中で一番小さい値となります。 問題は符号で、出力がオンの場合、デジタル符号が正かオフの時は正に、デジタル符号が負のときは負になります。 オフの場合は、入力の内番号が一番大きいもののデジタル符号に応じて符号が決定します。 ANDのデジタル符号に対する振る舞いはデジタル回路の項を参照してください。 ***ORゲート ORゲートの出力は、入力信号のうち一番大きい信号を符号を保存して返します。 論理積とは違い、符号にはデジタル値は関係しないので、混同しないように注意しましょう。 ***XORゲート 基本的にはORゲートと同じですが、全入力中二箇所以上のデジタル信号がオンになっているときは、アナログ信号も0になります(全てOFFの場合はORと同じ振る舞い)。 ***NOTゲート 入力信号の絶対値を、100から引いた値を返します。丁度50を中心として反対側の数値を返している感じです。 AND,OR,XORの出力を反転設定にした場合は、それぞれの回路の出力の次にNOTをつないだ場合と同じ出力結果になります。 ***バッテリー  -100から100までの1刻みの定格の出力を行います。ただしゼロの場合はデジタル信号もオフになります。 ***マイクロチップ デジタル回路の場合と変わりはありませんが、動作側の入力はデジタル信号にのみ反応し、回路内のアナログ信号には干渉しないので、デジタル信号による制御に利用できます。 ***スイッチ デジタル信号にのみ反応し、出力値も0か100のみです。 ***カウンター 入力側のアナログ信号に関わらず、(現在のカウント数/最大数)×100の値を返します。 ***タイマー スピードレベル設定のときのみ、アナログ信号の値によってスピードが変化します。 正の値の場合はカウントアップ、負の値の場合はカウントダウンします。 出力はカウンターと同じく(現在の時間/最大時間)×100の値を返します。 ***ランダムチック 0か100しか出力しません。 ***方向分割ツール アナログ信号が正の場合、プラス側には入力値をそのまま、マイナス側には信号値0を返します。 負の場合は、プラス側には信号値0を、マイナス側には入力値の絶対値を返します。 ***方向結合ツール 万能ツールその1 アナログ電子回路の万能ツールであるオペアンプによく似た性質を持ったツールです。 プラス側のアナログ信号の絶対値から、マイナス側のアナログ信号の絶対値を引いた値を出力します。 これを応用することによってアナログ演算が可能になります。アナログ演算ではひとつの配線上で大きなデータをやり取りできるので、回路の大幅な節約が可能になります。 ***セレクター こちらも入力値の信号に関係なくアナログ値100でオンの信号かアナログ値0でオフの信号しか出力しません。 アナログ回路上で利用したい場合は、後述のアナログスイッチと組み合わせて利用しましょう。 ***シーケンサー 万能ツールその2 アナログ信号に対しては多彩な反応を見せるツールで、スピードレベル設定のときはタイマーのようにシーケンスのスピードが変化します。 特筆すべきは位置設定(ループ×)にしたときで、信号の絶対値によってシーケンスの位置が0~100で固定されます。 これとバッテリーを組み合わせれば、アナログ信号が好きな値のときだけオンのデジタル信号を出力させることが出来ます。 さらに0か100の状態の限定した検出も可能であり、応用すればアナログ信号の正負を確認する回路も作ることが出来ます。 ***コントロールギア コントロールギア内のアナログ信号はそれぞれ ○△□×R1L1L3ボタン・・・0か100 R2L2トリガー・・・0~100までの値 左右スティック、六軸・・・-100~100までの値 十字キー・・・方向に応じて-100,0,100のいずれか なお、各値の0のときはデジタル信号もオフになります。 **基本複合回路 ***アナログスイッチ 回路上を流れる信号のアナログ値を通したり遮断したりするスイッチです。 マイクロチップ上に反転したNOTゲートなどを置き、インプットとアウトプットを設定します。 スイッチしたい信号をこの間に通し、チップの作動端子に制御信号を送ります。 こうする事で信号に干渉せずスイッチを行うことが出来ます。 ***ON&0出力回路 デジタル信号はオンなのにアナログ信号は0という特殊な信号を出す回路です。 アナログ回路は主要な装置である方向分割・結合ツールの性質上計算出力のデジタル信号が不安定になりやすくなっています。 そこで出力をこの回路と共にOR回路に繋いでやると、安定してオン状態の信号が得られます。 そのほかにも応用が利く回路なので、マイプランに入れていつでも呼び出せるようにしておくことをお勧めします。また、OR回路等を使って保持すれば、素子を節約することができます。この場合、マイクロチップをオフにするとリセットされてしまいます。 #image(ON&0.jpg) 作り方は、写真の回路を組み、上の方のバッテリーを-1~-99、下のバッテリーを+100にするだけです。 ORのデジタル特性から、出力デジタル信号は上の入力と同じON(-)となり、分解ツールのデジタル出力もマイナス側になりますが、ORのアナログ特性からアナログ信号は+100なので、分解ツールのマイナス側にはアナログ値0が出力されます。 この場合はデジタル符号は必ずプラスになるので、マイナスの信号を作りたい場合は更に方向合体ツールを使ってください。 ***フィードバック同期回路(アナログ値同期タイマー、座標固定機構) スピードレベル入力を持ち、その入力値によって変化するアナログ値を出力するようなすべての機構に対して有用な回路です。 ここではタイマーの同期回路を例としますが、ムーバーとタグを作った物理的な座標固定機構など、様々な場面で応用が効きます。 #image(feedback.jpg) 作成は非常に簡単で、同期したい入力を方向合体ツールのプラス側に繋ぎ、その出力をタイマーに接続。タイマーはスピードレベル入力に設定(時間は少なければ少ないほど同期速度が早くなる)し、その出力を合体ツールのマイナス側に接続します。 #image(オシロスコープ.jpg) この機構を応用すれば、写真のオシロスコープのように入力値に合わせた座標にオブジェクトを移動させることができます。 ***定格入力検出回路 入力の絶対値が特定の値の時だけオンのデジタル信号を出力する回路です。 シーケンサとバッテリーだけで非常にシンプルに作れます。 まずシーケンサを位置設定(ループ×)にして、シーケンサ板の横の長さを100まで伸ばします。検出したい値の座標を跨ぐようにバッテリーを配置すれば完成です。シーケンスの位置が座標に対応しているので、求めたい値の時だけバッテリーがオンになってくれます。 また、左はじにはみ出るようにバッテリーを配置すれば、ゼロ値検出回路になります。演算などの時非常に便利な回路なので、回路設計時は常に用意しておきましょう。 ***コンパレータ(比較器) コンパレータとは比較回路の事で、入力AがB以上のときにオンのデジタル信号を出力します。 以下に実装例を示します。 #image(コンパレータ.jpg,width=500) インプットは上がA、下がBとなっています。 A≧BならA-B≧0なので、方向分割ツールのマイナス側の出力は0になり、ゼロ値検出回路でオンのデジタル信号を出力します。 ***アナログフィルター 特定の数値以下、または以上の信号をカットする回路です。どちらもOR回路のアナログ符号特性を利用しているので、入力できるのは絶対値のみとなります。 -高域フィルター #image(highpath.JPEG,width=640) プラス側に入力された信号が、マイナス側の値を上回っている場合のみアナログ値をそのままに出力し、それ以下の場合は0を出力します。 -低域フィルター #image(lowpath.JPEG,width=640) プラス側に入力された信号が、マイナス側の値を下回っている場合のみアナログ値をそのままに出力し、それ以下の場合は0を出力します。 これらのフィルターはシーケンサと合体ツールを組み合わせたものでも再現できますが、こちらではシーケンサを使うので1フレームの遅延が発生してしまうので、正確性を求める場合はこちらをお勧めします。この原理を応用すると、以下のような無遅延の10進コンバータ(小数解析に便利)や、無遅延のADコンバータを作ることができます。 #image(decimal.JPEG,width=640) ※写真はOF信号解析によるリアルタイムスコアディスプレイ ***アナログ減算機 アナログ値の減算機です。単純な減算ならば合体ツールひとつで出来てしまうのですが、ここで紹介する回路は繰り下げ要求(上の桁から100を借りてくる要求)とその受領処理(減算結果から更に1を引く処理)が出来る実用回路になっています。 以下が実装例です。 #image(減算器.jpg,width=720) インプットは上から順に、被減数、減数、繰り下げ入力、アウトプットは上が繰り下げ出力、下が差となっています。 シーケンサはゼロ以外で強度1のバッテリーをオンにするタイプで、マイクロチップの中身はNOT回路です。 使い方は、桁の小さいほうの繰り下げ出力を上の桁の繰り下げ入力に繋ぐ形に直列していきます。一番上の桁の繰り下げ出力に関しては、出力があった場合は計算結果が負数になるので、入力を反転させる機構を用意してそれをオンにしてください。 ***アナログ加算機 アナログ値の加算機です。LBPのアナログ値の性質上、100進加算機となっています。0~99の入力に対して加算結果と繰り上げの有無を返します。 以下が実装例です。 #image(加算機.jpg,width=720) シーケンサはゼロ値検出回路、マイクロチップの中身はNOT回路です。 被加数をA、加数をB、繰り上げ入力をC、左から2番目の方向合体ツールの出力値をXとします インプットは上から順に、B、A、C、アウトプットは上が繰り上げ出力、下が和となっています。 X = {(100-A)-C}-B = 100-(A+B+C) 繰り上げが起きるのはA+B+C≧100すなわち100-(A+B+C) = X≦0のとき X≦0すなわちゼロ値検出回路がオンのとき、和はX、繰り上げ出力はオン X>0すなわちゼロ値検出回路がオフのとき、和はNOT(X)、繰り上げ出力はオフ ***N倍アンプ 入力されたアナログ値をN倍した値を返す回路です。ただしLBPの仕様上、入力される値の上限は100/Nであり、それを超えると正しい値は出力されません。 #image(1_10anp.jpg) 写真は10倍アンプですが、合体ツールの数を増やせば何倍にも増やせます。この回路を応用すれば、掛け算九九回路、更には2桁乗算回路を容易に作ることができます。 ***1/N倍アンプ 入力されたアナログ値を整数Nで割った値を出力する回路です。N倍アンプのように数値の上限はありませんが、フィードバック機構を使っているので安定化まで少し時間がかかります。 #image(10anp.jpg) 写真は1/10アンプですが、N倍アンプと同様に合体ツールを増やせばNの値を変えることができます。タイマーの設定時間は、数値の振動を防ぐためNの値が大きければ大きいほど遅く(秒数を大きく)する必要があります。写真のような1/10倍アンプの場合、1.3秒に設定すれば収束までの時間が最短になります。この数値は倍数に比例するようで、1/100倍アンプの場合12.8秒で最短収束します。また、タイマー出力×Nが100を超える数値になると出力が正しくなくなる性質により、求める値とは別の値に収束してしまう現象を回避するために、全ての合体ツールの出力に分解ツールを接続し、そのプラス出力を次の演算に繋ぐ事が奨励されます。 この回路はまさに除算器であるので、上記の乗算器と組み合わせれば大きな桁の除算を行うこともできます。 ***DRAM 保存したいアナログ信号をデジタル値がオンの状態で入力しておきます(入力D)。この時下の入力にクロックを与えると、デジタル信号の立ち上がり時に内部データをリセットし、立ち下がり時にDの値を保存してくれます。以下が実装例です。 #image(RAM.jpg,width=720) ***フラッシュRAM クロックされたアナログ値を、次のクロックがあるまで保存する回路です。以下が実装例です。 #image(Flash RAM.jpg) インプットは上が保存したいアナログ信号、下がクロックとなっています。 ORのアウトプットをインプットに繋ぐと、もう片方のインプットの入力値が大きくなったときだけ出力値が変化します。 DIFUが出力するアナログ信号は0か100しかないので、ANDと組み合わせることでアナログスイッチになります。 ***アナログ微分回路(信号変化検出器) アナログ信号の変化を検出する回路です。デジタル側には変化があればパルス波を、アナログ側には信号の変化率をそれぞれ出力します。以下が実装例です。 #image(微分器.jpg) マイクロチップは、信号を1フレーム(30分の1秒)遅延させて伝えるためのものです。 現在のアナログ信号から30分の1秒前のアナログ信号を引くことで、30分の1秒間にどれだけ信号が変化したかを計測します。 **応用複合回路 ***十進コンバータ アナログ信号は100進数でもあるので、10進数とは非常に相性がよくなっています。 ヒューマンインターフェイスを考える上では10進数は欠かせない要素なので、アナログ回路を扱う上で大きなメリットです。 ここではアナログ信号を10進数に変換する回路を紹介します。以下が実装例です。 #image(十進数変換.jpg,width=720) 複雑な回路ですが、やっていることは単純です。 求める信号を10n+mとすると、まず下のシーケンサでnの値別に振り分けて、それを0~9までの数値で出力。 そのnの値を使って10nの信号を呼び出し、入力信号からオペアンプで引いてmを求め、そのまま出力。 これで入力信号がnとm二つの十進数に変換されます。 ***ADコンバータ ***DAコンバータ

表示オプション

横に並べて表示:
変化行の前後のみ表示: