熊おふし五郎が行く

主にマイコンボードを動かした記録を書いています

アナログ入力とアナログ出力

アナログ入力とは

マイコンの端子にアナログ信号を入力することです。入力されたアナログ信号は、マイコン内蔵のADコンバータでデジタル信号に変換されます。マイコンは変換されたデジタル信号を処理します。

アナログ出力とは

マイコンの端子からアナログ信号を出力することです。マイコンはデジタル信号を処理して、マイコン内蔵のDAコンバータでアナログ信号に変換されます。その変換されたアナログ信号を出力します。ただし、マイコンによっては、PWM(Pulse-Width Modulation)に代用する場合があります。

PWM

PWMとは、デジタル出力のONとOFFの時間の比率を変化することです。ONする時間がOFFより短いほど、出力の電圧が低くなります。出力電圧とON/OFF時間の比率との関係を以下に示します。

f:id:bear_9973:20200823154843p:plain:w500
出力電圧とON/OFF時間の比率との関係

Micro:bitのアナログ入出力

ここではMicro:bitのアナログ入出力を説明します。

アナログ入力端子

Micro:bitのアナログ入力の端子とADコンバータの仕様を以下に示します。

  • 端子:P0、P1、P2、P3、P4、P10
  • ADコンバータ:10ビットの解像度

アナログ入力端子が受け付けられる電圧の最大値は3.3 Vです。3.3 Vを1024段階にして、電圧の変化を読み取ります。つまり、1段階は約0.003 Vになります。

アナログ入力

サンプルを以下に示します。

from microbit import *

while True:
    r_data = pin0.read_analog()
    sleep(1000)

アナログ出力端子

Micro:bitのアナログ出力端子は電圧そのものを変化させることはできません。その代わりにデジタル出力のPWMを使用します。そのため、アナログ入力端子よりも多くあります。

  • 端子:P0~P16、P19、P20

アナログ出力

「出力電圧とON/OFF時間の比率との関係」の図と同じ動作をするサンプルを以下に示します。なお、PWMの周期は初期状態で20ミリ秒(周波数50Hz)です。
write_analog(value)のvalueは、0から 1023までの整数または浮動小数点数を入力できます。value=0からON時間の比率0 %を、value=768からON時間の比率75 %を対照できます。

from microbit import *

while True:
    #  デジタル出力のONの比率が75%のときは、2.475 Vになる
    print('75 %(768) 2.475 V')
    pin0.write_analog(768)
    sleep(10000)
    #  デジタル出力のONの比率が50%のときは、1.65 Vになる
    print('50 %(512) 1.65 V')
    pin0.write_anaolog(512)
    sleep(10000)
    #  デジタル出力のONの比率が25%のときは、0.825 Vになる
    #  256
    print('25 %(256) 0.825 V')
    pin0.write_analog(256)
    sleep(10000)

動作結果を以下に示します。期待したアナログ出力が確認できました。

f:id:bear_9973:20200823155515j:plain:w400
動作結果