Dragica Stoiljkovic / Mbed 2 deprecated BMS_LV_VERZIJA_TESTIRANJE

Dependencies:   mbed

ntc.h

Committer:
dragica
Date:
2021-04-11
Revision:
5:38b2b8790b40

File content as of revision 5:38b2b8790b40:

#include "mbed.h"
const int n = 71;

int arrayTemp[n];
volatile double Vin = 5;
volatile double Rref = 13000;

void arrayInit()
{
    arrayTemp[0] = 32650;
    
    arrayTemp[1] = 31029;
    
    arrayTemp[2] = 29498;
    
    arrayTemp[3] = 28052;
    
    arrayTemp[4] = 26685;
    
    arrayTemp[5] = 25392;
    
    arrayTemp[6] = 24170;
    
    arrayTemp[7] = 23013;
    
    arrayTemp[8] = 21918;
    
    arrayTemp[9] = 20882;
    
    arrayTemp[10] = 19901;
    
    arrayTemp[11] = 18971;
    
    arrayTemp[12] = 18090;
    
    arrayTemp[13] = 17255;
    
    arrayTemp[14] = 16463;
    
    arrayTemp[15] = 15712;
    
    arrayTemp[16] = 14999;
    
    arrayTemp[17] = 14323;
    
    arrayTemp[18] = 13681;
    
    arrayTemp[19] = 13072;
    
    arrayTemp[20] = 12493;
    
    arrayTemp[21] = 11942;
    
    arrayTemp[22] = 11419;
    
    arrayTemp[23] = 10922;
    
    arrayTemp[24] = 10450;
    
    arrayTemp[25] = 10000;
    
    arrayTemp[26] = 9572;
    
    arrayTemp[27] = 9165;
    
    arrayTemp[28] = 8777;
    
    arrayTemp[29] = 8408;
    
    arrayTemp[30] = 8057;
    
    arrayTemp[31] = 7722;
    
    arrayTemp[32] = 7402;
    
    arrayTemp[33] = 7098;
    
    arrayTemp[34] = 6808;
    
    arrayTemp[35] = 6531;
    
    arrayTemp[36] = 6267;
    
    arrayTemp[37] = 6015;
    
    arrayTemp[38] = 5775;
    
    arrayTemp[39] = 5545;
    
    arrayTemp[40] = 5326;
    
    arrayTemp[41] = 5117;
    
    arrayTemp[42] = 4917;
    
    arrayTemp[43] = 4725;
    
    arrayTemp[44] = 4543;
    
    arrayTemp[45] = 4368;
    
    arrayTemp[46] = 4201;
    
    arrayTemp[47] = 4041;
    
    arrayTemp[48] = 3888;
    
    arrayTemp[49] = 3742;
    
    arrayTemp[50] = 3602;
    
    arrayTemp[51] = 3468;
    
    arrayTemp[52] = 3340;
    
    arrayTemp[53] = 3217;
    
    arrayTemp[54] = 3099;
    
    arrayTemp[55] = 2986;
    
    arrayTemp[56] = 2878;
    
    arrayTemp[57] = 2774;
    
    arrayTemp[58] = 2675;
    
    arrayTemp[59] = 2579;
    
    arrayTemp[60] = 2488;
    
    arrayTemp[61] = 2400;
    
    arrayTemp[62] = 2316;
    
    arrayTemp[63] = 2235;
    
    arrayTemp[64] = 2157;
    
    arrayTemp[65] = 2083;
    
    arrayTemp[66] = 2011;
    
    arrayTemp[67] = 1942;
    
    arrayTemp[68] = 1876;
    
    arrayTemp[69] = 1813;
    
    arrayTemp[70] = 1752;
}

double temp_funkcija_prenosa(double x)
{
    double mres1 = 1+((x*1000000000)/3.225804);
    double mres2 = pow(mres1, 0.1409242);
    double res = -139.9343 + (9663.0153/mres2);
    return res;
}

double binarySearch(double resistance)
{
    if (resistance >= 1752 && resistance <= 32650)
    { 
        int front;
        int rear;
        int mid;
        front = 0;
        rear = 71 - 1;
        while(front <= rear)
        {
            mid = (front + rear)/2; 
            if (arrayTemp[mid] > resistance && arrayTemp[mid + 1] < resistance )
            {
                return (mid + mid + 1) / 2;
            }
            else if (arrayTemp[mid] < resistance && arrayTemp[mid-1] > resistance)
            {
               return (mid + mid - 1) / 2;
            }
            else if (arrayTemp[mid] > resistance )
            {
                front = mid;
            }
            else
            {
                rear = mid;
            }
        }    
    }
    
    return temp_funkcija_prenosa(resistance); 
    
} 
int naponskiRazdelnik(double Vout)
{
    double Rterm = Rref * (Vin/Vout - 1);
    pc1.printf("Otpornost NTC-a  = %6.2f OHM\n", Rterm);
    double temperature = binarySearch(Rterm);
    pc1.printf("Temperature of GPIO1  = %6.2f C\n", temperature);
    return temperature;
}