99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

樹莓派模數(shù)轉(zhuǎn)換器的制作

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 08:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

不再支持本指南中的示例。請(qǐng)查看MCP3008和ADS1x15指南,了解CircuitPython和Python的用法。

Raspberry Pi是一款出色的小型臺(tái)式計(jì)算機(jī),可用于控制數(shù)字輸入和輸出。但是,當(dāng)您想讀取模擬信號(hào)(例如從熱敏電阻,電位計(jì)或許多其他類型的傳感器獲得的信號(hào))時(shí)會(huì)怎么做?不要放棄!通過將一個(gè)小型的模數(shù)轉(zhuǎn)換器ADC)芯片連接到Pi,您可以為Raspberry Pi程序打開模擬信號(hào)的世界!

本指南將為您展示從中讀取模擬值的兩個(gè)不錯(cuò)的選擇帶有Raspberry Pi的Python。您可以使用簡單的MCP3008模擬到數(shù)字轉(zhuǎn)換器(ADC)來讀取10位精度的多達(dá)8個(gè)模擬輸入通道?;蚴褂酶呒?jí)的ADS1x15系列ADC讀取12至16位精度和可編程增益級(jí)的4個(gè)通道-哇!您將立即使用Python庫和示例來啟動(dòng)并運(yùn)行這些示例,以從這兩個(gè)ADC讀取模擬輸入。

在開始之前,您需要熟悉使用Raspberry的基礎(chǔ)知識(shí)。 Pi喜歡加載操作系統(tǒng),建立網(wǎng)絡(luò)并使用SSH連接到終端。查閱“學(xué)習(xí)Raspberry Pi”系列以獲取更多信息。

在開始指南之前,請(qǐng)確保Raspberry Pi正在運(yùn)行最新的Raspbian Jessie操作系統(tǒng)(完整版或精簡版)。

繼續(xù)學(xué)習(xí)如何使用MCP3008或ADS1015/ADS1115模擬與Raspberry Pi進(jìn)行數(shù)字轉(zhuǎn)換。

MCP3008

不再支持本指南中的示例。查閱MCP3008電路Python和Python使用指南:https://learn.adafruit.com/mcp3008-spi-adc/python-circuitpython

MCP3008是低成本的8通道10位模數(shù)轉(zhuǎn)換器。該ADC的精度類似于Arduino Uno的精度,并且具有8個(gè)通道,您可以從Pi讀取很多模擬信號(hào)。如果您只需要讀取簡單的模擬信號(hào),例如溫度或光傳感器,則此芯片是一個(gè)不錯(cuò)的選擇。如果需要更高的精度或功能,請(qǐng)查看下一頁的ADS1x115系列。但是,請(qǐng)勿使用舊指南中的代碼,因?yàn)樵撝改弦褩売?。本指南將向您展示安裝和使用新的Python代碼與MCP3008 ADC進(jìn)行通信的簡便方法。

MCP3008數(shù)據(jù)表也是重要的資料,可以方便地獲取和使用。

接線

MCP3008使用以下方法連接到Raspberry Pi SPI串行連接。您可以使用硬件SPI總線或任何四個(gè)GPIO引腳和軟件SPI與MCP3008通訊。由于軟件SPI可以與Pi上的任何引腳配合使用,因此它的靈活性略高一些,而硬件SPI則稍快一些,但由于只能與特定的引腳配合使用而靈活性較差。如果不確定使用哪個(gè)軟件,我建議您使用SPI軟件,因?yàn)樗菀自O(shè)置。

在將芯片連接到Pi之前,首先需要將其放入面包板。如果您尚未使用裸露的DIP芯片(如MCP3008),然后再將其壓入面包板,則其支腳會(huì)跨越面包板中間的空通道。這樣,您可以從面包板上觸及芯片的每個(gè)分支。

請(qǐng)注意,芯片的方向很重要!確保將其與半個(gè)圓形的縮進(jìn)并指向頂部。參見下面的照片作為示例:

一旦芯片位于面包板中,就可以將其連接到Pi了。 MCP3008芯片的每個(gè)分支都有以下名稱:

記住切屑的方向,您必須用半圓像上面的圖一樣向頂部縮進(jìn)!

軟件SPI

要通過軟件SPI連接將MCP3008連接到Raspberry Pi,您需要進(jìn)行以下連接:

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

