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的最大電壓並產生不准確的結果,增益太低會使信號掩埋在噪聲中,使其難以讀取。謹慎選擇!