Arduino 利用ADS1115 AD转换模块进行数据读取
去年利用Arduino配合ADS1115 AD转换模块对一个微伏级输出的测试箱进行电压读取,配合上位机进行采样的数据进行数字滤波。ADS1115是具有16位分辨率的高速AD转换芯片,可调增益,最小测量电压为0.0078125mV(约7.8uV),其实7.8uV对我来说还是大了。但没办法,精度越高成本也越高,个人玩家干不起来。软件上使用了Adafruit为ADS系列芯片做好的库Adafruit_AD
·
去年利用Arduino配合ADS1115 AD转换模块对一个微伏级输出的测试箱进行电压读取,配合上位机进行采样的数据进行数字滤波。
ADS1115是具有16位分辨率的高速AD转换芯片,可调增益,最小测量电压为0.0078125mV(约7.8uV),其实7.8uV对我来说还是大了。但没办法,精度越高成本也越高,个人玩家干不起来。
软件上使用了Adafruit为ADS系列芯片做好的库Adafruit_ADS1015,上手简单。ADS1115采样后的数据通过串口输出到上位机上进行处理。上位机需要发送一个“G”命令来获取数据,过程简单的不得了。
/* This module is simplily read data from ADS1115 and transfer to serial port.
* Author: Daniel Gee
* Date: 2019-06-08
*/
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads1115(0x48); // construct an ads1115 at address 0x48
float volt = 0.0;
const int16_t duration = 1;
int16_t adc_data = 0;
char N = 30;
char i =0;
void setup() {
Serial.begin(19200);
ads1115.begin();
ads1115.setGain(GAIN_SIXTEEN); // 16x gain, 1 bit = 0.0078125mV
}
void loop() {
while(Serial.available()){
char inChar = (char)Serial.read();
if(inChar == 'G'){
for (i = 0; i < N; i++){
adc_data = ads1115.readADC_Differential_0_1();
volt = adc_data * 0.0078125 * 10;
Serial.print(volt,4);Serial.print(",");
delay(duration);
}
Serial.println();
}
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)