ADS 1015 Sampling Rate



我最近买了一台ADS 1015(为了对电容器的电压进行高频测量(。数据表规定了3.3 kSPS(每秒采样(。然而,我最多只能获得500SPS左右。在环顾四周之后,我发现了几个关于寄存器覆盖的资源。。。然而,我不是这方面的专家,需要你的帮助!

这是我用来测试采样率的代码(使用Arduino nano,Arduino代码是C++变体(:

#include <Wire.h>
#include <Adafruit_ADS1015.h>
#include <SPI.h>




Adafruit_ADS1015 ADS_0(0x48);

int i = 0;
long results = 0;

void setup(void)
{
Serial.begin(9600);




// CODE FOUND ON THE INTERNET BUT REJECT ERROR BC OF readRegister function not defined... However, I haven't found any library missing... Strange ---------------
const uint8_t adcAddress = 0x48;
const uint8_t configRegister = 0x01;
uint16_t configValue = readRegister( adcAddress, configRegister );

Serial.print( "read config value 0x" );
Serial.println( configValue, HEX );

configValue = ( configValue & !ADS1015_REG_CONFIG_DR_MASK) | ADS1015_REG_CONFIG_DR_3300SPS;
writeRegister( adcAddress, configRegister, configValue );

Serial.print( "sent config value 0x" );
Serial.println( configValue, HEX );

configValue = readRegister( adcAddress, configRegister );

Serial.print( "verifying by rereading config value 0x" );
Serial.println( configValue, HEX );
// -------------------------------------------------------------


ads1015.begin();
}



void loop(void)
{
int i=0;
long depart = micros();
while(i != 1000) {
i++;
results = ads1015.readADC_SingleEnded(0);
}
Serial.println(micros() - depart); 
}

此代码返回大约2000000,对应于2秒或500 Hz的采样率。。。

提前感谢,~TBD

根据数据表,我认为您必须首先在配置寄存器中设置MODE0(连续转换模式(和DR0b111(第24页(。

然后,您可能可以在ALERT/RDY pin上使用ISR(在正确配置后-第15页(,并在每次触发中断时读取数据。

第15页:

ALERT/RDY引脚也可以配置为转换就绪引脚。将Hi_thresh寄存器的最高有效位设置为1Lo_thresh寄存器的最高有效位为0,以启用引脚作为转换就绪引脚。

最新更新