树莓派使用adc


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的最大电压并产生不准确的结果,增益太低会使信号掩埋在噪声中,使其难以读取。谨慎选择!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM