FastBond2阶段2-用AD5626设计波形发生器
1.设计思路和需要用到的硬件和软件以及实现过程介绍 2.使用KiCAD画线路图和PCB的操作以及实物调试过程介绍
标签
嵌入式系统
测试
PCB设计
Titan
更新2023-09-14
254

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

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

1. 这次Fastbond2选题很宽,结合模拟电子课程中的实战项目二,这次可以用KiCAD来完成线路和PCB,替代之前用面包板做的项目二。
项目二题目部分核心指标如下:
a. 搭配单片机或FPGA或其它方式的控制逻辑能够产生10Hz到20KHz范围内的正弦波信号
b. 输出信号幅度3Vpp,直流偏移可调1.5V到3.5V,DAC采用ADALP2000套件中的AD5626
c. 供电电压为5V
d. 使用ADALP2000套件中的运算放大器搭建一个Sallen-Key滤波器,滤除40KHz以上的混叠信号
2.对于信号发生器,个人市场有各种消费型的手机等电子产品,工业上各种工控设备,市场应用非常广泛

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

  1. 硬件设计流程,按自己实际情况,使用这个流程:设计滤波器->处理信号放大和直流偏置->用RP2040连接AD5626生成信号,下面是硬件Block Diagram

Fq8m-FT81NjOHioz6Ch8gFhPsG0z

2.硬件设计重点步骤:

1)结合指标要求,确认为LPF低通滤波器,使用AD公司的滤波器在线设计工具:Analog Filter Wizard,在40Khz处设置为-3db,因为使用ADALP2000套件中的运放来做有源滤波器,因此选用2阶滤波器,滤波器类型选择sallen-key,如下设置的部分过程。

Fvdo1E7j9BPiuswDlPP8W3a8yaO9FvmgQtKmibqboUkRQYCkfG11nVgrFl71RfUyMLgPcJf5ZTHcJJG0rFgA

FhVlMKLNQG7NtnbM5WsP_aIGZ36zFgqWfDPiTGZgYjRQjrRPL1z2gPVr

滤波器中运放的供电需要将+5V转换为-5V,选用套件中的LT1054,LT®1054 是一款单片式、双极、开关电容器电压转换器和稳压器。LT1054 提供的输出电流高于此前上市的转换器,而电压损耗则低得多。一种自适应开关驱动器方案在一个很宽的输出电流范围内优化了效率。100mA 输出电流条件下的总电压损耗通常为 1.1V。这一点在整个电源电压范围内 (3.5V 至 15V) 得到保证。典型静态电流为 2.5mA。

LT1054 还提供了稳压功能,这是以往的开关电容器电压转换器所不具备的。通过增设一个外部阻性分压器,能够获得一个稳定的输出。将根据输入电压和输出电流中的变化对该输出进行相应的调节。另外,也可以通过将反馈引脚接地来关断 LT1054。停机模式中的电源电流小于 100μA。在这里就使用到了LT1054的稳压功能

2)直流偏置选用套件中的AD8226,先使用LTSpice模拟,AD8226 是一款低成本、宽电源电压范围的仪表放大器,仅需一个外部电阻器即可设置 1 至 1000 之间任何增益。

AD8226 可支持多种信号电压。宽输入范围和轨到轨输出允许信号充分利用电源轨。由于输入范围还包括低于负电源电压的能力,因此无需双电源即可放大接近地电压的小信号。AD8226 可采用 ±1.35 V 至 ±18 V 的双电源供电,或采用 2.2 V 至 36 V 的单电源供电。

Fq4Te5cP78xUIkTt444DBtBp4P9PFv-RnSoPiBkN0d58Pzg0w4_rZ3FXFq6VuQ5CQqGWU46bPbkXo9PayXQO
 
3)RP2040连接AD5626生成信号:AD5626属于nanoDAC®系列,是一款完整的串行输入、12位电压输出数模转换器(DAC),采用5V单电源供电。它集成了DAC、输入移位寄存器和锁存、基准电压源和一个轨到轨输出放大器。AD5626单芯片DAC适合仅有5 V电源的系统应用,具有成本低、易于使用的特点。
FikqO6sFWWFsOxqNYQtErJL40cPl
 
