以前用Arduino碰到过负电压,例如某个电阻一端接地,而其上电流在某个时刻反向了,还要测量电阻两端的电压,这个时候就会遇到负电压。Arduino本身没有办法测量负电压,所以遇到的几次,都是在GND前面加上3.3V或者用其他的电压撑起来,之后再在代码里面减去,挺笨拙地解决了,直到发现ADS1115。ADS1115可以直接测量负电压。ADS1115是16位分辨率的高精度ADC,51、Arduino、树莓派等都能使用它,精度高,成本低,资料多(其实也不多)。 1. ADS1115ADC引脚下面的模块是最常见的。它需要寻址。ADDR不同地址不同解码方式。有四个地址可用。 以下模块不太常见。地址预设为0x48。不包括警报/就绪信号。在大多数应用中,也不需要此信号。 2. ADS1115ADC模块寻址ADS1115的四个地址是通过将ADDR引脚连接到SCL、SDA、GND或VDD来设置的。下图说明了这些连接是如何建立的,并提供了这些连接的地址号。 3.ADS1115精度与范围ADS1115的输出是有符号整数,第一个位用于表达正负号,因此用于AD转换的数值,只有个,首位0,最后一位32767。 默认模式下,ADS1115测量范围为,即32767表示6.144V,这样,ADS1115的分辨率就是。 这是远大于Arduino ADC的5 mV/bit的分辨率的。 4.Arduino ADS1115单端应用先需要下载Adafruit发布的ADS1X15的库,地址https://github.com/adafruit/Adafruit_ADS1X15。 作为Demo,我们要测量Arduino的3.3V电压。注意接线图ADDR与GND连接。 使用以下代码,注意“Adafruit_ADS1115 ads(0x48);”的地址0x48,目前这个构造函数在新的库里面,是不需要显式声明地址的,这可以在库示例里面看到。另外,0.1875 mV因子也是默认的。实际A0、A1、A2、A3是可以同时采集电压的。 #include <Wire.h> 5.ADS1115 Arduino差分测量我们前面提到负电压,即低于GND的电势Arduino无法直接测量,实际上对差分来说,即使两端均非GND,也是可以直接测量的,这正是差分测量的好处。 下面的示例,是在ADS1115的A0与A1之间测量差分电压,如果A1电势高,就会得到正的示数,反之则为负数。接线图如图,注意A0、A1是ADS1115上面的,别找到Arduino板子上去。Arduino一般默认即高阻态,18650即使接到A0与A1之间,也不会有什么危险,但不会得到正确的示数。 使用的代码。库文件里面也有示例。 #include <Wire.h> 实物图,左右两个图里,电源正负极换了一下位置。 当电压为负时,串口得到。我们的稳压电源监视器则显示电压为3.33V。 |
|
来自: 新用户5228KeDY > 《待分类》