FastBond2阶段2-用AD7920设计信号采集模块
1.设计思路和需要用到的硬件和软件以及实现过程介绍 2.使用KiCAD画线路图和PCB的操作以及实物调试过程介绍
标签
嵌入式系统
测试
开发板
PCB设计
Titan
更新2023-10-26
272

.项目介绍和软硬件实现过程  

1.项目简介和市场应用介绍

1. 前端时间参加模拟电子课程,其中的实战项目一使用面包板来完成,这次借用Fastbond2的机会,用KiCAD来完成线路和PCB。

当时项目一的部分指标如下:
a. 搭配单片机或FPGA或其它方式的控制逻辑能够读取到输入的信号
b. 输入的音频信号幅度:0.1mVpp到1Vpp,频率:100Hz到16KHz
c. 供电电压为5V
d. 搭建一个带通滤波器,滤除高频和低频部分
e. 使用AD7920进行信号采集
 
2.信号采集的需求在社会方方面面都有,比如图像声音拍摄处理,日常生活水电气的使用信息采集,各种门禁传感器,以及智能家居等等。

2.项目思路之硬件实现过程: 

1. 硬件设计流程的流程如下:处理带通滤波器以及信号放大->设置必要的供电->用RP2040连接AD7920读取采集的信号,下面是硬件Block Diagram

FpmvXq_cZkWxf3Y9fWZYxqWHeeYA

2. 硬件介绍和相关注意点:

1)关于带通滤波器的设计以及注意点,在我的另外一份报告中已经详细描述,这是链接,这次更新对带通滤波器使用了-5V,所以主要对更新点和主要器件进行介绍

更新点:对带通滤波器的有源运放使用了+/-5V供电,以补充上次面包板只使用正电压,而导致影响信号采集的精度的问题。

带通滤波器中主要使用AD8542运放,AD8542的主要特征和常见应用如下:

主要特征:

AD8542 是AD854X系列中的一种,分别有单路、双路和四路,这里AD8542是双路的轨到轨输入与输出、单电源放大器,具有极低的电源电流和1 MHz带宽。可以采用2.7 V单电源和5 V电源工作。可提供1 MHz带宽,每个放大器的功耗仅45 μA。

AD854X系列有极低的输入偏置电流,可用于积分器、光电二极管放大器、压电传感器以及其它具有较高源阻抗的应用。因为每个放大器的电源电流仅为45 μA,非常适合电池供电应用。

轨到轨输入与输出则便于设计人员在单电源系统中实现ASIC缓冲。AD854X系列经过优化设计,可以在较低电源电压时保持高增益,因而能够用于有源滤波器和增益级。

AD854X系列的额定温度范围为-40℃至+125℃扩展工业温度范围。AD8542提供8引脚SOIC、8引脚MSOP和8引脚TSSOP表面贴装三种封装。所有MSOP、SC70和SOT封装产品仅提供卷带和卷盘形式。

Fg0jFnJl6nJWyhNDHJ1hE1PE642V

如下是ADALP2000套件中的AD8542 BOB模块

Fu0eo2X8xWis1NTdNuT0Gg4sc8ae

常见应用:

  • ASIC输入或输出放大器
  • 传感器接口
  • 压电传感器放大器
  • 医疗仪器
  • 移动通信
  • 音频输出
  • 便携式系统

2)因为以上带通滤波器中AD8542以及相关供电需求,除了USB的+5V供电,另外还需要一个2.1V的偏置电压和-5V的供电

a. 偏置电压使用AD584生成,AD584的特征如下:

AD584是一款8引脚精密基准电压源,提供引脚可编程的四种常用输出电压选择:10.000 V、7.500 V、5.000 V和2.500 V。高于、低于或介于四种标准输出之间的其它输出电压,可以通过增加外部电阻来获得。输入电压可在4.5 V和30 V之间变化。

该器件采用激光晶圆调整(LWT)技术来调整引脚可编程的输出电平和温度系数,从而获得较为灵活的单芯片、高精度基准电压源。

