Raspberry Pi Picoで16ビット分可能のADコンバーターAD7685とSPI通信をして電圧を取得したいと思い、以下のように配線し、MicroPythonで以下のようなプログラムを書いてみたのですが、1.5Vを入力したら、0.0と出力され、うまくいってないようです。どうしてでしょうか?
import machine from machine import Pin, SPI from time import sleep class AD7685: def __init__(self, spi, cs, ref_voltage=5): """ Create MCP3008 instance Args: spi: configured SPI bus cs: pin to use for chip select ref_voltage: r """ self.cs = cs self.cs.value(1) # ncs on self._spi = spi self._out_buf = bytearray(2) self._out_buf[0] = 0x01 self._in_buf = bytearray(2) self._ref_voltage = ref_voltage def reference_voltage(self) -> float: """Returns the MCP3xxx's reference voltage as a float.""" return self._ref_voltage def read(self, pin, is_differential=False): return (self._in_buf[1])*5/65535 spi = SPI(0, sck=Pin(2),mosi=Pin(3),miso=Pin(4), baudrate=100000) cs = Pin(5, Pin.OUT) cs.value(1) # disable chip at start chip = AD7685(spi, cs) while True: actual = chip.read(0) print(actual) sleep(0.5) actual = chip.read(0) print(actual) sleep(0.5)
AD7685のカタログは
https://www.analog.com/media/jp/technical-documentation/data-sheets/ad7685_jp.pdf
にあります。
