数模转换
其实现在我还是没有搞得太懂数模转换,先记录一下吧。
大概一个作用是放大,提高精度,把模拟量转换成数字,以便进行数据分析
本次实验使用ADS1115,其特点是16位数据,可以表达0~65535的十进制数,
Arduino Uno 模拟输入口(例如A0)可以表达0-1023的十进制
ADS1115
实验效果
AIN0:读取的是ADS模块上A0引脚的原始数据
Voltage:通过计算得出的电压值(AIN0 * 0.1875)/1000
BOM表
Arduino Uno *1
ADS1115 模数转换器 *1
跳线若干
接线图
程序
需要下载库:https://github.com/adafruit/Adafruit_ADS1X15
#include <Wire.h>
#include <Adafruit_ADS1015.h> //加载ADS1015/ADS1115库
Adafruit_ADS1115 ads(0x48); //声明一个ads对象,设置模块地址
float Voltage = 0.0; //声明一个变量 用于存储检测到的电压值
void setup(void)
{
Serial.begin(9600); //波特率
ads.begin(); //ads对象开始
}
void loop(void)
{
int16_t adc0; // 16位整数
adc0 = ads.readADC_SingleEnded(0); //读取ADS1115模块的A1引脚的数值
Voltage = (adc0 * 0.1875)/1000; //把数值转换成电压值,0.1875是电压因数
//串口显示数据
Serial.print("AIN0: ");
Serial.print(adc0);
Serial.print("\tVoltage: ");
Serial.println(Voltage, 7);
Serial.println();
delay(1000);
}
程序思路讲解
1,先加载两个库
#include <Wire.h>
#include <Adafruit_ADS1015.h> //加载ADS1015/ADS1115库
2,定义ADS对象并设置地址
Adafruit_ADS1115 ads(0x48); //声明一个ads对象,设置模块地址
3,在setup()里,开始ADS对象
ads.begin(); //ads对象开始
4,读取对应模块上模拟口的数值
adc0 = ads.readADC_SingleEnded(1); //读取ADS1115模块的A1引脚的数值 ,如果读取A0则参数里填写0
还有ads.readADC_Differential_0_1();函数,作用是读取模拟引脚0和1的电压值