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

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

3天内不再提示

如何将PCF8591 ADC模块与Raspberry Pi连接

科技观察员 来源:circuitdigest 作者:Abhishek Sharma 2022-08-26 15:58 次阅读

模数转换在嵌入式电子产品中是一项非常重要的任务,因为大多数传感器模拟值的形式提供输出并将它们馈送到只理解二进制值的微控制器,我们必须将它们转换为数字值。因此,为了能够处理模拟数据,微控制器需要模数转换器

在本教程中,我们将学习如何将 PCF8591 ADC/DAC 模块与 Raspberry Pi 连接。

所需组件

树莓派

PCF8591 ADC模块

100K 锅

跨接电缆

假设您安装了最新的 Raspbian OS 的 Raspberry Pi,并且您知道如何使用 putty 等终端软件通过 SSH 连接到 Pi。如果您是 Raspberry Pi 新手,请按照本文 开始使用 Raspberry Pi。尽管如此,如果您遇到任何问题,那么有大量的 Raspberry Pi 教程 可以提供帮助。

PCF8591 ADC/DAC 模块

PCF8591 是一个 8 位模数或 8 位数模转换器模块,这意味着每个引脚可以读取高达 256 的模拟值。它还具有 LDR 和板上提供的热敏电阻电路。该模块有四个模拟输入和一个模拟输出。它适用于I 2 C 通信,因此有用于串行时钟和串行数据地址的 SCL 和 SDA 引脚。它需要2.5-6V的电源电压并且具有低待机电流。我们也可以通过调节模块上电位器的旋钮来控制输入电压。板上还有三个跳线。J4接选择热敏电阻接入电路,J5接选择LDR/光敏电阻接入电路J6连接选择可调电压接入电路。板上有两个 LED D1 和 D2-D1 显示输出电压强度,D2 显示电源电压强度。输出或电源电压越高,LED D1 或 D2 的强度越高。您还可以使用 VCC 或 AOUT 引脚上的电位器来测试这些 LED。

poYBAGMIfOCAeCLFAAKC_eziIIE366.png

Raspberry Pi 中的 I2C 引脚

为了将PCF8591与 Raspberry Pi 一起使用,首先要做的是了解 Raspberry Pi I2C 端口引脚并在 Raspberry pi 中配置 I2C 端口。

下面是树莓派 3 Model B+ 的引脚图, 本教程使用I2C 引脚 GPIO2 (SDA) 和 GPIO3 (SCL) 。

在树莓派中配置 I2C

默认情况下,I2C 在 Raspberry Pi 中是禁用的。所以首先必须启用它。在 Raspberry Pi 中启用 I2C

1. 转到终端并键入 sudo raspi-config。

2. 现在树莓派软件配置工具出现了。

3. 选择 接口选项 ,然后启用 I2C。

poYBAGMIfN2AUQqyAABf8k3uFr0764.png

4. 启用 I2C 后重启 Pi。

使用树莓派扫描 PCF8591 的 I2C 地址

现在为了开始与 PCF8591 IC 通信,Raspberry Pi 必须知道它的 I2C 地址。要找到地址,首先将 PCF8591 的 SDA 和 SCL 引脚连接到 Raspberry Pi 的 SDA 和 SCL 引脚。还要连接 +5V 和 GND 引脚。

现在打开终端并输入以下命令以了解连接的 I2C 设备的地址,

sudo i2cdetect –y 1 或 sudo i2cdetect –y 0

现在找到 I2C 地址后,是时候构建电路并安装必要的库了,以便将 PCF8591 与 Raspberry Pi 一起使用。

将 PCF8591 ADC/DAC 模块与 Raspberry Pi 连接

PCF8591与树莓派接口的电路图很简单。在这个接口示例中,我们将从任何模拟引脚读取模拟值并将其显示在 Raspberry Pi 终端上。我们可以使用 100K 的罐子来更改这些值。

poYBAGMIfNeAIwmLAADv9nzg8jQ340.png

poYBAGMIfNOAFfisAAWeTRBIup0871.png

将 VCC 和 GND 连接到树莓派的 GPIO2 和 GPIO。接下来,将 SDA 和 SCL 分别连接到 GPIO3 和 GPIO5。最后用AIN0连接一个100K的电位器。您还可以添加16x2 LCD来显示 ADC 值,而不是在终端上显示。

用于模数转换 (ADC) 的 Python 程序

首先,导入用于I2 C 总线通信的smbus库和时间库,以在打印值之间提供休眠时间。

导入 smbus
导入时间

现在定义一些变量。第一个变量包含 I2C 总线的地址,第二个变量包含第一个模拟输入引脚的地址。

地址 = 0x48 
A0 = 0x40

接下来,我们制作了库 smbus 的函数 SMBus(1) 的对象

总线 = smbus.SMBus(1)

现在,第一行告诉 IC 在第一个模拟输入引脚上进行模拟测量。第二行将在模拟引脚读取的地址存储在变量值中。最后打印值。

while True: 
    bus.write_byte(address,A0) 
    value = bus.read_byte(address) 
    print(value) time.sleep 
    (0.1)

现在终于将 python 代码保存在带有 .py 扩展名的文件中,并使用以下命令在树莓派终端中运行代码“

蟒蛇文件名.py

现在终于将 python 代码保存在带有 .py 扩展名的文件中,并使用以下命令在树莓派终端中运行代码“

在运行代码之前,请确保您已启用 I 2 C 通信并且所有引脚都如图所示连接,否则会显示错误。模拟值必须开始显示在终端上,如下所示。调整锅的旋钮,你会看到数值的逐渐变化。

