×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MoistureSenser(土壌水分計) を使ってみる
1.ADコンバータはMCP3028の10ビットと12ビット
2.ADコンバータの接続
16vxx ---- 3.3v
15VR ---- 3.3V
14GND--- GND
13CLK ---- SCLK
12Dout--- MSO
11Din --- MSI
10CS ---- CE0
9DGND -- GND
3.MoistureSenserの接続
赤 3.3V
黒 GND
青 CH0
4.データの校正
完全水没で
3.3Vで 5Vで
12ビット 2496 2V前後 4095 3.299V
10ビット 613 1.97V 1023 3.299
メーカーのHPを見ると Arduinoの例で内蔵ADが10ビットだから
5vで
0から300 乾燥
300から700 標準
700から950 水びたし
校正結果
10ビットで使用して
上記を採用
5.ソースコードは
MP3208msenser10.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#sudo apt-get install python-spidev
import time
import sys
import spidev
spi = spidev.SpiDev()
spi.open(0,0)
def readadc(adcnum):
r = spi.xfer2([1, 8 + adcnum << 4, 0])
adcout = ((r[1] & 3) << 8) + r[2]
return adcout
def readadc12(adcnum):
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([4 | 2 | (adcnum >> 2), (adcnum & 3) << 6, 0])
adcout = ((r[1] & 15) << 8) + r[2]
return adcout
def convertVolts(data):
volts = (data * 3.3) / 1023
#volts = round(volts,4)
return volts
def convertVolts12(data):
volts = (data * 3.3) / 4095
#volts = round(volts,4)
return volts
if __name__ == '__main__':
try:
while True:
data = readadc(0) #12ビット readadc12(0)
print("adc10bit : {:8.5f} ".format(data))
volts =convertVolts(data) #12ビット convertVolts12(0)
print("adc10volt : {:8.5f} ".format(volts))
time.sleep(3)
except KeyboardInterrupt:
spi.close()
sys.exit(0)
1.ADコンバータはMCP3028の10ビットと12ビット
2.ADコンバータの接続
16vxx ---- 3.3v
15VR ---- 3.3V
14GND--- GND
13CLK ---- SCLK
12Dout--- MSO
11Din --- MSI
10CS ---- CE0
9DGND -- GND
3.MoistureSenserの接続
赤 3.3V
黒 GND
青 CH0
4.データの校正
完全水没で
3.3Vで 5Vで
12ビット 2496 2V前後 4095 3.299V
10ビット 613 1.97V 1023 3.299
メーカーのHPを見ると Arduinoの例で内蔵ADが10ビットだから
5vで
0から300 乾燥
300から700 標準
700から950 水びたし
校正結果
10ビットで使用して
上記を採用
5.ソースコードは
MP3208msenser10.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#sudo apt-get install python-spidev
import time
import sys
import spidev
spi = spidev.SpiDev()
spi.open(0,0)
def readadc(adcnum):
r = spi.xfer2([1, 8 + adcnum << 4, 0])
adcout = ((r[1] & 3) << 8) + r[2]
return adcout
def readadc12(adcnum):
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([4 | 2 | (adcnum >> 2), (adcnum & 3) << 6, 0])
adcout = ((r[1] & 15) << 8) + r[2]
return adcout
def convertVolts(data):
volts = (data * 3.3) / 1023
#volts = round(volts,4)
return volts
def convertVolts12(data):
volts = (data * 3.3) / 4095
#volts = round(volts,4)
return volts
if __name__ == '__main__':
try:
while True:
data = readadc(0) #12ビット readadc12(0)
print("adc10bit : {:8.5f} ".format(data))
volts =convertVolts(data) #12ビット convertVolts12(0)
print("adc10volt : {:8.5f} ".format(volts))
time.sleep(3)
except KeyboardInterrupt:
spi.close()
sys.exit(0)
PR