使用RP2040和AD5626的连接端口关系为:GPIO10->CLK,GPIO11->MOSI,GPIO9->CS,GPIO8->LDAC,GPIO14->CLR
 

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

使用Micropython来编译RP2040的程序

载入对应的库:

import machine
import utime
import math

接下来分配对应的GPIO管脚并设置对应的初始状态:

spi = machine.SPI(1, baudrate=6000000, sck=machine.Pin(10), mosi=machine.Pin(11))
cs = machine.Pin(9, machine.Pin.OUT)
ldac = machine.Pin(8, machine.Pin.OUT)
clr = machine.Pin(14, machine.Pin.OUT)
cs.on()
ldac.on()
clr.on()

对AD5626的寄存器位址定义:

# AD5626 command bits
WRITE_DAC = 0b0011
WRITE_INPUT_REG = 0b0111
UPDATE_DAC = 0b1001

接下来初始化AD5626的输出电压还有波形的定义:

# Initialize DAC to output single-ended voltage between 0V and Vref
cs.off()
spi.write(bytearray([WRITE_INPUT_REG, 0x00, 0x00]))  # Set input register to 0V
spi.write(bytearray([UPDATE_DAC, 0x00, 0x00]))  # Update DAC with input register value
cs.on()

def generate_sin_wave(length, amplitude, frequency, sampling_rate):
    data = []
    for i in range(length):
        x = i / sampling_rate
        sample = int(amplitude * math.sin(2 * math.pi * frequency * x))
        sample += 2048  # Offset to center waveform around 0
        data.append(sample >> 2)  # 12-bit DAC, shift right by 4 bits
    return data

最后对需要的波形进行设定,并且将这些需求发给AD5626

# Generate 5 kHz sin wave
wave_data = generate_sin_wave(length=5000, amplitude=2048, frequency=5000, sampling_rate=200000)

# Send wave data to DAC using SPI
while True:
    ldac.off()
    cs.off()
    spi.write(bytearray([WRITE_DAC, 0x00, 0x00]))  # Select DAC A
    for sample in wave_data:
        spi.write(bytearray([(sample >> 8) & 0x0F, sample & 0xFF]))  # 12-bit DAC, MSB first
    ldac.on()
    cs.on()
    utime.sleep_us(0)

 

.使用KiCAD制作线路图和PCB

1.KiCAD简介:

KiCad 是一个开源的软件套件,用于创建电子电路原理图、印刷电路板(PCB)和相关的零件描述。KiCad 支持综合设计工作流程,其中原理图和相应的 PCB 一起设计,也支持特殊用途的独立工作流程。KiCad 还包括一些帮助电路和 PCB 设计的实用程序,包括用于确定电路结构电气特性的 PCB 计算器、用于检查制造文件的 Gerber 查看器、用于可视化成品 PCB 的 3D 查看器以及用于检查电路行为的集成 SPICE 仿真器。

Fi63J_BbIriJoJGYrBTtN_kEVTT6Fl3nWEmLnSYM_2rBbTXy7TYA7Dd6

2.KiCAD画线路:

首先,需要画出硬件部分的block-diagram,可以使用Fastbond2阶段1中用的digi-scheme-it工具。

接下来,根据所要用到的主要元件,先寻找对应的器件库,KiCAD开源软件,网上有很多现成的器件库和封装库,打开软件后,在如下位置打开对应设置进行处理。

Fl1LNKxXPNYmT9cbA3XqD4KNMo2ZFvIaZvsQGDXV2b9RunIgiNdZnKEJ

FmYs9de5r3i2gM97igZeJtXiJ-jUFte0VBMhJmfNW7X30j7-jncyOZYT

FkSE5vWKSW-YgUoSvcQ7cRlFy6j9

在上面设置中添加好对应的资料后,就可以新建线路图

FgMXml13y4txcqDMRSFj6c6VkVKO

上面是目前线路的整体样式,下面对这些部分进行简介:

