ads1115缓冲区溢出,采样率低

时间:2018-11-15 18:34:17

标签: python raspberry-pi buffer i2c adc

我正在使用树莓派3B和ADC(ADS1115)开发用于模拟传感器(水压和水浊度)的采集系统。

我面临的问题是,缓冲区(或其他东西)不时充满,并且ads1115给出读数。

数据速率(或其他任何一种)越低,空值就越频繁。

我在这里显示我的情节:

数据速率= 8 sps

8sps

数据速率= 16 sps

16sps

下降是由于浊度变为零,而压力变为负值是ADC读数为零的结果。

有没有一种方法可以清除ADC的缓冲区(或其他)?还是您认为问题是其他的?

我拥有的所有连接都在GitHub存储库中:https://github.com/Ricardosgeral/relier/blob/master/README.md

此文件https://github.com/Ricardosgeral/relier/blob/master/analogsensor_thread.py

中包含读取ADS1115的代码。

我希望在这里提供一些指导。

谢谢

1 个答案:

答案 0 :(得分:0)

我正在Windows 10 IoT核心版上开发一些嵌入式设备ads1115和raspbery pi, 这是我的步骤,希望对您有所帮助。

private I2cDevice _converter1;

这是我对ads1115的设置位

var i2CSettings1 = new I2cConnectionSettings(0x48)
                {
                    BusSpeed = I2cBusSpeed.FastMode,
                    SharingMode = I2cSharingMode.Shared
                };

                var i2C1 = I2cDevice.GetDeviceSelector("I2C1");
                var devices = await DeviceInformation.FindAllAsync(i2C1);
                var gpio = GpioController.GetDefault();

                _converter1 = await I2cDevice.FromIdAsync(devices[0].Id, i2CSettings1);
                _converter1.Write(new byte[] { 0x01, 0xc4, 0x60 });
                _converter1.Write(new byte[] { 0x02, 0x00, 0x00 }); //rate
                _converter1.Write(new byte[] { 0x03, 0xff, 0xff });

设置后,也许我可以使用ads1115的警报引脚,将警报引脚连接到pi数字引脚并触发我的阅读代码,有时我正在循环阅读,对于循环,您必须等待20毫秒 这是我的阅读代码

_converter1.WriteRead(new byte[] { 0x0 }, bytearray1);
                            if (BitConverter.IsLittleEndian)
                                Array.Reverse(bytearray1);
                            var value1 = BitConverter.ToInt16(bytearray1, 0);

参考电压非常重要,我使用树莓派pi 3.3 vcc作为参考电压,另外重要的是树莓派有2条输入电压线 USB之一 另一个是5伏vcc引脚。

usb端口线路受管制,但 5伏特vcc引脚未调节

如果您使用5伏特Vcc插针来插打广告ad1115读不清楚,

使用此代码,我可以阅读所有情况