忍者ブログ
[279]  [278]  [277]  [275]  [274]  [273]  [272]  [271]  [270]  [269]  [268
×

[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)





 



拍手

PR
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新CM
[03/10 DORA]
最新TB
プロフィール
HN:
dorabu
性別:
非公開
バーコード
ブログ内検索
P R
Copyright © ドラブーのアンドロイドとIoTなブログ All rights reserved. / Template by 四季. / Material by てんせん.

忍者ブログ [PR]