这是LPF的线路,来源于ADI的在线模拟工具中的线路,根据自己需要进行增减,这里我添加了一些调试用的接口,同时根据实际情况修改了部分电阻电容的值。

FubKNIov3R1r_XtBmC6DLyBHXgd0

接下来介绍AD5626,根据SPEC确认到AD5626和SOC的连接,PCB上使用了排针,通过面包线和PI Pico连接,这里注意尽量在线路上备注好接线的顺序,如果是量产产品,接线顺序标记很有必要。

FuwEIgPdFlkN6WBPEN4T67W0YFgW

接下来是AD8226,同样是根据SPEC的描述和LTSpice的模拟情况来接线,这里直流偏置我放了两个部分,一部分是用可变电阻,因为当时手上没可变电阻,所以大概算了3个阻值电阻分压,用排针焊接替代,来验证功能,所以备注了可变电阻和排针二选一

FhcOKtoBYBx2oWIliPtR-Lbqz5f8

最后是处理供电部分,在这里LT1054参考SPEC的来接线

Fknbh0y5t2ZxVly_OBCBEYxoOh8o

Fopeof0N3MNwGketU91q4VC7Kxk7

在这里能看到,我把接地分为了供电地和模拟地,用0欧姆电阻和磁珠来隔离,这同时需要在接下来layout里面也区分开,同时根据AD5626和AD8226的SPEC,需要加Bypass电容,这部分有些缺漏,AD8226的供电滤波电容没有加上

Fllugl-EtOimAtPWfi3w4qvYX4Ba

FhA_Ev0Wb7xXThOMfrcXEXSVZEBe

FgS7QUlgcv2BAz5IctFQiu56kyZi

 

3.KiCAD画layout并导出

线路结束后,如果封装没问题,可以直接切换到PCB编辑,从原理图更新过来,如果没有封装,就需要关联封装,封装就是元件的实际形状和尺寸

FtsJq84wxdPH1fhV0t1hefkE1hLZFrZD4vzkaIKrFAo2Ex-15hlv5QX9

这里封装有个选择界面,在最右边器件明细中,右击可以查看封装详情,这里因为AD5626和AD8226是套件中的,跟出厂器件不一致,导致板上Pin脚顺序相反,只能焊接在主板背面,所以不管是symbol还是封装,都需要和实际使用的器件进行详细比对,千万不能出错。

FvqrBN1KD07G76O74KI5HwdUPXpFFjhFKQS9McmHrtOwJ4YvElhJOTJt

封装确认后,就是对器件进行位置调整,这里我第一版是选择单面焊接,当作验证板用,后来又调整了一版,面积缩小到了约1/4,用双面板,不过后来发现第二版的GND包的不算好,因为没有再焊接使用,就用第一版的做演示用

FhRSuL9YFeF4ImUzF9yOPZ1NJhbKFvRW5NIjpIuIO-jc84JPrbBm1Ynr

这里关于如何摆放,如果layout走线,如何包GND,以及泪滴处理,走线宽度,走线交叉规则等等,大家可以在电子森林官网进行学习,相关的资料非常多,上面这是第一版的大概样式,下面是第二版的样式

Fgb72Pk6oaG4XEr_poQn5P9660Jz

 

.项目调试

当layout结束后,可以导出Gerber和钻孔文件,打包送PCB厂商制作PCB,收到后,需要对器件进行焊接,这里不再多赘述

这里简单贴出演示截图和波形图,详细视频会在文章开头的介绍视频中

FgMV_iaP6NM2n5N_rvvfWEkePd_k

当频率增大到60Khz以上时,在输出端可见到明显电压衰减

FgFwTM-iiazhKMwpnkzOoelyZ16B

FqjmVHWjue8xWP1P73Ms_8LRkcoK

三.项目总结

这次Fastbond2给了一个非常好的机会,用来熟悉KiCAD的操作,目前看达到了和面包板一样的效果,封装没确定好是一个问题,这次还没关注到BOM部分,下次关注BOM的操作,总之,硬禾学堂的活动,真是满满的福利,后续活动会继续关注支持,加油

 

 

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