CircuitPython 10行プログラミング Step3 (8) サーミスタ
サーミスタを使った温度測定をします。サーミスタは、アナログの温度センサの中では安価で、測定できる温度範囲も広いです。examplesに入っているソースthermistor_simpletest.pyを読むと、サーミスタの出力を接続するピン番号、外部抵抗とB定数などを指定しています。
import time
import board
import adafruit_thermistor
# these values work with the Adafruit CircuitPlayground Express.
# they may work with other thermistors as well, as they're fairly standard,
# though the pin will likely need to change (ie board.A1)
# pylint: disable=no-member
pin = board.TEMPERATURE
resistor = 10000
resistance = 10000
nominal_temp = 25
b_coefficient = 3950
thermistor = adafruit_thermistor.Thermistor(pin, resistor, resistance, nominal_temp, b_coefficient)
# print the temperature in C and F to the serial console every second
while True:
celsius = thermistor.temperature
fahrenheit = (celsius * 9 / 5) + 32
print('== Temperature ==\n{} *C\n{} *F\n'.format(celsius, fahrenheit))
time.sleep(1)
AdafruitのCircuitPythonで使用しているボードは3.3Vが多いので、想定している電源は3.3Vと思います。
Voはマイコン・ボードのアナログ入力ピンA0につなぎます。
pin = board.A0 |
直列の抵抗R2はこちらの記事で使った82kΩにします。
resistor = 82000 |
利用したセンサNXFT15XH103FA は25℃のときに10kΩなので、次のパラメータはそのままです。
resistance = 10000 nominal_temp = 25 |
カタログによるとB定数は3380なので変更します。
b_coefficient = 3380 |
実行中の様子です。指先でセンサをつまむとすぐに温度が上昇しました。
●7セグメントLEDに表示する
4桁の7セグメントLEDに測定した温度を表示します。I2Cインターフェースでつなげられるコントローラht16k33用のライブラリがあるので利用します。この事例では7セグメントLED(QUAD ALPHANUMERIC)なので、インスタンスを初期化するとき、Seg14x4ではなくSeg7x4にします。このライブラリは、マトリクス表示器などにも対応しています。
round(celsius,1)は、小数点第2位を丸めて小数点第1位の表示を得ます。
import time
import board
import adafruit_thermistor
import busio
import adafruit_ht16k33.segments
i2c = busio.I2C(board.SCL, board.SDA)
display = adafruit_ht16k33.segments.Seg7x4(i2c, address=0x70)
resistor = 82000
resistance = 10000
nominal_temp = 25
b_coefficient = 3380
thermistor = adafruit_thermistor.Thermistor(pin, resistor, resistance, nominal_temp, b_coefficient)
while True:
celsius = thermistor.temperature
print('Temperature', round(celsius,1))
display.print(round(celsius,1))
display.show()
time.sleep(3.14)
実行している様子です。正確な温度計を利用して校正しないと、温度の値は正しくありません。nominal_temp = 25の数字を変更して、室温付近は近似できます。