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