Samples_ADC - gfd-dennou-club/mrubyc-esp32 GitHub Wiki

はじめに

ADC クラスのメソッドについては,Class_ADC を参照されたい.

AD 変換の基礎

アナログセンサの出力電力はアナログ値 (連続値) であるのに対して, マイコンが扱えるのはデジタル値 (離散値) である.プログラム処理するためには アナログ値からデジタル値に変換する必要があり,この機能を提供するのが A/D 変換である.

アナログ値からデジタル値に変換する場合には,分解能を指定する必要がある. 以下の図のように分解能を 2 bit にすると,2 の 2 乗の 4 階調でアナログ値が 表現される.分解能を高くすれば,計算リソースが余計に使われるが, デジタル値とアナログ値の誤差は小さくなる.本ライブラリでは分解能は 12 bit で固定している.

image

プログラム例

アナログセンサからの読み込み例

lux = ADC.new(36)
loop do
  puts( lux.read_raw )   #電圧に変換する前の数値
  puts( lux.read)        #電圧
  sleep 0.1
end

サーミスタ温度計での測定

教育ボードのサーミスタ温度計 を使う場合のプログラム例

# A/D 変換 初期化
adc = ADC.new( 39 )

#温度計測用変数初期化
B = 3435.0
To = 25.0
V = 3300.0
Rref = 10.0

loop do
  voltage = adc.read() * 1000.0  # V -> mV
  temp = 1.0 / ( 1.0 / B * Math.log( (V - voltage) / (voltage/ Rref) / Rref) + 1.0 / (To + 273.0) ) - 273.0
  puts "#{voltage} mV --> #{temp} C"
  sleep(2)
end