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

はじめに

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

AD 変換の基礎

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

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

image

プログラム例

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

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

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

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

adc39 = ADC.new( 39 )

$B = 3435.0
$To = 25.0
$V = 3300.0
$Rref = 10.0

loop do
  $voltage = adc39.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)
  puts($temp)
  sleep(2)
end