請(qǐng)注意,您可以將MCP3008 CLK,DOUT,DIN和CS/SHDN引腳交換到任何其他免費(fèi)數(shù)字GPIO Raspberry Pi上的針腳。您只需要修改示例代碼即可使用您的密碼。

硬件SPI

要首先使用硬件SPI,請(qǐng)確保已使用raspi-config工具啟用了SPI。確保啟用SPI接口和加載SPI內(nèi)核模塊都回答是,然后重新啟動(dòng)Pi。在繼續(xù)之前,運(yùn)行 ls -l/dev/spi * 命令時(shí),請(qǐng)檢查是否可以看到/dev/spidev0.0和/dev/spidev0.1設(shè)備。

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上的源安裝該庫。從下面選擇以下選項(xiàng)之一。如果不確定我建議從GitHub上的源代碼安裝,因?yàn)樗€會(huì)下載使用該庫的示例。

請(qǐng)注意,在安裝該庫之前,必須先連接Raspberry Pi 通過有線或無線網(wǎng)絡(luò)連接到Internet。

源代碼安裝

要從Github上的源代碼安裝,請(qǐng)連接到Raspberry Pi上的終端并運(yùn)行以下命令:

下載:文件

復(fù)制代碼

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

您應(yīng)該看到庫安裝成功,并顯示類似以下消息:

如果您看到錯(cuò)誤,請(qǐng)仔細(xì)檢查所有先前的命令是否都已運(yùn)行,并且它們沒有因錯(cuò)誤而失敗。

Pyt hon軟件包索引安裝

要從Python軟件包索引安裝到Raspberry Pi上的終端并執(zhí)行以下命令:

下載:文件

復(fù)制代碼

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

看到如下消息,說明已成功安裝該庫:

請(qǐng)注意,如果您是從Python軟件包索引中安裝的,則不會(huì)具有該庫的示例代碼。您需要手動(dòng)將這些MCP3008示例下載到Pi,然后在下一部分中運(yùn)行它們。

庫的用法

要學(xué)習(xí)如何使用庫,我將逐步介紹其中包含的一些示例代碼。如果您從源代碼下載并安裝了這些庫,則這些示例位于examples文件夾中。通過在Pi上運(yùn)行,切換到該文件夾:

下載:文件

復(fù)制代碼

cd ~/Adafruit_Python_MCP3008/examples cd ~/Adafruit_Python_MCP3008/examples

注意:如果您使用pip命令從Python軟件包索引中安裝了該庫,則不會(huì)具有示例代碼,則需要手動(dòng)將其下載到Pi。

我們將首先查看simpletest.pyexample,這是讀取和顯示ADC通道值的基本示例。首先,讓我們打開文件以將其配置為使用軟件或硬件SPI。運(yùn)行以下命令以在nano文本編輯器中打開文件:

下載:文件

復(fù)制代碼

nano simpletest.py nano simpletest.py

現(xiàn)在向下滾動(dòng)到頂部附近的以下代碼塊:

下載:文件

復(fù)制代碼

# 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))

默認(rèn)情況下,此代碼段將芯片配置為使用上一部分中所述的軟件SPI配置。如果您在軟件SPI設(shè)置中使用了不同的引腳,請(qǐng)確保將CLK,MISO,MOSI,CS的值更改為所使用的引腳。

如果您使用的是硬件SPI,則需要注釋掉軟件SPI部分,取消注釋硬件SPI部分。對(duì)于硬件SPI,配置應(yīng)如下所示:

下載:文件

復(fù)制代碼

# 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))

現(xiàn)在通過按 Ctrl-o ,輸入,然后按 Ctrl-x 退出。您可以通過在終端上運(yùn)行 simpletest.py 代碼:

下載:文件

復(fù)制代碼

sudo python simpletest.py sudo python simpletest.py

該示例將打印出包含所有ADC的表格渠道及其價(jià)值。每半秒鐘將打印出具有最新通道值的新行。例如,您可能會(huì)看到以下輸出:

每列表示一個(gè)不同的通道,第一行的標(biāo)題顯示通道號(hào)(從0到7,共8個(gè)通道)。每個(gè)通道的值是該通道的ADC值。這是一個(gè)介于0到1023之間的數(shù)字,其中0表示信號(hào)處于接地電平,而1023表示信號(hào)處于AREF值(3.3V)或更高。在這兩個(gè)值之間是成比例的,因此512的值約為3.3/2或1.65伏。

