今回使用する湿度センサーは MCP9700 です。
MCP9700のピンを文字が見える部分を正面からみとき、左から0番、1番、2ばんとします。それぞれのピンの役割は以下のようになります。
-
0番
電源供給のためのピンです(VDD)
2.3V~5.5V -
1番
観測データが送られてきます。こちらは温度の高さや低さを電圧の高さ・低さで示す。アナログ出力をおこなうピンです。
データシートをみるとMCP9700の出力は100mVから1.75Vのようですね。 -
2番
最後はグランドです。
ラズベリーパイの場合アナログ入力ができるピンがないのでA/Dコンバータを使用しなければなりませんが、BeagleBoneBlackの場合アナログ入力を行えます。そのため、アナログ入力ができるピンを利用します。BeagleBOneBlackのアナログ入力の最大電圧は1.8Vなので余裕で使用できす。
下の表のように入力できるところがあります!
Name | PIN | PIN | Name |
---|---|---|---|
GPIO | 31 | 32 | VDD-ADC |
A-In4 | 33 | 34 | A-GND |
A-In6 | 35 | 36 | A-In5 |
A-In2 | 37 | 38 | A-In3 |
A-In0 | 39 | 40 | A-In1 |
##温度を求める
データシートを参考に温度を求めます。
Vout = 温度計数 * 周囲温度 + 0度の時の出力電圧
周囲温度 = (Vout - 0度の時の出力電圧) / 温度計数
Vout = 100mV ~ 1.75V
温度計数 = 10.0mV
0度の時 = 500mV
##PIN配置
Name | PIN |
---|---|
VDD | P9_3 |
Vout | P9_40 |
GND | P9_34 |
##コード
import Adafruit_BBIO.ADC as ADC
PIN = "P9_40"
ADC.setup()
value = ADC.read(PIN)
#value = value * 1.8 #1.8V
value = value * 1800 #1.8V = 1800mV
print(value, "mV")
temp = value - 500 # 500mV = 0 degree voltage
temp = temp / 10 #10mV = Temperature coefficient
tempC = round(temp, 2)
print(tempC, "degrees Celsius")
# translation to Fahrenheit temperature
tempF = (temp * 9 / 5) + 32
tempF = round(tempF, 2)
print(tempF, "degrees[Fahrenheit]")
##参考サイト
#####データシート
#####ADCドキュメント