一.项目介绍和软硬件实现过程
1.项目简介和市场应用介绍:
1. 前端时间参加模拟电子课程,其中的实战项目一使用面包板来完成,这次借用Fastbond2的机会,用KiCAD来完成线路和PCB。
2.项目思路之硬件实现过程:
1. 硬件设计流程的流程如下:处理带通滤波器以及信号放大->设置必要的供电->用RP2040连接AD7920读取采集的信号,下面是硬件Block Diagram
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封装产品仅提供卷带和卷盘形式。
如下是ADALP2000套件中的AD8542 BOB模块
常见应用:
- ASIC输入或输出放大器
- 传感器接口
- 压电传感器放大器
- 医疗仪器
- 移动通信
- 音频输出
- 便携式系统
2)因为以上带通滤波器中AD8542以及相关供电需求,除了USB的+5V供电,另外还需要一个2.1V的偏置电压和-5V的供电
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封装。
b. -5V的电压采用LT1054生成,关于LT1054的介绍在这个报告中有介绍,在这不赘述。
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模块。
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的介绍和一些基本使用方法,在我们的另外一份报告中提及到了,链接是这个
2.关于KiCAD画线路的基本步骤和注意点,我也在上面这份报告中提及到,这里主要对这次的线路进行简单的介绍。
a. MIC的声音输出部分,根据MIC的SPEC来处理,这里关于信号处理部分的接地,和供电部分接地是分开的,用磁珠和电阻连接,防止串扰。
供电根据MIC的指标,直接选用+5V,C是根据网上查到,然后根据自己再模拟看,选用了10uF
b. 滤波器和放大部分是根据ADI的网页工具来做的,这在之前的报告中也有提及(设计一款音频信号采集前端电路)根据所需要的指标进行设置即可,配合物料选型和实际情况进行调整。
在这块线路中,调整了AD8542的供电-5V,另外根据实际情况调整偏置电压为2.1V
关于带通滤波器,还有一种方案:将低通滤波器和高通滤波器分别设置,再组合起来。
c. AD转换和数据输出部分如下:
直接让AD7920和RP2040连接即可,在这里是连接到RP2040的开发板上,没有直接在PCB上焊接RP2040芯片,感觉有些浪费,这里加R4主要是为了方便调试用。
d. 供电部分如下:
主要是USB接口输入的+5V,以及电流源转换后的偏置电压Vref和转换后的-5V。
线路都是根据SPEC中的参考线路进行处理。
3.KiCAD画layout并导出
KiCAD中从原理图转换为layout,并且进行调整,这些操作步骤和注意事项也在另外报告中涉及了(用AD5626设计波形发生器)
以下是本次layout截图:
这次用4层,中间两层铺铜,TOP主要用作DIP-8给IC用,BOT主要用来放置电容和电阻等小器件,根据截图看,上半截是用作供电,下半截是信号采集处理输出,两块接地是分开的,用电阻和磁珠相连。
下面是最终的成品图
三.项目调试
焊接部分不多赘述,调试部分主要集中在代码,硬件部分因为结构简单,暂无变动
软件部分,这次尝试用Arduino进行编译,RP2040没有内置的硬件SPI,因此需要使用软件模拟SPI
实际使用时,使用麦克风输入时,输入信号偏弱,效果不明显,改用耳机插头输入,可以看到下面的演示,当打开音乐时,串口数据输出会有变化,关闭音乐时,串口输出数据基本稳定。
三.项目总结
这次Fastbond2因为可以自己设置题目,可玩性很高,我主要用来熟悉KiCAD线路和layout的处理,后面会继续进行硬禾学堂的其他项目,加油