除可编程输出电压外,AD584提供一个独特的选通引脚,可以通过它开启或关闭器件。该器件用作电源基准电压源时,利用单个低功耗信号可以关闭电源。在关闭状态,该器件耗用的电流降至约100 µA。在开启状态,总电源电流典型值为750 µA,其中包括输出缓冲放大器。

AD584推荐用作需要外部精密基准电压源的8位、10位或12位数模转换器(DAC)的基准电压源。另外,该器件也非常适合最高14位精度的模数转换器(ADC),无论是逐次逼近型还是集成式ADC,而且其性能通常优于标准独立式基准电压源。

AD584J和AD584K的额定工作温度范围为0°C至+70°C,AD584S和AD584T则为-55℃至+125°C。这些等级产品均采用密封8引脚TO-99金属帽壳封装;AD584J和AD584K还提供8引脚PDIP封装。

FpbJtxxh6uYktjjsoLKySKxtN0rb

b. -5V的电压采用LT1054生成,关于LT1054的介绍在这个报告中有介绍,在这不赘述。

FmK4kjUrFVueaTldWzU1d_ZK2e6Y

3)信号的采集使用AD7920和RP2040连接,读取RP2040的端口数据展示采集的信号。
AD7920的特征如下:

AD7920是12位高速、低功耗、逐次逼近型ADC,采用2.35 V至5.25 V单电源供电,最高吞吐量达250 kSPS。这些器件内置一个低噪声、宽带宽采样/保持放大器,可处理6 MHz以上的输入频率。

转换过程和数据采集过程通过CS和串行时钟进行控制,从而为器件与微处理器或DSP接口创造了条件。输入信号在CS的下降沿进行采样,而转换同时在此处启动。该器件无流水线延迟。可在高吞吐量的情况下实现极低的功耗。

基准电压从V DD获得,从而为ADC提供了最宽的动态输入范围,因此,其模拟输入范围为0至V DD.。转换速率取决于SCLK。

如下是在ADALP2000套件中的AD7920模块。

FuaID93YyO09KqzTHD4vhcT9jGpg
 
 
 

3.项目设计中的软件实现过程:  

上次使用Micropython来编译RP2040的程序,这次尝试使用Arduino来编译RP2040程序:

首先引用库和定义引脚

#include <Arduino.h>

// 定义SPI相关引脚
const int spi_clk = 2;    // CLK引脚
const int spi_miso = 4;   // MISO引脚
const int spi_cs = 1;     // CS引脚

接着初始化程序,包含串口和引脚初始化等

void setup() {
  // 初始化串口
  Serial.begin(115200);
  
  // 设置AD7920 CS引脚为输出模式
  pinMode(spi_cs, OUTPUT);
  
  // 延时等待AD7920上电
  delay(100);
}

// 辅助函数:向AD7920发送命令并读取数据
int AD7920_GetRegisterValue() {
  byte data[3] = {0x00, 0x00, 0x00};    // 定义存储数据的数组
  int receivedData = 0x00;             // 初始化接收数据的变量

  // 将spi_cs引脚置为低电平
  digitalWrite(spi_cs, LOW);

  // 通过软件模拟SPI总线读取AD7920返回的数据
  for (int i = 0; i < 3; i++) {
    byte value = 0;

    for (int j = 7; j >= 0; j--) {
      digitalWrite(spi_clk, LOW);
      value |= digitalRead(spi_miso) << j;
      digitalWrite(spi_clk, HIGH);
    }
    
    data[i] = value;
  }

  // 将spi_cs引脚置为高电平
  digitalWrite(spi_cs, HIGH);

  // 将data[1]左移8位后的值加到receivedData上
  receivedData += (data[1] << 8);
  // 将data[2]加到receivedData上
  receivedData += data[2];

  return receivedData;
}

接下来处理数据并且输出