按 Ctrl-c 可以停止示例。

嘗試將電位計(jì)連接到模擬輸入之一。將電位計(jì)的中間分支(抽頭)連接到模擬輸入,然后將另一分支連接到Pi 3.3V,另一分支連接到Pi接地。運(yùn)行示例,并旋轉(zhuǎn)電位計(jì)。您應(yīng)該看到ADC值發(fā)生變化,并且隨著電位計(jì)的電壓降低而降低,而隨著電壓的升高而升高!

要了解代碼的工作原理,請(qǐng)打開 simpletest.py 再次以nano為例?,F(xiàn)在向下滾動(dòng)到底部的主循環(huán):

下載:文件

復(fù)制代碼

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)

代碼可能看起來有些復(fù)雜,但是大多數(shù)復(fù)雜性來自打印表格。請(qǐng)注意,該行讀取ADC通道值并將其保存在列表中:

values [i] = mcp.read_adc(i)

正在從MCP3008 Python庫調(diào)用 read_adc()函數(shù)。該函數(shù)采用一個(gè)參數(shù),即要讀取的通道號(hào)(值0至7)。結(jié)果,該函數(shù)將返回該通道的當(dāng)前ADC值。

以您自己的代碼讀取ADC通道與調(diào)用 read_adc()函數(shù)一樣容易!傳遞通道以進(jìn)行讀取,它將返回該值。使用MCP3008函數(shù)庫讀取模擬值實(shí)際上就是所有這些!

如果您很好奇,可以像運(yùn)行simpletest.py一樣檢查并運(yùn)行differential.pyexample。修改配置以適合您的布線,無論是軟件SPI還是硬件SPI。然后,在運(yùn)行示例時(shí),它將調(diào)用 read_adc_difference()函數(shù),并使用該函數(shù)讀取芯片的通道0和1之間的電壓差。有時(shí)候讀取兩個(gè)信號(hào)的差異很有用,以幫助減少模擬信號(hào)中的噪聲和其他偽像。

MCP3008 Python庫已包含所有這些內(nèi)容!

ADS1015/ADS1115

不再支持本指南中的示例。查閱有關(guān)CircuitPython和Python使用的ADS1x15指南:https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/python-circuitpython

ADS1015和ADS1115是出色的模數(shù)轉(zhuǎn)換器,易于使用Raspberry Pi的I2C通訊總線進(jìn)行使用。 ADS1015是具有4個(gè)通道的12位ADC,而ADS1115是具有4個(gè)通道的高精度16位ADC。兩者均具有從2/3x到16x的可編程增益,因此您可以放大小信號(hào)并以更高的精度讀取它們。如果您想從MCP3008或其他簡單的ADC上獲得更好的提升,那么ADS1x15系列是一個(gè)不錯(cuò)的選擇!

在開始使用之前,請(qǐng)務(wù)必遵循ADS1x15指南通過焊接組裝ADC板

您可能還會(huì)對(duì)以下芯片的數(shù)據(jù)表感興趣:

ADS1015數(shù)據(jù)表

ADS1115數(shù)據(jù)表

接線

ADS1015 ADS1115和ADS1115使用相同的I2C通信協(xié)議讀取模擬值。您可以按照下面所述的完全相同的方式將每個(gè)芯片連接到Pi。

在將ADC連接到Pi之前,請(qǐng)確保使用raspi-config在Raspberry Pi上啟用I2C。在啟用I2C并使用i2cdetect命令檢查ADC可見之后,再向前移動(dòng)。

按如下所示將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上的源代碼安裝該庫。從下面選擇以下選項(xiàng)之一。如果不確定我建議從GitHub上的源代碼安裝,因?yàn)樗€會(huì)下載使用該庫的示例。

請(qǐng)注意,在安裝該庫之前,必須先連接Raspberry Pi 通過有線或無線網(wǎng)絡(luò)連接到Internet。

源代碼安裝

要從Github上的源代碼安裝,請(qǐng)連接到Raspberry Pi上的終端并運(yùn)行以下命令:

下載:文件

復(fù)制代碼

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

您應(yīng)該看到庫安裝成功,并顯示以下類似消息:

