微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 完整方案分享——如何利用精密ADC进行热电偶采集

完整方案分享——如何利用精密ADC进行热电偶采集

时间:10-02 整理:3721RD 点击:

本文转自ADI中文技术论坛,地址:https://ezchina.analog.com/thread/15156

最近在查找ADI测量温度方案,发现AD7124-8很适合温度测量,于是申请了AD7124-8的样品,设计一款5通道K型热电偶测温电路。

电路设计参考了UG-856EVAL-AD7124-8SDZ User Guide上的原理图,将AD7124-8的模拟通道连接到接线端子上,热电偶测量方案也参考UG-856应用,冷端使用一个3线PT100补偿,MCU采用ADI ARMCORTEX-M3处理器ADUCM360,调试时使用串口打印输出数据,为了设计通用性以及后续软件移植,设计时将ADC部分和MCU部分分成两个PCB。原理图设计图纸大致如下:


图1 模拟通道滤波电路


图2 AD7124-8电路


图3 电源以及外部REF电路

原理图设计完了,就准备PCBlayout,layout参考UG-856上的设计,按照4层板设计。


图4 顶层丝印图


图5 顶层走线图


图6 GND层


图7 电源层


图8 底层


图9 底层丝印图

PCB layout完成后就联系板厂加工,期间准备物料,感谢ADI支持,很多样品都申请到样品了。

硬件部分设计完成就开始考虑软件设计了,ADI网站上提供参考代码,在网站上下载了源代码,看了一遍,感觉还不错,值得借鉴,不过不是在ADUCM360上开发的程序,需要将其移植到ADUMC360上

移植部分很简单,只需要完成3个填空题

int8_t SPI_Init(ADI_SPI_TypeDef*pSPI,uint32_t u32Baud);

int8_t SPI_Read(ADI_SPI_TypeDef *pSPI,uint8_t*pBuffer,int32_t i32Len);

int8_t SPI_Write(ADI_SPI_TypeDef*pSPI,uint8_t *pBuffer,int32_t s32Len);

其中SPI_Init完成SPI的初始化,包括SPI号,以及波特率

SPI_Read实现SPI读数据i32Len数据到pBuffer中

SPI_Write则实现SPI则将pBuffer中长度为s32Len数据再MOSI上发送出去

移植完驱动后续就是验证是否移植是否正确了,下载的源代码AD7124.C中也提供了方法。在int32_t AD7124_Setup(ad7124_device *device, intslave_select,ad7124_st_reg *regs)中实现了AD7124-8配置寄存器以及查询寄存器操作,验证是否移植正确,就是将配置好的寄存器重新读出来进行比对了。寄存器的配置在ad7124_st_reg ad7124_regs[]初始化时已经实现,可以根据项目需求自行配置。配置值和读出结果一致也就表示一致正确了。

(代码请在原帖查看吧)

配置完成后,就开始实现PT100以及热电偶电压采集了,AD7124-8可以通过使能多个通道寄存器,实现ADC多通道自动切换,注意通道寄存器中的SETUP配置,这是通道寄存器与配置寄存器相关联的地方,通过3bit Setup位以及16个通道寄存器可以组合出16*8= 108种组合配置,数据手册的描述比较难理解




配置完成后,就只需要查询AD7124-8状态寄存器数据是否准备好以及对应的通道数,数据如果准备好,就可以读取对应通道的数据

(代码请在原帖查看吧)

数据寄存器数据读出来之后就剩下数据处理了,热电偶的常用处理方式是冷端温度转换为对应的热电偶电压,热电偶热端电压+冷端电压值得到的电压值在转换成热电偶电压,按照这种算法实现热电偶测温。


非常详细的资料  学习了

非常详细的资料  学习了

感谢分享!

谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top