Программа считывает показания датчиков и управляет сервомашинками.

Dependencies:   mbed-src

Fork of NUCLEO_BLUENRG by Ostap Ostapsky

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers tag_math.c Source File

tag_math.c

00001 #include <math.h>
00002 #include "stm32f4xx_hal.h"
00003 
00004 /* Conversion algorithm for target temperature */
00005 double calcTmpTarget(uint8_t* rawData)
00006 {
00007   uint16_t rawT = (rawData[1] << 8) | rawData[0]; 
00008   double m_tmpAmb = ((rawData[3] << 8) | rawData[2] )/128.0;
00009       
00010   //-- calculate target temperature
00011   double Vobj2 = (double)(uint16_t)rawT;
00012   Vobj2 *= 0.00000015625;
00013 
00014   double Tdie2 = m_tmpAmb + 273.15;
00015   const double S0 = 6.4E-14;            // Calibration factor
00016 
00017   const double a1 = 1.75E-3;
00018   const double a2 = -1.678E-5;
00019   const double b0 = -2.94E-5;
00020   const double b1 = -5.7E-7;
00021   const double b2 = 4.63E-9;
00022   const double c2 = 13.4;
00023   const double Tref = 298.15;
00024   double S = S0*(1+a1*(Tdie2 - Tref)+a2*pow((Tdie2 - Tref),2));
00025   double Vos = b0 + b1*(Tdie2 - Tref) + b2*pow((Tdie2 - Tref),2);
00026   double fObj = (Vobj2 - Vos) + c2*pow((Vobj2 - Vos),2);
00027   double tObj = pow(pow(Tdie2,4) + (fObj/S),.25);
00028   tObj = (tObj - 273.15);
00029 
00030   return  m_tmpAmb;//tObj;
00031 }
00032 
00033 double calcHumTmp(uint16_t rawT)
00034 {
00035   double v;
00036 
00037   //-- calculate temperature [deg C] --
00038   v = -46.85 + 175.72/65536 *(double)(uint16_t)rawT;
00039 
00040   return v;
00041 }
00042 
00043 /*  Conversion algorithm, humidity */
00044 
00045 double calcHumRel(uint8_t* rawData)
00046 {
00047   double v;
00048   
00049   uint16_t rawH = (rawData[3] << 8) | rawData[2]; 
00050 
00051   rawH &= ~0x0003; // clear bits [1..0] (status bits)
00052   //-- calculate relative humidity [%RH] --
00053   v = -6.0 + 125.0/65536 * (double)rawH; // RH= -6 + 125 * SRH/2^16
00054 
00055   return v;
00056 }