Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Yanıt: smbus2 write_i2c_block_data: ADS1115 için "cmd" baytı nedir?

Yapay zekâ tarafından English dilinden çevrildi ·

“cmd” SMBus adlandırmasıdır. Bir SMBus blok yazmada adresten sonraki ilk bayta komut baytı denir ve ADS1115 gibi register tabanlı çiplerde bu bayt register işaretçisidir. Yani ilk satırınız işaretçiyi Config registerına (0x01) yönlendirir ve buraya 0xC3, ardından 0x83 yazar. Hatta: start, 0x90, 0x01, 0xC3, 0x83, stop.0xC383 şu anlama gelir: tek bir dönüşüm başlat, AIN0’ı GND’ye karşı ölç, ±4.096 V aralığı, tek atımlı mod, 128 örnek/s. Okuma işlemi işaretçiyi 0x00 (Conversion registerı) olarak ayarlar ve iki bayt okur.Hatanız bayt sırasındadır. ADS1115 önce en anlamlı baytı gönderir ve sonuç işaretlidir:

data = bus.read_i2c_block_data(0x48, 0x00, 2)
raw = (data[0] << 8) | data[1]
if raw > 0x7FFF:
    raw -= 0x10000
volts = raw * 4.096 / 32768

Baytlar ters olduğunda, düşük bayttaki küçük bir değişim büyük bir sıçramaya dönüşür; bu da sizin 900 ile 52.000 farkınızdır. AIN1 için MUX bitlerini değiştirin: [0xD3, 0x83]. 128 SPS’de 10 ms yeterlidir (bir dönüşüm yaklaşık 8 ms sürer), dolayısıyla bekleme süresi uygundur.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 7