pYYBAGMIfM6AYQlrAABQTy37pq0375.png

import smbus

导入时间

地址 = 0x48

总线 = smbus.SMBus(1)


while True:

bus.write_byte(address,A0)

value = bus.read_byte(address)

print(value) time.sleep

(0.1)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    95

    文章

    5652

    浏览量

    539490
  • 模数转换器
    +关注

    关注

    25

    文章

    2299

    浏览量

    126018
  • PCF8591
    +关注

    关注

    3

    文章

    67

    浏览量

    32504
收藏 人收藏

    评论

    相关推荐

    AD采集问题(PCF8591

    本人新手,请教PCF8591的问题:系统使用PCF8591和STC89C52采集4路模拟电压,然后送数码管显示。单路模拟采集没有问题,多路就有问题了。采集不对,显示不对。上传源玛,请同行指点一二。不胜感激。
    发表于 12-01 16:38

    PCF8591 DA转换

    想通过PCF8591芯片 进行DA转换 在1V开始 隔一秒输出加1V 应该怎么写程序 没弄懂PCF8591的工作原理还望大神赐教
    发表于 10-04 16:09

    PCF8591是什么?怎样去设计PCF8591电路?

    PCF8591是什么?怎样去设计PCF8591电路?如何去编写ADC/DAC模块函数代码?
    发表于 07-19 08:56

    PCF8591读取电压值如何去实现

    PCF8591读取电压值(AD转换)A/D的主要指标常用A/D器件 PCF8591PCF8591的控制字节A/D的主要指标1、ADC的位数:n位ADC代表,2的n次方个刻度2、基准源:
    发表于 01-25 07:56

    PCF8591ADC与DAC分别是什么意思

    PCF8591ADC与DAC分别是什么意思?它们之间有何关系呢?
    发表于 02-14 07:36

    PCF8591中文数据手册

    PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行IC总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在
    发表于 03-22 15:41 1726次下载
    <b class='flag-5'>PCF8591</b>中文数据手册

    PCF8591驱动程序

    PCF8591驱动程序 51单片机程序
    发表于 08-31 16:11 27次下载

    PCF8591 ADC和DAC芯片的数据手册免费下载

    本文档的主要内容详细介绍的是PCF8591 ADC和DAC芯片的数据手册免费下载主要内容包括了:YL-40 AD模块使用说明,四路采集串口显示程序,Commix串口调试助手,YL-40模块
    发表于 07-15 08:00 67次下载
    <b class='flag-5'>PCF8591</b> <b class='flag-5'>ADC</b>和DAC芯片的数据手册免费下载

    微雪电子ADC DAC AD DA转换PCF8591 PCF8591T简介

    PCF8591 AD DA转换模块 I2C接口 8位精度 四通道AD 单通道DA 电压输出型 型号 PCF8591 AD DA Board
    的头像 发表于 12-30 09:59 2657次阅读
    微雪电子<b class='flag-5'>ADC</b> DAC AD DA转换<b class='flag-5'>PCF8591</b> <b class='flag-5'>PCF8591</b>T简介

    PCF8591的原理图与电路图解析

    PCF8591是一个单电源低功耗的8位CMOS数据采集器件,其接口电路的工作原理图,PCF8591原理图与PCF8591电路图。
    的头像 发表于 02-20 01:18 4.6w次阅读
    <b class='flag-5'>PCF8591</b>的原理图与电路图解析

    蓝桥杯单片机——PCF8591 ADC/DAC模块

    。模拟电压输入电路图:硬件上旋动Rb2旋钮,即可改变模拟电压的输入值。光强电阻电压输入电路图:光敏电阻值的改变,影响该模拟电压通道的输入值。ADC/DAC模块驱动配置PCF8591采用IIC总线接口器件寻址方法,器件地址和引脚地
    发表于 11-17 11:06 10次下载
    蓝桥杯单片机——<b class='flag-5'>PCF8591</b> <b class='flag-5'>ADC</b>/DAC<b class='flag-5'>模块</b>

    通过PCF8591读取电压值(AD转换)

    PCF8591读取电压值(AD转换)A/D的主要指标常用A/D器件 PCF8591PCF8591的控制字节A/D的主要指标1、ADC的位数:n位ADC代表,2的n次方个刻度2、基准源:
    发表于 12-01 09:06 38次下载
    通过<b class='flag-5'>PCF8591</b>读取电压值(AD转换)

    单片机:PCF8591 应用程序

    文章目录PCF8591 应用程序PCF8591 应用程序PCF8591 的通信接口是 I2C,那么编程肯定是要符合这个协议的。单片机对 PCF8591 进行初始化,一共发送三个字节即可
    发表于 01-18 10:38 26次下载
    单片机:<b class='flag-5'>PCF8591</b> 应用程序

    PCF8591 ADC与Arduino连接的方法

    在本教程中,我们将检查 如何将 PCF8591 ADC/DAC 模块与 Arduino 连接
    发表于 08-26 15:18 3183次阅读
    将<b class='flag-5'>PCF8591</b> <b class='flag-5'>ADC</b>与Arduino<b class='flag-5'>连接</b>的方法

    Linux驱动开发-编写PCF8591(ADC)芯片驱动

    PCF8591是一个IIC总线接口的ADC/DAC转换芯片,功能比较强大,这篇文章就介绍在Linux系统里如何编写一个PCF8591的驱动,完成ADC数据采集,DAC数据输出。
    的头像 发表于 09-17 15:16 1576次阅读
    Linux驱动开发-编写<b class='flag-5'>PCF8591</b>(<b class='flag-5'>ADC</b>)芯片驱动