Files
cm_heatsink_emulator/cm_heatsink_emulator.c
Christian Lind Vie Madsen ab53feccc5 just a fix..
2025-10-14 11:26:14 +02:00

51 lines
1.2 KiB
C

/*
* cm_heatsink_emulator.c
*
* Created on: 14 Oct 2025
* Author: Christian L. V. Madsen (OZ1CM)
*/
#include "cm_heatsink_emulator.h"
#include "math.h"
#define EULER_NUM 2.7182818284590452353602
static float deltaTempElement(cm_heatsink_thermalElement_t *element, float temperature, float power){
return temperature + (power * element->R_th);
}
float cm_heatsinkEmul_getRespon(cm_heatsinkEmul_t *inst, float dtime){
float dtemp = inst->ambientTemp;
for(int i = inst->thermalElements_Counts; i > 0; i--){
dtemp+= deltaTempElement(&inst->thermalElements[i], dtemp, inst->power);
}
printf("dTemp: %f", dtemp);
//inst->heatsinkTemperature = inst->heatsinkTemperature + (1.0 / inst->C_th) * (Heatsink_RespVal(inst) - inst->heatsinkTemperature) * dt;
return inst->heatsinkTemperature;
}
int cm_heatsinkEmul_init(cm_heatsinkEmul_t *inst, cm_heatsink_thermalElement_t *elements, int elements_Count, float power, float ambientTemp){
if(inst == NULL)return 0;
if(elements == NULL)return 0;
if(elements_Count == 0)return 0;
inst->thermalElements = elements;
inst->thermalElements_Counts = elements_Count;
inst->power = power;
inst->ambientTemp = ambientTemp;
return 0;
}