如何解决ADS 1015采样率
我最近购买了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);
}
此代码返回大约2,000,000,相当于2秒或500 Hz的采样率...
预先感谢, 〜待定
解决方法
根据datasheet,我认为您必须首先在配置中将MODE
设置为0
(连续转换模式),将DR
设置为0b111
注册(第24页)。
然后,您可能可以在ISR
上使用ALERT/RDY pin
(经过正确配置-第15页),并在每次触发中断时读取数据。
第15页:
ALERT / RDY引脚也可以配置为转换就绪引脚。 将Hi_thresh寄存器的最高有效位设置为1,然后将 Lo_thresh寄存器的最高有效位为0,以使该引脚为 转换就绪引脚。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。