圧力センサー FSR406 を試す
FSR406 と ADコンバーター MCP3008
配線
FSR406 が、圧力によって変化するタイプのスイッチ的な性格なので、プルダウン抵抗的な配線にする、、、のだと思います。
皆様の例に習いました。
抵抗が CH0(1) と Vdd(16) を繋いでいます。
MCP3008 Vdd(16), Vref(15) > RPI 3.3v MCP3008 AGND(14),DGND(9) > RPI GND MCP3008 CLK(13) > RPI GPIO 11 (SCLK) MCP3008 DOUT(12) > RPI GPIO 9 (MISO) MCP3008 DIN(11) > RPI GPIO 10 (MOSI) MCP3008 CS/SHDN(10) > RPI GPIP 8 (CE0) MCP3008 CH0(1) > RPI GPIP 8 (CE0)
に配線します。
コーディング
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import sys import spidev spi = spidev.SpiDev() spi.open(0,0) def readAdc(channel): adc = spi.xfer2([1,(8+channel)<<4,0]) data = ((adc[1]&3) << 8) + adc[2] return data def convertVolts(data): volts = (data * 3.3) / float(1023) volts = round(volts,4) return volts def convertPressure(data): pressure = 1023 - data return pressure if __name__ == '__main__': try: while True: data = readAdc(0) volts = convertVolts(data) pressure = convertPressure(data) print("adc: {:4}, volts : {:.2f}, pressure : {:.2f}".format(data, volts, pressure)) time.sleep(1) except KeyboardInterrupt: pass spi.close() sys.exit(0)
接触を感知できれば何でも良かったので、面積の大きい FSR406 を購入したのですが、重さへの演算は、出来ないタイプのセンサーだと思う。
どのような仕組みで抵抗が変わるのか調べていませんが、分銅の置き方で数値が変わります。