Samples_ADC - gfd-dennou-club/mrubyc-esp32 GitHub Wiki
はじめに
ADC クラスのメソッドについては,Class_ADC を参照されたい.
AD 変換の基礎
アナログセンサの出力電力はアナログ値 (連続値) であるのに対して, マイコンが扱えるのはデジタル値 (離散値) である.プログラム処理するためには アナログ値からデジタル値に変換する必要があり,この機能を提供するのが A/D 変換である.
アナログ値からデジタル値に変換する場合には,分解能を指定する必要がある. 以下の図のように分解能を 2 bit にすると,2 の 2 乗の 4 階調でアナログ値が 表現される.分解能を高くすれば,計算リソースが余計に使われるが, デジタル値とアナログ値の誤差は小さくなる.本ライブラリでは分解能は 12 bit で固定している.
プログラム例
アナログセンサからの読み込み例
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