电工基础

电工基础知识_电工技术-电工最常见电路

基于MCP4725 DAC设计一个使用Raspberry Pi的数模转换器

时间:2023-03-14 11:27来源:未知 作者:admin 点击:
微控制器只处理数字值,但在现实世界中我们必须处理 模拟 信号 。这就是为什么 ADC ( 模数转换器 ) 可以将现实世界的模拟值转换为数字形式,以便微控制器可以处理信号。但是,

  微控制器只处理数字值,但在现实世界中我们必须处理模拟信号。这就是为什么 ADC模数转换器) 可以将现实世界的模拟值转换为数字形式,以便微控制器可以处理信号。但是,如果我们需要来自数字值的模拟信号怎么办,那么就来了 DAC数模转换器)。

  DAC 可用于许多应用 ,例如电机控制、控制 LED 灯的亮度、 音频放大器、视频编码器、数据采集系统等。

  我们已经 将 MCP4725 DAC 模块与 ArduinoSTM32 连接起来。今天我们将使用相同的 MCP4725 DAC IC 来设计一个 使用 Raspberry Pi 的数模转换器。假设您已经在 Raspberry PI 上安装了最新操作系统,并且可以通过 SSH 访问它。

  所需组件

  树莓派 3 B+(安装了 Raspbian 操作系统)

  MCP4725 DAC集成电路

  16x2 液晶显示器

  面包板

  连接电线

  MCP4725 DAC 模块(数模转换器)

  MCP4725 IC 是一款 12 位数模转换器模块 ,用于生成(0 至 5V)的输出模拟电压,并通过 I2C 通信进行控制。它还带有板载非易失性存储器 EEPROM

  该 IC 具有 12 位分辨率。这意味着我们使用(0 到 4096)作为输入来提供相对于参考电压的电压输出。最大参考电压为 5V。

  计算输出电压的公式

  O/P 电压 = (参考电压/分辨率) x 数字值

  例如 ,如果我们使用 5V 作为参考电压,假设数字值为 2048。因此要计算 DAC 输出。

  O/P 电压 = (5/ 4096) x 2048 = 2.5V

  MCP4725的引脚排列

  下面是 MCP4725 的图像,清楚地标明了引脚名称。

poYBAGMYVAKAVUmdAAMAKq_tW8s468.png

pYYBAGMYU_6AFYYaAAAXJecSDEU088.png

  该 IC 可以使用 I2C 通信进行控制,只需要两条线 SCL 和 SDA。默认情况下,MCP4725 的 I2C 地址为 0x60。现在我们了解了 Raspberry pi 中的 I2C 通信。

  Raspberry Pi 中的 I2C 引脚

  为了将 MCP4725 与 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。

pYYBAGMYU_qAD8hqAABfGqZyko4390.png

  4. 启用 I2C 后重启 Pi。

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

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

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

 

sudo i2cdetect –y 1或sudo i2cdetect –y 0

 

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

将 MCP4725 Adafruit 库安装到 Raspberry Pi 中

为了将MCP4725 DAC 板与 Raspberry Pi 的 I2C 总线一起使用,使用了 Adafruit MCP4725 库。要下载并安装库,请按照下列步骤操作:

1. 确保 Raspberry Pi 已连接到活跃的互联网。

2.接下来打开一个终端并一一运行以下行。

 

sudo apt-get install git build-essential python-dev git clone https://github.com/adafruit/Adafruit_Python_MCP4725.git cd Adafruit_Python_MCP4725 sudo python setup.py install

 

3. 安装成功后,Adafruit MCP4725 库现在可以在任何 python 脚本中使用该行导入

 

导入 Adafruit_MCP4725

 

安装 Adafruit LCD 显示库

此项目中使用 LCD 来显示 DAC 和模拟电压值,因此要在 Raspberry Pi 中下载并安装 LCD 库,请按照以下步骤操作:

1.打开一个终端窗口,并逐行运行以下几行。

 

apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install

 

2. 安装 LCD 库后,现在可以使用以下行从任何 python 脚本中使用 Adafruit_python_CharLCD

 

导入 Adafruit_CharLCD 作为 LCD​

 

  现在 Raspberry Pi 已准备好为数模转换器编写代码,所以让我们连接电路,如下图所示。

  电路图和连接

  下面给出了将DAC IC MCP4725 与 Raspberry Pi 一起使用的电路图:

poYBAGMYU_SAKouOAAI2UUbPwt4432.png

  (16x2) LCD 和 Raspberry Pi 之间的电路连接

