Привет!
Я хочу подключить два потенциометра к raspberry pi 5. У нее нет встроенного ацп, по этому я решил подключить через микросхему adc0832ccn. Это двуканальный ацп.
столкнулся с проблемой:
когда DI и DO стоят правильно, то данные как в приложении 1.
А когда я их меняю местами, то начанает с обоих каналов поступать данные со второго потенциометра. (приложение 2)
еще приложу фото борда

Код:
Я хочу подключить два потенциометра к raspberry pi 5. У нее нет встроенного ацп, по этому я решил подключить через микросхему adc0832ccn. Это двуканальный ацп.
столкнулся с проблемой:
когда DI и DO стоят правильно, то данные как в приложении 1.
А когда я их меняю местами, то начанает с обоих каналов поступать данные со второго потенциометра. (приложение 2)
еще приложу фото борда

Код:
Python:
import spidev, time
spi = spidev.SpiDev()
spi.open(0, 0) # bus0, CE0
spi.mode = 0
spi.max_speed_hz = 100000
def read_adc(channel: int, debug=False) -> int:
if channel not in (0, 1):
raise ValueError("channel must be 0 or 1")
cmd = 0xD0 if channel == 0 else 0xF0
r = spi.xfer2([0x01, cmd, 0x00])
if debug:
print(f"RAW({channel}) -> {[f'0x{x:02X}' for x in r]}")
value = ((r[1] & 0x03) << 6) | (r[2] >> 2)
return value & 0xFF
VREF = 3.3
try:
while True:
raw0 = read_adc(0, debug=True)
raw1 = read_adc(1, debug=True)
v0 = raw0 * VREF / 255.0
v1 = raw1 * VREF / 255.0
print(f"CH0: {raw0:3d} ({v0:0.3f} V) | CH1: {raw1:3d} ({v1:0.3f} V)")
time.sleep(0.2)
except KeyboardInterrupt:
spi.close()
Вложения
-
2.1 KB Просмотры: 2
-
3.4 KB Просмотры: 1