如果您看到錯(cuò)誤,請(qǐng)仔細(xì)檢查所有先前的命令是否都已運(yùn)行,并且它們沒有因錯(cuò)誤而失敗。

Pyt hon軟件包索引安裝

要從Python軟件包索引安裝到Raspberry Pi上的終端并執(zhí)行以下命令:

下載:文件

復(fù)制代碼

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

看到一條類似以下消息,說明已成功安裝該庫:

請(qǐng)注意,如果您是從Python軟件包索引中安裝的,則不會(huì)具有該庫的示例代碼。您需要手動(dòng)將這些ADS1x15示例下載到Pi,然后在下一部分中運(yùn)行它們。

庫的用法

要學(xué)習(xí)如何使用庫,我將逐步介紹其中包含的一些示例代碼。如果您從源代碼下載并安裝了這些庫,則這些示例位于 examples 文件夾中。通過在Pi上運(yùn)行,切換到該文件夾:

下載:文件

復(fù)制代碼

cd ~/Adafruit_Python_ADS1x15/examples cd ~/Adafruit_Python_ADS1x15/examples

注意:如果您使用pip命令從Python軟件包索引中安裝了該庫,則不會(huì)具有示例代碼,則需要手動(dòng)將其下載到Pi。

我們將首先查看simpletest.pyexample,這是讀取和顯示ADC通道值的基本示例。首先,讓我們打開文件以配置我們使用的芯片。運(yùn)行以下命令以在nano文本編輯器中打開文件:

下載:文件

復(fù)制代碼

nano simpletest.py nano simpletest.py

現(xiàn)在向下滾動(dòng)到頂部附近的以下代碼塊:

下載:文件

復(fù)制代碼

# 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芯片。未注釋的最上面一行選擇通過創(chuàng)建ADS1115對(duì)象來使用ADS1115芯片。它下面是帶注釋的行,該行創(chuàng)建了一個(gè)ADS1015對(duì)象以使用ADS1015芯片。取消注釋右行,具體取決于所使用的芯片。

例如,如果您使用的是ADS1015,則代碼如下所示:

下載:文件

復(fù)制代碼

# 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)

最后一條注釋行顯示了更高級(jí)的用法,例如選擇自定義I2C地址或總線號(hào)。您通常不需要更改這些值。

現(xiàn)在按 Ctrl-o ,輸入,然后按 Ctrl- x 退出。您可以通過在終端上執(zhí)行來運(yùn)行 simpletest.py 代碼:

下載:文件

復(fù)制代碼

sudo python simpletest.py sudo python simpletest.py

該示例將打印出包含所有ADC的表格渠道及其價(jià)值。每半秒鐘將打印出具有最新通道值的新行。例如,您可能會(huì)看到如下輸出:

每列代表一個(gè)不同的通道,第一行的標(biāo)題顯示通道號(hào)(從0到3,總共4個(gè)通道)。每個(gè)通道的值是該通道的ADC值。這個(gè)數(shù)字的范圍是16位ADS1115上的-32768到32767或12位ADS1015上的-2048到2047。值0表示信號(hào)處于接地(參考)電平,值32767(或ADS105上的2047)表示信號(hào)等于或高于電流增益的最大電壓值(默認(rèn)為4.096V),以及-32768(或ADS1015上的-2048)表示它是低于參考電壓的負(fù)電壓(例如,如果處于差分模式)。在這兩個(gè)值之間是成比例的,因此16384的值約為4.096/2或2.048V。

按 Ctrl-c 可以停止示例。

嘗試將電位計(jì)連接到模擬輸入之一。將電位計(jì)的中間分支(抽頭)連接到模擬輸入,然后將另一分支連接到Pi 3.3V,另一分支連接到Pi接地。運(yùn)行示例,并旋轉(zhuǎn)電位計(jì)。您應(yīng)該看到ADC值發(fā)生變化,并且隨著電位計(jì)的電壓降低而降低,而隨著電壓的升高而升高!

要了解代碼的工作原理,請(qǐng)打開 simpletest.py 再次以nano為例。向下滾動(dòng)到本部分代碼:

下載:文件

復(fù)制代碼