void loop() {
  // 读取AD7920的数据
  int result = AD7920_GetRegisterValue();
  
  // 输出数据到串口
  Serial.print("Register value: ");
  Serial.println(result);
  
  delay(100);    // 等待1秒钟
}

.使用KiCAD制作线路图和PCB

1.关于KiCAD的介绍和一些基本使用方法,在我们的另外一份报告中提及到了,链接是这个

用AD5626设计波形发生器

2.关于KiCAD画线路的基本步骤和注意点,我也在上面这份报告中提及到,这里主要对这次的线路进行简单的介绍。

a. MIC的声音输出部分,根据MIC的SPEC来处理,这里关于信号处理部分的接地,和供电部分接地是分开的,用磁珠和电阻连接,防止串扰。

供电根据MIC的指标,直接选用+5V,C是根据网上查到,然后根据自己再模拟看,选用了10uF

Fuc3aMShFbq2R9lnfn0Gi6URGcMr

FoVlMiZcHmD2eAcehizWfZ7RbOyv

Fp8Vxt9xxW8shzMC9Q7Zq2pOgKQa

b. 滤波器和放大部分是根据ADI的网页工具来做的,这在之前的报告中也有提及(设计一款音频信号采集前端电路)根据所需要的指标进行设置即可,配合物料选型和实际情况进行调整。

FuRTECR6R6WfqVF5nmA4h9Ov-1KS

在这块线路中,调整了AD8542的供电-5V,另外根据实际情况调整偏置电压为2.1V

关于带通滤波器,还有一种方案:将低通滤波器和高通滤波器分别设置,再组合起来。

c. AD转换和数据输出部分如下:

直接让AD7920和RP2040连接即可,在这里是连接到RP2040的开发板上,没有直接在PCB上焊接RP2040芯片,感觉有些浪费,这里加R4主要是为了方便调试用。

FnbkUhuWVN2C3bOLGabrnyJXkNEk

d. 供电部分如下:

主要是USB接口输入的+5V,以及电流源转换后的偏置电压Vref和转换后的-5V。

线路都是根据SPEC中的参考线路进行处理。

FgiLKYrNB6Oydi_4hghPGy3ZemVQFnkYKhmtdmKk3QlTRxugiSFuurd8FoJ7QH0zzXUIR7C0Hvb6w0v8ZABd

3.KiCAD画layout并导出

KiCAD中从原理图转换为layout,并且进行调整,这些操作步骤和注意事项也在另外报告中涉及了(用AD5626设计波形发生器

以下是本次layout截图:

这次用4层,中间两层铺铜,TOP主要用作DIP-8给IC用,BOT主要用来放置电容和电阻等小器件,根据截图看,上半截是用作供电,下半截是信号采集处理输出,两块接地是分开的,用电阻和磁珠相连。

Ft9Ew-ZWHJuQ7pji2JlmPar3XJcy

下面是最终的成品图

FjrI3Eevl_AJp7d_aoSJdw50Z-wKFpZ9yF1TzEItjW1EpX4_Q4aNkIhU

 

.项目调试

焊接部分不多赘述,调试部分主要集中在代码,硬件部分因为结构简单,暂无变动

软件部分,这次尝试用Arduino进行编译,RP2040没有内置的硬件SPI,因此需要使用软件模拟SPI

实际使用时,使用麦克风输入时,输入信号偏弱,效果不明显,改用耳机插头输入,可以看到下面的演示,当打开音乐时,串口数据输出会有变化,关闭音乐时,串口输出数据基本稳定。FoVRrUVPXFMIr8CoYrn9vftynxAR

 

 

三.项目总结

这次Fastbond2因为可以自己设置题目,可玩性很高,我主要用来熟悉KiCAD线路和layout的处理,后面会继续进行硬禾学堂的其他项目,加油

 

 

附件下载
源代码线路等原始文件.zip
包含KiCAD线路,layout,以及Micropython源代码
AD7920.ino
Arduino的源文件
团队介绍
个人
团队成员
Titan
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号