資源簡介
AD7793方案 原理圖加源碼
高精度熱電偶采集
帶冷端補償PT100 可以用于其他場合 比如應變片或者高精度采集類
高精度熱電偶采集
帶冷端補償PT100 可以用于其他場合 比如應變片或者高精度采集類

代碼片段和文件信息
/*代碼使用說明
1、基于STM32F10X?MCU
2、IO?模擬?SPI接口,非硬件SPI,僅與SPI?IO有關。
3、TC_voltage為熱電偶熱電動勢,非溫度值。
4、PT100_temp為PT100讀取的溫度值,用于冷結補償,通常冷結溫度5-10秒讀取一次即可。
*/
#include“stm32f10x_conf.h“
#define?AD7793_SCLK_H?GPIO_SetBits(GPIODGPIO_Pin_3)
#define?AD7793_SCLK_L?GPIO_ResetBits(GPIODGPIO_Pin_3)
#define?AD7793_CS_H?GPIO_SetBits(GPIODGPIO_Pin_4)
#define?AD7793_CS_L?GPIO_ResetBits(GPIODGPIO_Pin_4)
#define?AD7793_SDI_H?GPIO_SetBits(GPIODGPIO_Pin_2)
#define?AD7793_SDI_L?GPIO_ResetBits(GPIODGPIO_Pin_2)
#define?AD7793_DOUT?GPIO_ReadInputDataBit(GPIODGPIO_Pin_0)
float?TC_voltage;
float?PT100_temp;
void?RCC_Configuration(void);?
void?GPIO_Configuration(void);
void?NVIC_Configuration(void);?
void?Delay(vu32?nCount);
void?AD7793Reset(void);
void?AD7793Write(uint8_t??Data);
uint32_t?AD7793Read(void);
uint8_t?AD7793Read_Byte(void);
uint8_t?Get_AD7793_ID(void);
void?AD7793_thermocouple_init(void);//初始化熱電偶通道
void?AD7793_GetPT100_init(void);//初始化PT100通道
float?Get_PT100(void);//讀取PT100溫度值,返回值為溫度值
float?Get_thermocouple_Value(void);//讀取熱電偶通道,返回值為熱電勢
void?AD7793init(void);
float?tempsssssssss;
uint32_t?TESTSSS;
uint8_t?AD7793_ID;
int?main(void)?
{?
??RCC_Configuration();
??GPIO_Configuration();
??NVIC_Configuration();
??AD7793init();
??AD7793_ID=Get_AD7793_ID();//Read?AD7793?ID(0xXB)
??/*
??while(AD7793_DOUT);
??AD7793Write(0x08);//Mode?Register
??AD7793Write(0x40);//進入空閑模式
??AD7793Write(0x4F);//
??AD7793Write(0x38);//寫對應通道的滿量程寄存器的值
??AD7793Write((0x54a300>>16)&0xFF);
??AD7793Write((0x54a300>>8)&0xFF);
??AD7793Write(0x54a300&0xFF);
??*/
??/*
??AD7793Write(0x78);//讀滿刻度校準寄存器的值
??TESTSSS=AD7793Read();
*/
??while?(1)?
??{
????AD7793_CS_L;
????AD7793_thermocouple_init();
????Delay(5000);
????TC_voltage?=?Get_thermocouple_Value();//讀取熱電動勢
????tempsssssssss=TC_voltage*24937.65586+PT100_temp;
????Delay(5000);
????AD7793_GetPT100_init();
????Delay(5000);
????PT100_temp?=?Get_PT100();//讀取PT100溫度
????Delay(5000);
??}?
}?
uint8_t?Get_AD7793_ID(void)
{
??uint8_t?ID;
??AD7793Write(0x60);//讀滿刻度校準寄存器的值
??ID=AD7793Read_Byte();
??return?ID;
}
float?Get_PT100(void)//Return?the?temp?of?PT100;
{
??float?PT100_TEMP;
??float?PT100_R_Value;
??uint32_t?DATA_T;
??while(AD7793_DOUT);
??AD7793Write(0x58);
??DATA_T=AD7793Read()-0x800000;
??PT100_TEMP=DATA_T;
??PT100_TEMP/=0x7fffff;
??PT100_R_Value=PT100_TEMP*402;
??PT100_TEMP=(PT100_R_Value-100)/0.385055;//A?gruad
??return?PT100_TEMP;
}
float?Get_thermocouple_Value(void)//Return?the?Voltage?of?TC;
{
??float?Voltage;
??uint32_t?DATA_T;
??int32_t?DATA_T1;
??while(AD7793_DOUT);
??AD7793Write(0x58);
??DATA_T=AD7793Read();
??DATA_T^=0xFFFFFF;
??DATA_T&=0xffffff;
??DATA_T1=0x7FFFFF-DATA_T;
??Voltage=DATA_T1*1.17;?//Vref=1.17V
??Voltage/=0x7fffff;
??Voltage/=32;//gain?=?32
??return?Voltage;
}
void?AD7793Reset(void)
{
??uint8_t?ResetTime;
??ResetTime=50;
??AD7793_SCLK_H;
??AD7793_CS_L;
??AD7793_SDI_H;
??while(ResetTime--)
??{
????AD77
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????162116??2020-03-18?09:35??2020-03-18_093139.png
?????文件????????7288??2019-03-13?16:42??AD7793.c
- 上一篇:2018法定假日
- 下一篇:DS18B20內部EEPROM保存
評論
共有 條評論