# 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在讀取信號(hào)時(shí)將使用的增益。增益會(huì)放大信號(hào),因此更容易讀取小的微弱信號(hào)。增益還控制芯片可以讀取的電壓范圍。增益值為1時(shí),電壓范圍為4.096伏。這意味著芯片可以讀取-4.096伏至+4.096伏的值。您可以選擇較高的增益來以較高的精度讀取較弱的信號(hào)(因?yàn)閷⑹褂酶嗟奈粊肀硎据^小的值范圍)。

為信號(hào)選擇正確的增益非常重要,值得考慮一下您可能會(huì)看到的電壓范圍。增益太高會(huì)使您的信號(hào)超出ADC的最大電壓并產(chǎn)生不準(zhǔn)確的結(jié)果,增益太低會(huì)使信號(hào)掩埋在噪聲中,從而難以讀取。仔細(xì)選擇!

現(xiàn)在向下滾動(dòng)到底部的主循環(huán):

下載:文件

復(fù)制代碼

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)

代碼可能看起來有些復(fù)雜,但其中大部分是復(fù)雜的是從打印表格開始的。請(qǐng)注意,該行讀取ADC通道值并將其保存在列表中:

values [i] = adc.read_adc(i,gain = GAIN)

此行正在從ADS1x15Python庫調(diào)用 read_adc()函數(shù)。該函數(shù)采用一個(gè)參數(shù),即要讀取的通道號(hào)(0到3的值),以及可選的增益值(默認(rèn)為1)。結(jié)果,該函數(shù)將返回該通道的當(dāng)前ADC值。

以您自己的代碼讀取ADC通道與調(diào)用 read_adc()函數(shù)一樣容易!傳遞通道以進(jìn)行讀取,它將返回該值。這就是使用ADS1x15庫讀取模擬值的全部內(nèi)容!

如果您很好奇,可以像運(yùn)行simpletest.py一樣檢查并運(yùn)行differential.pyexample。修改配置以選擇您的芯片。然后,在運(yùn)行示例時(shí),它將調(diào)用 read_adc_difference()函數(shù),并使用該函數(shù)讀取芯片的通道0和1之間的電壓差。有時(shí)讀取兩個(gè)信號(hào)的差異很有用,以幫助減少模擬信號(hào)中的噪聲和其他偽像。

此外,continuous.pyexample演示了如何打開連續(xù)讀取模式并讀取ADC值流。如果您只是從芯片中讀取值并且不想一直擔(dān)心調(diào)用 read_adc()函數(shù),則此功能很有用。

最后,比較器.pyexample顯示了一種更高級(jí)的芯片模式,當(dāng)ADC值在特定范圍內(nèi)時(shí),它們可以啟用ALERT輸出引腳。范圍。再次,注釋和數(shù)據(jù)表應(yīng)該可以幫助您使用此功能。

