中级会员
 
- 积分
- 343
- 金钱
- 343
- 注册时间
- 2013-10-28
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-3-21 14:25:44
|
显示全部楼层
回复【8楼】Badu_Space:
---------------------------------
/*
内部温度传感器的计算公式:
T={(V25-Vsense)/Avg_Slope}+25
V25=1.43(典型值),最小是1.34,最大是1.52
Vsense:表示当前的电压值,小数
Avg_Slope=4.3mv/℃ (典型值),最小是4.0mv/℃,最大是4.6mv/℃
现在这个实验的测试时间为2014/3/16日,天气温度约为20℃,所以V25,Avg_Slope这两个数据不准确,这两个数据时在25℃的值。
要看看参考电压是不是3.3V,在我用USB供电使用的时候,实测参考电压是3.05V,所以设置参考电压为3.05V
*/
void ADC_Get_Sample_Voltage_Temp(void)
{
float adctmp=0,Temperature=0;
float Vsense=0,V25=1.43,Avg_Slope=0.0043,Vref=3.05; //Vsense表示当前的电压
adctmp=(float)tem_adc_val.Sample*(Vref/4095); //计算出实际的电压值,小数型的数据
Vsense=adctmp; //Vsense:表示10进制的电压值,小数
tem_adc_val.Voltage_Int=adctmp; //只是把整数位赋给tem_adc_val.Voltage_Int
tem_adc_val.Voltage_Dec=(adctmp-tem_adc_val.Voltage_Int)*1000; //把小数部分扩大1000倍
Temperature=((V25-Vsense)/Avg_Slope)+25; //获取当前的温度值。
tem_adc_val.Temperature_Int=Temperature; //计算出温度值(小数型的)赋给u8的整数,得到整数部分
tem_adc_val.Temperature_Dec=(Temperature-tem_adc_val.Temperature_Int)*100; //小数部分扩大100倍
} |
|