无法使用PCF8591读取树莓派中的有效电压输入

时间:2019-01-18 10:16:12

标签: python raspberry-pi

我尝试使用I2C通讯通过Raspberry-pi中的PCF8591读取来自机器的电压输入,但打印一些其他值。

也可以请我建议一下,因为如果我想获得机器输入电压,如果电压下降,它会中断功能,我应该使用哪种方法?

PCF8591-> Raspberry Pi之间的连接

  1. SDL-> Rpi上的SDL
  2. SCL-> Rpi上的SCL
  3. VCC-> Rpi上的3.3v甚至尝试了5.0v
  4. GND-> Rpi上的GND

将计算机连接到PCF8591

  1. 5v-> PCF8591上的AIN1

  2. GND-> GND Rpi

    import smbus import time address = 0x48 A0 = 0x40 A1 = 0x41 A2 = 0x42 A3 = 0x43 bus = smbus.SMBus(1) while True: bus.read_byte_data(address,A1) value = bus.read_byte_data(address, A1) print("AOUT: %1.03f" %(value*3.3/255)) time.sleep(0.2)

这样显示输出 OUT:2.756

1 个答案:

答案 0 :(得分:0)

要获得正确的值,您必须读取该值两次。第一次读取告诉芯片进行新的测量并同时返回寄存器中的当前值(这不是正确的值)。在第二次读取时,您将获得正确的值:

import smbus
import time

address = 0x48  
A0 = 0x40
A1 = 0x41
A2 = 0x42
A3 = 0x43
bus = smbus.SMBus(1)

while True:
    bus.read_byte_data(address, A1)  # do the measurement but ignore the value
    value = bus.read_byte_data(address, A1)  # get the correct value
    #print(value)
    print("AOUT: %1.03f" %(value*3.3/255))
    time.sleep(0.2)