0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派模数转换器的制作

454398 来源:网络整理 作者:网络整理 2019-11-28 08:46 次阅读

概述

不再支持本指南中的示例。请查看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

    文章

    3037

    浏览量

    126500
  • 树莓派
    +关注

    关注

    116

    文章

    1679

    浏览量

    105228
收藏 人收藏

    评论

    相关推荐

    集成式电流检测模数转换器

    电子发烧友网站提供《集成式电流检测模数转换器.pdf》资料免费下载
    发表于 09-02 09:56 0次下载
    集成式电流检测<b class='flag-5'>模数转换器</b>

    LTC2217模数转换器英文手册

    电子发烧友网站提供《LTC2217模数转换器英文手册.pdf》资料免费下载
    发表于 07-31 13:15 0次下载

    逼近型模数转换器特点和应用

    逐次逼近型模数转换器(Successive Approximation Register Analog-to-Digital Converter,简称SAR ADC)是一种常用的模数转换器类型,它
    的头像 发表于 07-22 17:00 390次阅读

    ADS1242模数转换器数据手册

    电子发烧友网站提供《ADS1242模数转换器数据手册.pdf》资料免费下载
    发表于 06-29 14:06 0次下载

    模数转换器的技术参数详解

    模数转换器(ADC,Analog-to-Digital Converter)作为电子系统中的重要组成部分,负责将连续的模拟信号转换为离散的数字信号,以供数字系统进行处理和分析。模数转换器的性能
    的头像 发表于 05-21 16:06 915次阅读

    模数转换器(ADC)的使用教学

    首先是功能,模数转换器接收电压信号并输出一个数字信号,该数字信号是一个数字,这个数字指示了电压信号的大小。
    的头像 发表于 03-05 15:01 2227次阅读
    <b class='flag-5'>模数转换器</b>(ADC)的使用教学

    模数转换器:并行比较型和逐次逼近型

    逐次逼近型模数转换器(Successive Approximation Converter)是一种常用的模数转换器转换方式。它通过逐步逼近输入信号的数值来获得逼近的数字输出。
    发表于 01-23 15:58 1514次阅读
    <b class='flag-5'>模数转换器</b>:并行比较型和逐次逼近型

    模数转换器转换方式有哪几种?模数转换器原理图

    模数转换器的主要作用是将连续变化的模拟信号转换为数字信号,以便于数字系统进行处理、存储和传输。
    发表于 01-23 15:54 2070次阅读
    <b class='flag-5'>模数转换器</b>的<b class='flag-5'>转换</b>方式有哪几种?<b class='flag-5'>模数转换器</b>原理图

    数模转换器模数转换器的区别

    数模转换器模数转换器是两种相反的功能,它们分别是将数字信号转换为模拟信号和将模拟信号转换为数字信号。
    的头像 发表于 12-27 18:18 1242次阅读

    模数转换器的工作原理是什么?

    模数转换器(DAC)是将数字信号转换为模拟信号的设备。其工作原理可以简单描述如下
    的头像 发表于 11-27 18:27 1243次阅读

    AD4112模数转换器(ADC)手册

    电子发烧友网站提供《AD4112模数转换器(ADC)手册.pdf》资料免费下载
    发表于 11-22 15:05 1次下载
    AD4112<b class='flag-5'>模数转换器</b>(ADC)手册

    AD4111模数转换器(ADC)手册

    电子发烧友网站提供《AD4111模数转换器(ADC)手册.pdf》资料免费下载
    发表于 11-22 15:03 0次下载
    AD4111<b class='flag-5'>模数转换器</b>(ADC)手册

    ADC模数转换器的延时原理

    ADC模数转换器的延时原理主要与其内部的采样和保持电路、比较、计数等有关。以下是一般的ADC转换延时过程:
    的头像 发表于 11-16 15:59 767次阅读

    浅谈CW32系列模数转换器(ADC)

    CW32系列模数转换器(ADC)
    的头像 发表于 10-25 15:43 890次阅读
    浅谈CW32系列<b class='flag-5'>模数转换器</b>(ADC)

    直方图测试模数转换器(ADC)介绍

    直方图测试是确定模数转换器(ADC)静态参数的最流行方法之一。
    的头像 发表于 10-17 15:58 1787次阅读
    直方图测试<b class='flag-5'>模数转换器</b>(ADC)介绍