电子设计大赛D题实战复盘:用AD9959和ADS8688搞定输入阻抗测量(附完整代码与PCB)

张开发
2026/6/21 0:19:00 15 分钟阅读
电子设计大赛D题实战复盘:用AD9959和ADS8688搞定输入阻抗测量(附完整代码与PCB)
电子设计大赛D题实战复盘用AD9959和ADS8688实现高精度输入阻抗测量在电子设计竞赛中输入阻抗测量往往是电路特性分析的基础环节。去年带队参加全国电子设计大赛时我们组选择了D题《简易电路特性测试仪》其中最关键的技术难点就是实现1kΩ-50kΩ范围内的高精度阻抗测量。经过反复验证最终采用AD9959作为信号源、ADS8688作为采集核心的方案配合6.8kΩ基准电阻的巧妙设计测量误差控制在5%以内。本文将完整还原从芯片选型到代码调试的全过程特别分享几个容易踩坑的细节1. 方案设计与芯片选型1.1 为什么选择AD9959作为信号源在比较了FPGADAC、单片机PWM等多种方案后我们最终选定ADI的AD9959直接数字频率合成芯片主要基于三个核心优势频率精度与范围内置32位频率累加器输出频率分辨率达0.1Hz0.02Hz-100MHz的宽频带完全覆盖题目要求集成化设计单芯片集成10bit DAC和时钟倍频电路相比分立元件方案PCB面积减少60%可编程接口通过SPI接口可实时调整频率/幅度实测响应时间仅2.3μs注意AD9959的参考时钟需要特别处理。我们采用50MHz有源晶振配合内部4倍频最终输出200MHz时钟信号时实测相位噪声为-145dBc/Hz10kHz偏移。1.2 ADS8688的采集优势传统单片机内置ADC在测量阻抗时面临两个致命问题需要外接偏置电路设计复杂度高输入范围有限易烧毁ADC通道ADS8688的突出特性解决了这些痛点参数指标传统方案对比输入范围±10V可编程通常仅0-3.3V分辨率16位多数MCU为12位采样率500kSPS约100kSPS电源需求单5V供电需多电压轨实际测试中将ADS8688配置为±10V范围时即使误接12V信号也不会损坏芯片——这对学生竞赛中的容错设计至关重要。2. 硬件电路设计细节2.1 分压法测量原理输入阻抗测量采用经典分压原理Vmeasure Vin * (Rin / (Rin Rref))其中Rref为已知参考电阻通过测量Vin和Vmeasure即可反推Rin。但实际设计中需要考虑三个非理想因素信号源输出阻抗约50Ω走线寄生电容约3pF/cm运放输入偏置电流nA级2.2 关键元件选型对比运放选型是影响测量精度的关键。我们对比了两种方案OPA192输入偏置电流±8pA增益带宽积10MHz价格$2.1含税OPA690输入偏置电流±2μA增益带宽积500MHz价格$3.8含税虽然OPA690带宽更高但其输入偏置电流会导致约0.5%的测量误差。最终选择OPA192作为缓冲级实测在10kHz时相位偏移仅1.2°。参考电阻取值也经过精心计算题目要求测量范围1kΩ-50kΩ几何中点√(1k*50k)≈7.07kΩ选用标准值6.8kΩ理论误差分布最均衡2.3 PCB布局技巧四层板堆叠设计Top层信号走线5mil线宽内层1完整地平面内层2电源分割数字/模拟Bottom层低速信号特别注意AD9959时钟线长度匹配在±50mil内ADS8688的REF引脚放置0.1μF10μF去耦电容模拟区域采用guard ring设计漏电流降低至0.3nA3. 软件驱动实现3.1 AD9959寄存器配置流程// 初始化序列 void AD9959_Init() { SPI_Write(0x00, 0x01); // 复位芯片 delay_ms(10); SPI_Write(0xAD, 0x03); // 设置PLL 4倍频 SPI_Write(0x9F, 0x1F); // 开启所有通道 SPI_Write(0xA0, 0x80); // 自动幅度控制 } // 设置频率 void SetFrequency(uint32_t freq) { uint32_t FTW (freq * pow(2,32)) / SYSTEM_CLOCK; SPI_Write(0x04, (FTW 24) 0xFF); // FTW高位 SPI_Write(0x05, (FTW 16) 0xFF); SPI_Write(0x06, (FTW 8) 0xFF); SPI_Write(0x07, FTW 0xFF); // FTW低位 }提示AD9959的SPI时序要求严格时钟空闲状态必须为高电平模式3。实测发现STM32的硬件SPI在18MHz以上会出现数据丢失建议降频至12MHz使用。3.2 ADS8688采集算法优化采用过采样技术将有效分辨率提升至18位def read_ads8688(channel): raw_data [] for i in range(64): # 64次采样 raw_data.append(spi_read(channel)) # 去除最大最小值后平均 filtered sorted(raw_data)[2:-2] return sum(filtered) / len(filtered)实测信噪比(SNR)从原来的86dB提升到94dB对应ENOB有效位数从14位提高到15.3位。4. 实测问题与解决方案4.1 频率切换时的瞬态响应初期测试发现当AD9959频率从1kHz跳变到10kHz时输出会出现约20ms的振荡。解决方法在频率控制字更新前先将幅度寄存器设为0等待100μs后再更新频率最后恢复幅度值修改后瞬态过程缩短到200μs以内。4.2 开关引入的测量误差拨动开关在切换6.8kΩ电阻时发现三极管电路的上限频率变化达15%。根本原因是开关触点电阻约0.5Ω寄生电感约3nH在10MHz时引入约0.2Ω的附加阻抗优化方案改用磁保持继电器如TQ2-5VPCB布局时将开关靠近被测件软件上增加10ms的稳定等待时间4.3 温度漂移补偿连续工作2小时后测量结果会出现约1.2%的偏移。通过实验测得温度系数AD9959输出幅度-85ppm/°C6.8kΩ电阻±50ppm/°COPA192偏置电压0.2μV/°C最终在软件中加入温度补偿算法float temp_compensate(float raw, float temp) { const float k1 -0.00085; // AD9959系数 const float k2 0.0005; // 电阻系数 return raw * (1 (k1 k2) * (temp - 25)); }实施后4小时连续工作的最大漂移降至0.3%以内。

更多文章