pYYBAGMYU_CAA7nxAAAgjVu2Ewk156.png

  MCP4725 和树莓派之间的电路连接

poYBAGMYU-yAWFvQAAARVcPatvw499.png

  完整的设置将如下所示:

poYBAGMYU-iAQQTsAAdgxs47gNQ968.png

  为数模转换编程 Raspberry Pi

  本教程末尾提供了用于 Raspberry Pi 的完整 Python 代码。只需使用任何 SSH 客户端(如 Putty)或任何 FTP 客户端(如 FileZilla)将其上传到树莓派,或者您可以通过连接监视器将程序直接写入树莓派。在此处了解有关对树莓派编程的更多信息。

为数模转换编程 Raspberry Pi

本教程末尾提供了用于 Raspberry Pi 的完整 Python 代码。只需使用任何 SSH 客户端(如 Putty)或任何 FTP 客户端(如 FileZilla)将其上传到树莓派,或者您可以通过连接监视器将程序直接写入树莓派。在此处了解有关对树莓派编程的更多信息。

在这个程序中,一个 0-4096 的数字值通过 I2C 总线从 Raspberry Pi 发送到 MCP4725,以产生 0 到 5V 的模拟输出电压,可以用万用表进行验证。数字和模拟值都显示在16x2 LCD上。在我们的程序中,使用for循环(0,150,300,450…4050)以 150 的增量发送数字值。让我们详细看看这个程序。

首先包括所有必需的库。这里使用了 LCD、MCP4725 和时库。

 

import Adafruit_CharLCD as LCD    import Adafruit_MCP4725导入时间

 

接下来定义 LCD 引脚以及编号。行和列。我们知道 16X2 LCD 有 2 行 16 列。在此处了解有关将LCD 与 Raspberry Pi 连接的更多信息。

 

lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4# 定义 16x2 LCD 的 LCD 列和行大小。lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,lcd_columns, lcd_rows, lcd_backlight)

 

接下来在 LCD 上显示一些欢迎信息 5 秒钟。

 

lcd.message('Circuit Digest') time.sleep (2.0) lcd.message('\nDAC using Rpi') time.sleep (5.0) lcd.clear()

 

在下一行中,使用 MCP4725 DAC IC 的 I2C 地址创建了一个 DAC 实例。我的板子地址是0x60,根据你的板子改。

 

dac = Adafruit_MCP4725.MCP4725(地址=0x60)

 

接下来,在while循环中使用for循环来更改通过 I2C 总线发送到 MCP4725 的数字值 x。for循环范围是 (0,4095,150) 。x 值从 0 到 4050 变化,增量为 150。

 

而 True:    对于范围内的 x(0,4097,150):

 

使用以下行将数字值发送到 MCP4725

 

dac.set_voltage(x)

 

根据数字值,使用公式计算模拟值,其中 5 是参考电压,x 是数字值。

 

电压 = x/4096.0*5.0

 

然后数字值和模拟值显示在 LCD 上,延迟 2 秒,使用以下行

 

           lcd.cursor_pos = (0,0)            lcd.message("DAC 值:" + str(x))            lcd.message("\nAnalogVolt: %.2f" % 电压) time.sleep            (2)

 

  这里数字值显示在液晶显示屏的第一行,模拟值显示在第二行。万用表也连接到 MCP4725 输出引脚以验证模拟电压。

poYBAGMYU-GAFAbZAAbVUDcS3z4428.png
import Adafruit_CharLCD as LCD

import Adafruit_MCP4725

导入时间


lcd_rs = 25

lcd_en = 24

lcd_d4 = 23

lcd_d5 = 17

lcd_d6 = 18

lcd_d7 = 22

lcd_backlight = 4


# 定义 16x2 LCD 的 LCD 列和行大小。

lcd_columns = 16

lcd_rows = 2


lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,

lcd_columns, lcd_rows, lcd_backlight)


lcd.message('Circuit Digest') time.sleep

(2.0)

lcd.message('\nDAC using Rpi') time.sleep

(5.0)

lcd.clear()

dac = Adafruit_MCP4725.MCP4725(address=0x60)


而真:

对于范围内的x(0,4097,150):



打印(x)

dac.set_voltage(x)

lcd.cursor_pos =(0,0)

lcd.message(“DAC值:”+ str(x))

电压= x/4096.0*5.0

lcd.message("\nAnalogVolt: %.2f" % 电压) time.sleep(

2)

lcd.clear()

(责任编辑:admin)
织梦二维码生成器
相关文章
------分隔线----------------------------
栏目列表
推荐内容