
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
//-------------------------------------------------------//
// Project Code : CodeLibrary
// File Name : Ntc.cpp
// Created on : 2022. 11. 5.
// Description : 테이블 방식의 NTC 온도계산 프로그램
// Author : KimJeongWoo
// Last modified Date :
//-------------------------------------------------------//
#include "CodeLibMath.h"
#include "Ntc.h"
void NtcTableReadTemp(float *NtcTemp, int *AdcData, struct sNTCTABLE *NtcTable)
{
if (*NtcTemp <= 0)
{
if (*AdcData <= NtcTable->Table[0]) *NtcTemp = 0;
else *NtcTemp = 1;
}
else if (*NtcTemp >= NtcTable->Size)
{
if (*AdcData > NtcTable->Table[NtcTable->Size]) *NtcTemp = NtcTable->Size - 1;
else *NtcTemp = NtcTable->Size;
}
else
{
if (*AdcData < NtcTable->Table[(Uint16) *NtcTemp - 1]) *NtcTemp = *NtcTemp - 1;
else if (*AdcData >= NtcTable->Table[(Uint16) *NtcTemp]) *NtcTemp = *NtcTemp + 1;
}
}
//--------------------------Table 생성코드---------------------------------//
//todo Beta 값 기반인데 나중에 Stain-Heart Heart 방정식으로 변경하면 좋을 듯?
//
void NtcTableGen(struct sNTCTABLE *Ntc)
{
int i = 0.;
float Rntc = 0.;
float Vntc = 0.;
for ( i = 0; i < Ntc->Size; i++)
{
Rntc = (Ntc->R25 * expf(Ntc->Beta * (1. / (273.15 + (float)i) - 1. / 298.15)));
Vntc = (Ntc->Vset * (Ntc->Rset / (Rntc + Ntc->Rset)));
//ADC 12bit, 3Vref
Ntc->Table[i] = 4095. * (Vntc / 3.);
}
}
//----------------------------------------------------------------------------------------------------//