ADS1x15Python庫已包含所有內(nèi)容!
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    3359

    瀏覽量

    128274
  • 樹莓派
    +關(guān)注

    關(guān)注

    121

    文章

    2009

    瀏覽量

    107477
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Analog Devices Inc. AD9217射頻模數(shù)轉(zhuǎn)換器數(shù)據(jù)手冊(cè)

    Analog Devices Inc. AD9217射頻模數(shù)轉(zhuǎn)換器是一款單通道、12位、6GSPS/10.25GSPS射頻 (RF) 模數(shù)轉(zhuǎn)換器 (ADC),具有6.5GHz輸入帶寬。AD9217轉(zhuǎn)換器為需要寬瞬時(shí)帶寬和低
    的頭像 發(fā)表于 07-01 14:19 ?166次閱讀
    Analog Devices Inc. AD9217射頻<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>數(shù)據(jù)手冊(cè)

    ad7760模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《ad7760模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-17 17:41 ?0次下載

    國產(chǎn)模數(shù)轉(zhuǎn)換器100%替換ADS1278應(yīng)用于振動(dòng)和模態(tài)分析

    國產(chǎn)模數(shù)轉(zhuǎn)換器100%替換ADS1278應(yīng)用于振動(dòng)和模態(tài)分析
    的頭像 發(fā)表于 04-16 09:50 ?261次閱讀
    國產(chǎn)<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>100%替換ADS1278應(yīng)用于振動(dòng)和模態(tài)分析

    國產(chǎn)模數(shù)轉(zhuǎn)換器SC1642——ADS1258優(yōu)質(zhì)國產(chǎn)替代方案

    國產(chǎn)模數(shù)轉(zhuǎn)換器SC1642——ADS1258優(yōu)質(zhì)國產(chǎn)替代方案
    的頭像 發(fā)表于 01-22 09:58 ?630次閱讀
    國產(chǎn)<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>SC1642——ADS1258優(yōu)質(zhì)國產(chǎn)替代方案

    LTC2245和國產(chǎn)模數(shù)轉(zhuǎn)換器SC2245特征以及應(yīng)用優(yōu)勢分享

    LTC2245和國產(chǎn)模數(shù)轉(zhuǎn)換器SC2245特征以及應(yīng)用優(yōu)勢分享
    的頭像 發(fā)表于 01-20 10:04 ?596次閱讀
    LTC2245和國產(chǎn)<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>SC2245特征以及應(yīng)用優(yōu)勢分享

    24位模數(shù)轉(zhuǎn)換器SC1641——AD7793的優(yōu)質(zhì)國產(chǎn)替代方案

    24位模數(shù)轉(zhuǎn)換器SC1641——AD7793的優(yōu)質(zhì)國產(chǎn)替代方案
    的頭像 發(fā)表于 01-15 10:09 ?659次閱讀
    24位<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>SC1641——AD7793的優(yōu)質(zhì)國產(chǎn)替代方案

    請(qǐng)問模數(shù)轉(zhuǎn)換器ADS8344的多通道采樣是同步的嗎?

    請(qǐng)問模數(shù)轉(zhuǎn)換器ADS8344的多通道采樣是同步的嗎?如果不是的話,每個(gè)通道采樣的時(shí)間差是多少?。肯戎x過了。
    發(fā)表于 01-15 06:30

    模數(shù)轉(zhuǎn)換器ADI AD7606與SC1467的深度對(duì)比和應(yīng)用分析

    模數(shù)轉(zhuǎn)換器ADI AD7606與SC1467的深度對(duì)比和應(yīng)用分析
    的頭像 發(fā)表于 01-13 09:52 ?949次閱讀
    <b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>ADI AD7606與SC1467的深度對(duì)比和應(yīng)用分析

    使用ADS1115模數(shù)轉(zhuǎn)換器時(shí),它的PGA的增益是如何設(shè)置的?

    使用ADS1115模數(shù)轉(zhuǎn)換器時(shí),它的PGA的增益是如何設(shè)置的,按照數(shù)據(jù)手冊(cè),設(shè)置FSR=4.096V或者6.144V,測量3V電壓,都是3V左右,這是什么問題。
    發(fā)表于 12-03 07:18

    高速模數(shù)轉(zhuǎn)換器基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《高速模數(shù)轉(zhuǎn)換器基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:31 ?0次下載
    高速<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>基礎(chǔ)知識(shí)

    國產(chǎn)模數(shù)轉(zhuǎn)換器可替換AD9253用于電子干擾

    國產(chǎn)模數(shù)轉(zhuǎn)換器可替換AD9253用于電子干擾
    的頭像 發(fā)表于 09-26 09:46 ?649次閱讀
    國產(chǎn)<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>可替換AD9253用于電子干擾

    集成式電流檢測模數(shù)轉(zhuǎn)換器

    電子發(fā)燒友網(wǎng)站提供《集成式電流檢測模數(shù)轉(zhuǎn)換器.pdf》資料免費(fèi)下載
    發(fā)表于 09-02 09:56 ?0次下載
    集成式電流檢測<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>

    國產(chǎn)模數(shù)轉(zhuǎn)換器兼容ADS1220用于BTS電池化成

    國產(chǎn)模數(shù)轉(zhuǎn)換器兼容ADS1220用于BTS電池化成
    的頭像 發(fā)表于 08-12 10:13 ?667次閱讀
    國產(chǎn)<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>兼容ADS1220用于BTS電池化成

    LTC2217模數(shù)轉(zhuǎn)換器英文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《LTC2217模數(shù)轉(zhuǎn)換器英文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 07-31 13:15 ?0次下載

    逼近型模數(shù)轉(zhuǎn)換器特點(diǎn)和應(yīng)用

    逐次逼近型模數(shù)轉(zhuǎn)換器(Successive Approximation Register Analog-to-Digital Converter,簡稱SAR ADC)是一種常用的模數(shù)轉(zhuǎn)換器類型,它
    的頭像 發(fā)表于 07-22 17:00 ?1215次閱讀