我有一个温度值,我想从这个温度得到一个电阻值。
我使用Steinhart-Hart method但是无论温度和系数如何,这个等式总是返回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);
}
答案 0 :(得分:1)
经过3天的工作,我知道为什么这个等式对arduino不起作用:溢出。
等式的某些部分为此电路板模型(Arduino Uno)创建float
太大。
其中一个解决方案是重新定义等式以防止更大的结果。但是这个解决方案需要花费太多时间并且需要良好的数学技能,这就是我决定在外部API中移动方程式的原因。