ホーム » 2018 » 5月 » 18

日別アーカイブ: 2018年5月18日

2018年5月
« 4月   6月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

D/A変換回路とA/D変換回路

小型コンピュータを使った制御では、外部回路に指定した電圧を出力(D/A変換)したり、外部の電圧を入力(A/D変換)したりすることが多い。以下にその為の回路と動作について説明する。

D/A変換回路

ラダー抵抗回路によるD/A変換の仕組みを引用

このような回路で、D0,D1,D2 は、デジタル値の0=0[V] , 1=5[V] であった場合、Output 部分の電圧は、(D0,D1,D2)の値が、(0,0,0),(0,0,1),…(1,1,1)と変化するにつれ、5/8[V]づつ増え、(1,1,1)で 5*(7/8)=4.4[V]に近づいていく。Output が出力によって電圧が変化しないように、アンプで増幅する。

DCモータをアナログ量で制御しないこと

このように、電圧をコンピュータから制御するようになると、ロボットで模型用の直流モータの回転速度をこれで制御したい…と考えるかもしれない。
しかし、直流モータは、コイル(電磁石)は単なる導線である。例えば、小さい電流で遅い速度でモータを回転させようとすると、小さい電圧でも導線(抵抗はほぼ0[Ω])には大量の電流が流れる。


PWM変調

こういう場合には、PWM変調(Pulse Width Modulation) を行う。

このような波形であれば、低速度でも高トルクが得られる。

A/D変換回路

D/A変換とは逆に、アナログ量をデジタル値に変換するには、どのようにするか?

このような場合には、A/D変換回路を用いる。一般的な回路では、以下のような逐次比較型A/D変換を用いる。

この回路では、変換開始と共に入力値をサンプル保持回路でアナログ量を保存する。
その後、Registerの中のデジタル値を、D/A 変換回路でアナログ量に変換した結果を、比較器(Comparator)でどちらが大きいか判断し、その結果に応じて2分探索法とかハイアンドローの方式のように、比較を繰り返しながらデジタル値を入力値に近づけていく。

ハイアンドロー(数あてゲーム)

数あてゲームで、デタラメな0〜127までの整数を決めて、ヒントを元にその数字を当てる。回答者は、数字を伝えると、決めた数よりHighかLowのヒントをもらえる。
最も速い回答方法は…

例えば決めた数が55だとすると
・64 - Low   0------  0..63
・32 - High  01----- 32..63
・48 - High  011---- 48..63
・56 - Low   0110--- 48..55
・52 - High  01101-- 52..55
・54 - High  011011- 54..55
・55 - Bingo 0110111 55確定
どんな値でも、7回(27=127)までで当てることができる。

入出力と変数・レポートNo.2

以下のような、位相が 0°,15°,30°,45° ずれた sin(x) のグラフを描くためのプログラムを作りたい。

Excel で式入力すりゃいいじゃん…というのはナシ。

0 =A1+15 =B1+15
=A1+5 =sin((A2+B1)/180*3.141592) =sin((A2+C1)/180*3.141592)

// 以下のプログラムは、初心者なら書きそうなボケが沢山入ってます。
// 正しく直してください。
#include <stdio.h>

#define PI = 3.1415926535 ;
int th ;

void phase( int x ) {
    printf( "%d" , x ) ;
    // 位相を0度から45度まで15度ずつ変化させる
    for( th = 0 ; th <= 45 ; th += 15 ) {
        printf( " %d" , sin( (x + th) / 180 * PI ) ) ;
    }
    printf( "¥n" ) ;
}

int main() {
    // 角度を 0..360度 の範囲で表示
    for( th = 0 ; th != 360 ; th += 5 ) {
        phase( th ) ;
    }
    return 0 ;
}

このプログラムを正しく修正し、Excel に値を取り込んで、上図に示すようなグラフにしてください。

レポートでは、プログラムリスト、プログラムの説明、実行結果、感想・考察を記載し提出してください。