概述
不再支持本指南中的示例。請查看MCP3008和ADS1x15指南,了解CircuitPython和Python的用法。
Raspberry Pi是一款出色的小型臺式計算機,可用于控制數字輸入和輸出。但是,當您想讀取模擬信號(例如從熱敏電阻,電位計或許多其他類型的傳感器獲得的信號)時會怎么做?不要放棄!通過將一個小型的模數轉換器(ADC)芯片連接到Pi,您可以為Raspberry Pi程序打開模擬信號的世界!
本指南將為您展示從中讀取模擬值的兩個不錯的選擇帶有Raspberry Pi的Python。您可以使用簡單的MCP3008模擬到數字轉換器(ADC)來讀取10位精度的多達8個模擬輸入通道。或使用更高級的ADS1x15系列ADC讀取12至16位精度和可編程增益級的4個通道-哇!您將立即使用Python庫和示例來啟動并運行這些示例,以從這兩個ADC讀取模擬輸入。
在開始之前,您需要熟悉使用Raspberry的基礎知識。 Pi喜歡加載操作系統,建立網絡并使用SSH連接到終端。查閱“學習Raspberry Pi”系列以獲取更多信息。
在開始指南之前,請確保Raspberry Pi正在運行最新的Raspbian Jessie操作系統(完整版或精簡版)。
繼續學習如何使用MCP3008或ADS1015/ADS1115模擬與Raspberry Pi進行數字轉換。
MCP3008
不再支持本指南中的示例。查閱MCP3008電路Python和Python使用指南:https://learn.adafruit.com/mcp3008-spi-adc/python-circuitpython
MCP3008是低成本的8通道10位模數轉換器。該ADC的精度類似于Arduino Uno的精度,并且具有8個通道,您可以從Pi讀取很多模擬信號。如果您只需要讀取簡單的模擬信號,例如溫度或光傳感器,則此芯片是一個不錯的選擇。如果需要更高的精度或功能,請查看下一頁的ADS1x115系列。但是,請勿使用舊指南中的代碼,因為該指南已棄用。本指南將向您展示安裝和使用新的Python代碼與MCP3008 ADC進行通信的簡便方法。
MCP3008數據表也是重要的資料,可以方便地獲取和使用。
接線
MCP3008使用以下方法連接到Raspberry Pi SPI串行連接。您可以使用硬件SPI總線或任何四個GPIO引腳和軟件SPI與MCP3008通訊。由于軟件SPI可以與Pi上的任何引腳配合使用,因此它的靈活性略高一些,而硬件SPI則稍快一些,但由于只能與特定的引腳配合使用而靈活性較差。如果不確定使用哪個軟件,我建議您使用SPI軟件,因為它更容易設置。
在將芯片連接到Pi之前,首先需要將其放入面包板。如果您尚未使用裸露的DIP芯片(如MCP3008),然后再將其壓入面包板,則其支腳會跨越面包板中間的空通道。這樣,您可以從面包板上觸及芯片的每個分支。
請注意,芯片的方向很重要!確保將其與半個圓形的縮進并指向頂部。參見下面的照片作為示例:
一旦芯片位于面包板中,就可以將其連接到Pi了。 MCP3008芯片的每個分支都有以下名稱:
記住切屑的方向,您必須用半圓像上面的圖一樣向頂部縮進!
軟件SPI
要通過軟件SPI連接將MCP3008連接到Raspberry Pi,您需要進行以下連接:
MCP3008 VDD 到 Raspberry Pi 3.3V
MCP3008 VREF 到 Raspberry Pi 3.3V
MCP3008 AGND 到 Raspberry Pi GND
MCP3008 DGND 到 Raspberry Pi GND
MCP3008 CLK 至 Raspberry Pi引腳18
MCP3008 DOUT 至 Raspberry P我將23針
MCP3008 DIN 固定為 Raspberry Pi針24
MCP3008 CS/SHDN 到 Raspberry Pi引腳25
請注意,您可以將MCP3008 CLK,DOUT,DIN和CS/SHDN引腳交換到任何其他免費數字GPIO Raspberry Pi上的針腳。您只需要修改示例代碼即可使用您的密碼。
硬件SPI
要首先使用硬件SPI,請確保已使用raspi-config工具啟用了SPI。確保啟用SPI接口和加載SPI內核模塊都回答是,然后重新啟動Pi。在繼續之前,運行 ls -l/dev/spi * 命令時,請檢查是否可以看到/dev/spidev0.0和/dev/spidev0.1設備。
Nowwire將MCP3008連接到Raspberry Pi的方法如下:
MCP3008 VDD 到 Raspberry Pi 3.3V
MCP3008 VREF 到 Raspberry Pi 3.3V
MCP3008 AGND 到 Raspberry Pi GND
MCP3008 DGND 到 Raspberry Pi GND
MCP3008 CLK 到 Raspberry PiSCLK
MCP3008 DOUT 到 Raspberry PiMISO
MCP3008 DIN 到 Raspberry Pi MOSI 》
MCP3008 CS/SHDN 到 Raspberry PiCE0
庫安裝
使用軟件或軟件將MCP3008連接到Raspberry Pi之后硬件SPI無線即可開始安裝Adafruit MCP3008 Python庫。
您可以使用一些命令從Python軟件包索引中安裝該庫,也可以從GitHub上的源安裝該庫。從下面選擇以下選項之一。如果不確定我建議從GitHub上的源代碼安裝,因為它還會下載使用該庫的示例。
請注意,在安裝該庫之前,必須先連接Raspberry Pi 通過有線或無線網絡連接到Internet。
源代碼安裝
要從Github上的源代碼安裝,請連接到Raspberry Pi上的終端并運行以下命令:
下載:文件
復制代碼
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus git
cd ~
git clone https://github.com/adafruit/Adafruit_Python_MCP3008.git
cd Adafruit_Python_MCP3008
sudo python setup.py install sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus git
cd ~
git clone https://github.com/adafruit/Adafruit_Python_MCP3008.git
cd Adafruit_Python_MCP3008
sudo python setup.py install
您應該看到庫安裝成功,并顯示類似以下消息:
如果您看到錯誤,請仔細檢查所有先前的命令是否都已運行,并且它們沒有因錯誤而失敗。
Pyt hon軟件包索引安裝
要從Python軟件包索引安裝到Raspberry Pi上的終端并執行以下命令:
下載:文件
復制代碼
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip
sudo pip install adafruit-mcp3008 sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip
sudo pip install adafruit-mcp3008
看到如下消息,說明已成功安裝該庫:
請注意,如果您是從Python軟件包索引中安裝的,則不會具有該庫的示例代碼。您需要手動將這些MCP3008示例下載到Pi,然后在下一部分中運行它們。
庫的用法
要學習如何使用庫,我將逐步介紹其中包含的一些示例代碼。如果您從源代碼下載并安裝了這些庫,則這些示例位于examples文件夾中。通過在Pi上運行,切換到該文件夾:
下載:文件
復制代碼
cd ~/Adafruit_Python_MCP3008/examples cd ~/Adafruit_Python_MCP3008/examples
注意:如果您使用pip命令從Python軟件包索引中安裝了該庫,則不會具有示例代碼,則需要手動將其下載到Pi。
我們將首先查看simpletest.pyexample,這是讀取和顯示ADC通道值的基本示例。首先,讓我們打開文件以將其配置為使用軟件或硬件SPI。運行以下命令以在nano文本編輯器中打開文件:
下載:文件
復制代碼
nano simpletest.py nano simpletest.py
現在向下滾動到頂部附近的以下代碼塊:
下載:文件
復制代碼
# Software SPI configuration:
CLK = 18
MISO = 23
MOSI = 24
CS = 25
mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
# Hardware SPI configuration:
# SPI_PORT = 0
# SPI_DEVICE = 0
# mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE)) # Software SPI configuration:
CLK = 18
MISO = 23
MOSI = 24
CS = 25
mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
# Hardware SPI configuration:
# SPI_PORT = 0
# SPI_DEVICE = 0
# mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
默認情況下,此代碼段將芯片配置為使用上一部分中所述的軟件SPI配置。如果您在軟件SPI設置中使用了不同的引腳,請確保將CLK,MISO,MOSI,CS的值更改為所使用的引腳。
如果您使用的是硬件SPI,則需要注釋掉軟件SPI部分,取消注釋硬件SPI部分。對于硬件SPI,配置應如下所示:
下載:文件
復制代碼
# Software SPI configuration:
# CLK = 18
# MISO = 23
# MOSI = 24
# CS = 25
# mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
# Hardware SPI configuration:
SPI_PORT = 0
SPI_DEVICE = 0
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE)) # Software SPI configuration:
# CLK = 18
# MISO = 23
# MOSI = 24
# CS = 25
# mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
# Hardware SPI configuration:
SPI_PORT = 0
SPI_DEVICE = 0
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
現在通過按 Ctrl-o ,輸入,然后按 Ctrl-x 退出。您可以通過在終端上運行 simpletest.py 代碼:
下載:文件
復制代碼
sudo python simpletest.py sudo python simpletest.py
該示例將打印出包含所有ADC的表格渠道及其價值。每半秒鐘將打印出具有最新通道值的新行。例如,您可能會看到以下輸出:
每列表示一個不同的通道,第一行的標題顯示通道號(從0到7,共8個通道)。每個通道的值是該通道的ADC值。這是一個介于0到1023之間的數字,其中0表示信號處于接地電平,而1023表示信號處于AREF值(3.3V)或更高。在這兩個值之間是成比例的,因此512的值約為3.3/2或1.65伏。
按 Ctrl-c 可以停止示例。
嘗試將電位計連接到模擬輸入之一。將電位計的中間分支(抽頭)連接到模擬輸入,然后將另一分支連接到Pi 3.3V,另一分支連接到Pi接地。運行示例,并旋轉電位計。您應該看到ADC值發生變化,并且隨著電位計的電壓降低而降低,而隨著電壓的升高而升高!
要了解代碼的工作原理,請打開 simpletest.py 再次以nano為例。現在向下滾動到底部的主循環:
下載:文件
復制代碼
print(‘Reading MCP3008 values, press Ctrl-C to quit.。.’)
# Print nice channel column headers.
print(‘| {0:》4} | {1:》4} | {2:》4} | {3:》4} | {4:》4} | {5:》4} | {6:》4} | {7:》4} |’.format(*range(8)))
print(‘-’ * 57)
# Main program loop.
while True:
# Read all the ADC channel values in a list.
values = [0]*8
for i in range(8):
# The read_adc function will get the value of the specified channel (0-7)。
values[i] = mcp.read_adc(i)
# Print the ADC values.
print(‘| {0:》4} | {1:》4} | {2:》4} | {3:》4} | {4:》4} | {5:》4} | {6:》4} | {7:》4} |’.format(*values))
# Pause for half a second.
time.sleep(0.5) print(‘Reading MCP3008 values, press Ctrl-C to quit.。.’)
# Print nice channel column headers.
print(‘| {0:》4} | {1:》4} | {2:》4} | {3:》4} | {4:》4} | {5:》4} | {6:》4} | {7:》4} |’.format(*range(8)))
print(‘-’ * 57)
# Main program loop.
while True:
# Read all the ADC channel values in a list.
values = [0]*8
for i in range(8):
# The read_adc function will get the value of the specified channel (0-7)。
values[i] = mcp.read_adc(i)
# Print the ADC values.
print(‘| {0:》4} | {1:》4} | {2:》4} | {3:》4} | {4:》4} | {5:》4} | {6:》4} | {7:》4} |’.format(*values))
# Pause for half a second.
time.sleep(0.5)
代碼可能看起來有些復雜,但是大多數復雜性來自打印表格。請注意,該行讀取ADC通道值并將其保存在列表中:
values [i] = mcp.read_adc(i)
正在從MCP3008 Python庫調用 read_adc()函數。該函數采用一個參數,即要讀取的通道號(值0至7)。結果,該函數將返回該通道的當前ADC值。
以您自己的代碼讀取ADC通道與調用 read_adc()函數一樣容易!傳遞通道以進行讀取,它將返回該值。使用MCP3008函數庫讀取模擬值實際上就是所有這些!
如果您很好奇,可以像運行simpletest.py一樣檢查并運行differential.pyexample。修改配置以適合您的布線,無論是軟件SPI還是硬件SPI。然后,在運行示例時,它將調用 read_adc_difference()函數,并使用該函數讀取芯片的通道0和1之間的電壓差。有時候讀取兩個信號的差異很有用,以幫助減少模擬信號中的噪聲和其他偽像。
MCP3008 Python庫已包含所有這些內容!
ADS1015/ADS1115
不再支持本指南中的示例。查閱有關CircuitPython和Python使用的ADS1x15指南:https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/python-circuitpython
ADS1015和ADS1115是出色的模數轉換器,易于使用Raspberry Pi的I2C通訊總線進行使用。 ADS1015是具有4個通道的12位ADC,而ADS1115是具有4個通道的高精度16位ADC。兩者均具有從2/3x到16x的可編程增益,因此您可以放大小信號并以更高的精度讀取它們。如果您想從MCP3008或其他簡單的ADC上獲得更好的提升,那么ADS1x15系列是一個不錯的選擇!
在開始使用之前,請務必遵循ADS1x15指南通過焊接組裝ADC板
您可能還會對以下芯片的數據表感興趣:
ADS1015數據表
ADS1115數據表
接線
ADS1015 ADS1115和ADS1115使用相同的I2C通信協議讀取模擬值。您可以按照下面所述的完全相同的方式將每個芯片連接到Pi。
在將ADC連接到Pi之前,請確保使用raspi-config在Raspberry Pi上啟用I2C。在啟用I2C并使用i2cdetect命令檢查ADC可見之后,再向前移動。
按如下所示將ADC連接到Pi:
ADS1x15VDD 至 Raspberry Pi 3.3V
ADS1x15GND 至 Raspberry Pi GND
ADS1x15 SCL 至 Raspberry Pi SCL
ADS1x15 SDA 至 Raspberry Pi SDA
庫安裝
將ADS1x15連接到Raspberry Pi之后,就可以安裝Adafruit ADS1x15 Python庫了。
您可以使用一些命令從Python包索引中安裝該庫,或者可以從GitHub上的源代碼安裝該庫。從下面選擇以下選項之一。如果不確定我建議從GitHub上的源代碼安裝,因為它還會下載使用該庫的示例。
請注意,在安裝該庫之前,必須先連接Raspberry Pi 通過有線或無線網絡連接到Internet。
源代碼安裝
要從Github上的源代碼安裝,請連接到Raspberry Pi上的終端并運行以下命令:
下載:文件
復制代碼
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 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
您應該看到庫安裝成功,并顯示以下類似消息:
如果您看到錯誤,請仔細檢查所有先前的命令是否都已運行,并且它們沒有因錯誤而失敗。
Pyt hon軟件包索引安裝
要從Python軟件包索引安裝到Raspberry Pi上的終端并執行以下命令:
下載:文件
復制代碼
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip
sudo pip install adafruit-ads1x15 sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip
sudo pip install adafruit-ads1x15
看到一條類似以下消息,說明已成功安裝該庫:
請注意,如果您是從Python軟件包索引中安裝的,則不會具有該庫的示例代碼。您需要手動將這些ADS1x15示例下載到Pi,然后在下一部分中運行它們。
庫的用法
要學習如何使用庫,我將逐步介紹其中包含的一些示例代碼。如果您從源代碼下載并安裝了這些庫,則這些示例位于 examples 文件夾中。通過在Pi上運行,切換到該文件夾:
下載:文件
復制代碼
cd ~/Adafruit_Python_ADS1x15/examples cd ~/Adafruit_Python_ADS1x15/examples
注意:如果您使用pip命令從Python軟件包索引中安裝了該庫,則不會具有示例代碼,則需要手動將其下載到Pi。
我們將首先查看simpletest.pyexample,這是讀取和顯示ADC通道值的基本示例。首先,讓我們打開文件以配置我們使用的芯片。運行以下命令以在nano文本編輯器中打開文件:
下載:文件
復制代碼
nano simpletest.py nano simpletest.py
現在向下滾動到頂部附近的以下代碼塊:
下載:文件
復制代碼
# Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()
# Or create an ADS1015 ADC (12-bit) instance.
#adc = Adafruit_ADS1x15.ADS1015()
# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, bus=1) # Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()
# Or create an ADS1015 ADC (12-bit) instance.
#adc = Adafruit_ADS1x15.ADS1015()
# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, bus=1)
此代碼將示例配置為使用ADS1115芯片或ADS1015芯片。未注釋的最上面一行選擇通過創建ADS1115對象來使用ADS1115芯片。它下面是帶注釋的行,該行創建了一個ADS1015對象以使用ADS1015芯片。取消注釋右行,具體取決于所使用的芯片。
例如,如果您使用的是ADS1015,則代碼如下所示:
下載:文件
復制代碼
# Create an ADS1115 ADC (16-bit) instance.
# adc = Adafruit_ADS1x15.ADS1115()
# Or create an ADS1015 ADC (12-bit) instance.
adc = Adafruit_ADS1x15.ADS1015()
# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, bus=1) # Create an ADS1115 ADC (16-bit) instance.
# adc = Adafruit_ADS1x15.ADS1115()
# Or create an ADS1015 ADC (12-bit) instance.
adc = Adafruit_ADS1x15.ADS1015()
# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, bus=1)
最后一條注釋行顯示了更高級的用法,例如選擇自定義I2C地址或總線號。您通常不需要更改這些值。
現在按 Ctrl-o ,輸入,然后按 Ctrl- x 退出。您可以通過在終端上執行來運行 simpletest.py 代碼:
下載:文件
復制代碼
sudo python simpletest.py sudo python simpletest.py
該示例將打印出包含所有ADC的表格渠道及其價值。每半秒鐘將打印出具有最新通道值的新行。例如,您可能會看到如下輸出:
每列代表一個不同的通道,第一行的標題顯示通道號(從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.048V。
按 Ctrl-c 可以停止示例。
嘗試將電位計連接到模擬輸入之一。將電位計的中間分支(抽頭)連接到模擬輸入,然后將另一分支連接到Pi 3.3V,另一分支連接到Pi接地。運行示例,并旋轉電位計。您應該看到ADC值發生變化,并且隨著電位計的電壓降低而降低,而隨著電壓的升高而升高!
要了解代碼的工作原理,請打開 simpletest.py 再次以nano為例。向下滾動到本部分代碼:
下載:文件
復制代碼
# Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
# - 2/3 = +/-6.144V
# - 1 = +/-4.096V
# - 2 = +/-2.048V
# - 4 = +/-1.024V
# - 8 = +/-0.512V
# - 16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1 # Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
# - 2/3 = +/-6.144V
# - 1 = +/-4.096V
# - 2 = +/-2.048V
# - 4 = +/-1.024V
# - 8 = +/-0.512V
# - 16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1
該代碼配置了ADC在讀取信號時將使用的增益。增益會放大信號,因此更容易讀取小的微弱信號。增益還控制芯片可以讀取的電壓范圍。增益值為1時,電壓范圍為4.096伏。這意味著芯片可以讀取-4.096伏至+4.096伏的值。您可以選擇較高的增益來以較高的精度讀取較弱的信號(因為將使用更多的位來表示較小的值范圍)。
為信號選擇正確的增益非常重要,值得考慮一下您可能會看到的電壓范圍。增益太高會使您的信號超出ADC的最大電壓并產生不準確的結果,增益太低會使信號掩埋在噪聲中,從而難以讀取。仔細選擇!
現在向下滾動到底部的主循環:
下載:文件
復制代碼
print(‘Reading ADS1x15 values, press Ctrl-C to quit.。.’)
# Print nice channel column headers.
print(‘| {0:》6} | {1:》6} | {2:》6} | {3:》6} |’.format(*range(4)))
print(‘-’ * 37)
# Main loop.
while True:
# Read all the ADC channel values in a list.
values = [0]*4
for i in range(4):
# Read the specified ADC channel using the previously set gain value.
values[i] = adc.read_adc(i, gain=GAIN)
# Note you can also pass in an optional data_rate parameter that controls
# the ADC conversion time (in samples/second)。 Each chip has a different
# set of allowed data rate values, see datasheet Table 9 config register
# DR bit values.
#values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
# Each value will be a 12 or 16 bit signed integer value depending on the
# ADC (ADS1015 = 12-bit, ADS1115 = 16-bit)。
# Print the ADC values.
print(‘| {0:》6} | {1:》6} | {2:》6} | {3:》6} |’.format(*values))
# Pause for half a second.
time.sleep(0.5) print(‘Reading ADS1x15 values, press Ctrl-C to quit.。.’)
# Print nice channel column headers.
print(‘| {0:》6} | {1:》6} | {2:》6} | {3:》6} |’.format(*range(4)))
print(‘-’ * 37)
# Main loop.
while True:
# Read all the ADC channel values in a list.
values = [0]*4
for i in range(4):
# Read the specified ADC channel using the previously set gain value.
values[i] = adc.read_adc(i, gain=GAIN)
# Note you can also pass in an optional data_rate parameter that controls
# the ADC conversion time (in samples/second)。 Each chip has a different
# set of allowed data rate values, see datasheet Table 9 config register
# DR bit values.
#values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
# Each value will be a 12 or 16 bit signed integer value depending on the
# ADC (ADS1015 = 12-bit, ADS1115 = 16-bit)。
# Print the ADC values.
print(‘| {0:》6} | {1:》6} | {2:》6} | {3:》6} |’.format(*values))
# Pause for half a second.
time.sleep(0.5)
代碼可能看起來有些復雜,但其中大部分是復雜的是從打印表格開始的。請注意,該行讀取ADC通道值并將其保存在列表中:
values [i] = adc.read_adc(i,gain = GAIN)
此行正在從ADS1x15Python庫調用 read_adc()函數。該函數采用一個參數,即要讀取的通道號(0到3的值),以及可選的增益值(默認為1)。結果,該函數將返回該通道的當前ADC值。
以您自己的代碼讀取ADC通道與調用 read_adc()函數一樣容易!傳遞通道以進行讀取,它將返回該值。這就是使用ADS1x15庫讀取模擬值的全部內容!
如果您很好奇,可以像運行simpletest.py一樣檢查并運行differential.pyexample。修改配置以選擇您的芯片。然后,在運行示例時,它將調用 read_adc_difference()函數,并使用該函數讀取芯片的通道0和1之間的電壓差。有時讀取兩個信號的差異很有用,以幫助減少模擬信號中的噪聲和其他偽像。
此外,continuous.pyexample演示了如何打開連續讀取模式并讀取ADC值流。如果您只是從芯片中讀取值并且不想一直擔心調用 read_adc()函數,則此功能很有用。
最后,比較器.pyexample顯示了一種更高級的芯片模式,當ADC值在特定范圍內時,它們可以啟用ALERT輸出引腳。范圍。再次,注釋和數據表應該可以幫助您使用此功能。
ADS1x15Python庫已包含所有內容!
責任編輯:wv
-
模數轉換器
+關注
關注
26文章
3208瀏覽量
126871 -
樹莓派
+關注
關注
117文章
1708瀏覽量
105704
發布評論請先 登錄
相關推薦
評論