我正在使用树莓派3B和ADC(ADS1115)开发用于模拟传感器(水压和水浊度)的采集系统。
我面临的问题是,缓冲区(或其他东西)不时充满,并且ads1115给出零读数。
数据速率(或其他任何一种)越低,空值就越频繁。
我在这里显示我的情节:
数据速率= 8 sps
数据速率= 16 sps
下降是由于浊度变为零,而压力变为负值是ADC读数为零的结果。
有没有一种方法可以清除ADC的缓冲区(或其他)?还是您认为问题是其他的?
我拥有的所有连接都在GitHub存储库中:https://github.com/Ricardosgeral/relier/blob/master/README.md
此文件https://github.com/Ricardosgeral/relier/blob/master/analogsensor_thread.py
中包含读取ADS1115的代码。我希望在这里提供一些指导。
谢谢
答案 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读不清楚,
使用此代码,我可以阅读所有情况