Sha256: 06c5b11ed297d43c810e99215cbf31bce8e4febb2f6509913e60d1cbf9b71dea

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

/* =========================================================================
    Ceedling - Test-Centered Build System for C
    ThrowTheSwitch.org
    Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
    SPDX-License-Identifier: MIT
========================================================================= */

#include "Types.h"
#include "TemperatureCalculator.h"
#include <math.h>

#ifndef logl
#define logl log
#endif

#ifndef SUPPLY_VOLTAGE
#define SUPPLY_VOLTAGE 5.0
#endif

float TemperatureCalculator_Calculate(uint16 millivolts)
{
  const double supply_voltage = SUPPLY_VOLTAGE;
  const double series_resistance = 5000;
  const double coefficient_A = 316589.698;
  const double coefficient_B = -0.1382009;
  double sensor_voltage = ((double)millivolts / 1000);
  double resistance;
  
  if (millivolts == 0)
  {
    return -INFINITY;
  }

  // Series resistor is 5k Ohms; Reference voltage is 3.0V
  // R(t) = A * e^(B*t); R is resistance of thermisor; t is temperature in C
  resistance = ((supply_voltage * series_resistance) / sensor_voltage) - series_resistance;
  return (float)(logl(resistance / coefficient_A) / coefficient_B);
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ceedling-1.0.1 examples/temp_sensor/src/TemperatureCalculator.c
ceedling-1.0.0 examples/temp_sensor/src/TemperatureCalculator.c