寝台急行はまなす

札幌駅 22:00発 増結12両編成 青森行き

micropythonでADコンバータ

MicroPython Advent Calendar 2017 - Qiita

MicroPython Advent Calender 12日目です。


昨日は@inachiさんで BLEをサポートした MicroPython `Bleson' でした。
公式でRAMが足りないからBLEはむり!と言われていたmicro:bitのBLEに光明が!という記事でした。今後に期待です。

さて10日目にDHT11センサーを扱ってみましたが、精度に不満があります。
LM35が手元にあったので、ESP32のADコンバータで値を読み取りました。

class ADC – analog to digital conversion — MicroPython 1.9.3 documentation

ちょうど2017年11月号のトラ技にどんぴしゃで記事が載っていました。
基板もついてきてmicropythonの特集もあるのでおすすめです。

記事によるとアッテネータを0dBに設定したほうが測定精度がよくなるようで、その計算式は以下になります。
電圧[V] = A-D変換値 × 0.000235 + 0.075

さっそくREPLで試してみます。

>>> from machine import Pin, ADC
>>> adc = ADC(Pin(35))
>>> adc.width(ADC.WIDTH_12BIT)
>>> adc.atten(ADC.ATTN_0DB)
>>> (adc.read() * 0.000235+0.075) / 0.01
20.707
>>>

DHT11とは異なり小数点以下も読み取れましたね。