我只会看看demo,改改demo。
把问题跑给他,copilot会马上分析给出解决方法,包括添加注释,格式化代码,找出问题。
这是源代码,屠龙刀上面的NTC demo
#define Vref 2.5
float CalculationTemperature(u16 adc)
{
float Temperature=0.0;
float R2=0.0;
float R1=10000.0;
float T2=298.15;//273.15+25;
float B=3435.0;
float K=273.15;
float R2V=0.0;
R2V=(adc*(Vref/4096)); //12位ADC
R2=(R2V*R1)/(Vref-R2V);
Temperature=1.0/(1.0/T2+log(R2/R1)/B)-K+0.5;
return Temperature;
}
参考电压改到5V,B值变了,NTC电阻改成5K的了,都修改了。
但是我没把计算公式里面的10K改成5K,导致算出的值一直是错的
这是AI改的
#define Vref 5.0
float CalculationTemperature(u16 adc)
{
float Temperature = 0.0;
float R2 = 0.0;
float R1 = 10000.0; // ADC 电路中的 10K 电阻
float T2 = 298.15; // 273.15 + 25, 25°C in Kelvin
float B = 3470.0; // B 值
float K = 273.15;
float R2V = 0.0;
R2V = (adc * (Vref / 4096)); // 12 位 ADC
R2 = (R2V * R1) / (Vref - R2V);
printf("Rntc=%f Ω\r\n", R2);
Temperature = 1.0 / (1.0 / T2 + log(R2 / 5000.0) / B) - K; // 使用 5K NTC 电阻
return Temperature;
}
最后测试,计算结果正确
