我怎样才能从温度中获得阻力?
How can I get resistance from temperature?
我有一个温度值,我想从这个温度得到一个电阻值。
我使用 Steinhart-Hart method 但这个等式总是 returns 7,39 无论温度和系数如何。
我基于 steinhart 方法(见下文)的第二个实现不适用于负系数。
你知道我的代码有什么问题吗?
double WSensor::temperatureToResistance(double _temp)
{
double Temp = _temp + 273.15;
double X = ((this->therm->getA() - (1 / Temp)) / this->therm->getC());
double Y = this->therm->getB() / this->therm->getC();
double argExpo = pow(-(X / 2) + pow((X*X) / 4 + (Y*Y*Y) / 27, 1.0 / 2.), 1.0 / 3.0) - pow((-(X / 2) - pow((X*X) / 4 + (Y*Y*Y) / 27, 1.0 / 2.0)) * (-1), 1.0 / 3.0);
return exp(argExpo);
}
经过 3 天的工作,我知道为什么这个等式在 arduino 上不起作用:溢出。
等式的某些部分 float
对于这个板模型 (Arduino Uno) 来说太大了。
其中一个解决方案是重新表述等式以防止出现更大的结果。但是这个解决方案需要太多时间并且需要良好的数学技能,这就是为什么我决定将方程式移动到外部API。
我有一个温度值,我想从这个温度得到一个电阻值。
我使用 Steinhart-Hart method 但这个等式总是 returns 7,39 无论温度和系数如何。
我基于 steinhart 方法(见下文)的第二个实现不适用于负系数。
你知道我的代码有什么问题吗?
double WSensor::temperatureToResistance(double _temp)
{
double Temp = _temp + 273.15;
double X = ((this->therm->getA() - (1 / Temp)) / this->therm->getC());
double Y = this->therm->getB() / this->therm->getC();
double argExpo = pow(-(X / 2) + pow((X*X) / 4 + (Y*Y*Y) / 27, 1.0 / 2.), 1.0 / 3.0) - pow((-(X / 2) - pow((X*X) / 4 + (Y*Y*Y) / 27, 1.0 / 2.0)) * (-1), 1.0 / 3.0);
return exp(argExpo);
}
经过 3 天的工作,我知道为什么这个等式在 arduino 上不起作用:溢出。
等式的某些部分 float
对于这个板模型 (Arduino Uno) 来说太大了。
其中一个解决方案是重新表述等式以防止出现更大的结果。但是这个解决方案需要太多时间并且需要良好的数学技能,这就是为什么我决定将方程式移动到外部API。