这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » ADI » 完整方案分享——如何利用精密ADC进行热电偶采集

共2条 1/1 1 跳转至

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

菜鸟
2017-01-24 22:22:56     打赏

 

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

 

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

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

 

 

1 模拟通道滤波电路

 


2 AD7124-8电路

 


3 电源以及外部REF电路

原理图设计完了,就准备PCB layoutlayout参考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, int slave_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状态寄存器数据是否准备好以及对应的通道数,数据如果准备好,就可以读取对应通道的数据

 

(代码请在原帖查看吧)

 

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



专家
2017-01-25 11:07:17     打赏
2楼
不错,谢谢分享。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]