ADS1015 / ADS1115
引脚连接
Connect the ADC to the Pi as follows:
- ADS1x15 VDD to Raspberry Pi 3.3V
- ADS1x15 GND to Raspberry Pi GND
- ADS1x15 SCL to Raspberry Pi SCL
- ADS1x15 SDA to Raspberry Pi SDA
从源码安装
sudo apt-get update sudo apt-get install build-essential python-dev python-smbus git cd ~ git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git cd Adafruit_Python_ADS1x15 sudo python setup.py install
从pip安装
sudo apt-get update sudo apt-get install build-essential python-dev python-smbus python-pip sudo pip install adafruit-ads1x15
使用代码
cd ~/Adafruit_Python_ADS1x15/examples
每列代表一个不同的频道,第一行的标题显示频道编号(从0到3,共4个频道)。每个通道的值是该通道的ADC值。这个数字在16位ADS1115上从-32768到32767,在12位ADS1015上从-2048到2047。值0表示信号处于接地(参考)电平,值32767(或ADS105上的2047)表示信号等于或高于电流增益的最大电压值(默认为4.096V),以及-32768(或ADS1015上的-2048)表示它是低于参考电压的负电压(例如,如果您处于差分模式)。两者之间的值彼此成比例,因此16384的值约为4.096 / 2或2.048伏。
尝试将电位计连接到模拟输入之一。将电位计的中间分支(抽头)连接到模拟输入,然后将另一分支连接到Pi 3.3V,另一分支连接到Pi接地。运行示例,并旋转电位计。您应该看到ADC值发生变化,并且随着电位计的电压降低而降低,而随着电压的升高而升高
代码介绍
#为读取0到4.09V的电压选择增益1。 #或选择其他增益来更改读取的电压范围: #-2/3 = +/- 6.144V #-1 = +/- 4.096V #-2 = +/- 2.048V #-4 = +/- 1.024V #-8 = +/- 0.512V #-16 = +/- 0.256V #有关增益的更多信息,请参见ADS1015 / ADS1115数据表中的表3。 增益= 1
打印(“读取ADS1x15值,按Ctrl-C退出...” ) #打印漂亮的频道列标题。 打印('| {0:> 6} | {1:> 6} | {2:> 6} | {3:> 6} |' 。格式(*范围(4 ))) 打印('-' * 37 ) #主循环。 而True : #阅读列表中的所有ADC通道的值。 值= [ 0 ] * 4 对于我在范围(4 ): #使用先前设置的增益值读取指定的ADC通道。 值[ i ] = adc 。READ_ADC (我,增益= GAIN ) #注意,您还可以传入一个可选的data_rate参数,该参数控制 #ADC转换时间(采样/秒)。每个芯片都有不同的 #一组允许的数据速率值,请参见数据表表9配置寄存器 #DR位值。 #values [i] = adc.read_adc(i,gain = GAIN,data_rate = 128) #每个值都是12或16位带符号整数值,具体取决于 #ADC(ADS1015 = 12位,ADS1115 = 16位)。 #打印ADC值。 打印('| {0:> 6} | {1:> 6} | {2:> 6} | {3:> 6} |' 。格式(*值)) #暂停半秒钟。 时间。睡眠(0.5 )
该代码可能看起来有些复杂,但是大多数复杂性来自打印表。请注意,该行读取ADC通道值并将其保存在列表中:
values [i] = adc.read_adc(i,gain = GAIN)
该行从ADS1x15 Python库调用read_adc()函数。该函数采用一个参数,即要读取的通道号(0到3的值),以及可选的增益值(默认为1)。结果,该函数将返回该通道的当前ADC值。
用自己的代码读取ADC通道就像调用read_adc()函数一样简单!传递通道以进行读取,它将返回该值。这就是使用ADS1x15库读取模拟值的全部内容!
如果您好奇,可以 像运行simpletest.py一样检查并运行differential.py示例。修改配置以选择您的芯片。然后,在运行示例时,它将调用read_adc_difference()函数,并使用该函数读取芯片的通道0和1之间的电压差。有时读取两个信号的差值很有用,以帮助减少模拟信号中的噪声和其他伪像。
另外,continuous.py 示例还演示了如何打开连续读取模式并读取ADC值流。如果您只是从芯片中读取值,并且不想一直担心调用read_adc()函数,则这很有用。请参阅示例中的注释,以了解其工作原理。
最后,comparison.py 示例显示了芯片的更高级模式,在这些模式下,当ADC值落在特定范围内时,它们可以启用ALERT输出引脚。同样,注释和数据表应可帮助您使用此功能。
这就是ADS1x15 Python库的全部内容!
该代码配置了ADC在读取信号时将使用的增益。增益会放大信号,因此更容易读取小的微弱信号。增益还控制芯片可以读取的电压范围。增益值为1时,电压范围为4.096伏。这意味着芯片可以读取-4.096伏至+4.096伏的值。您可以选择较高的增益来以较高的精度读取较弱的信号(因为将使用更多的位来表示较小的值范围)。
为信号选择合适的增益非常重要,值得考虑一下可能看到的电压范围。增益太高会使您的信号超出ADC的最大电压并产生不准确的结果,增益太低会使信号掩埋在噪声中,使其难以读取。谨慎选择!