Päädyin tällaiseen kaavaan joka näyttäisi äkkiseltään antavan ainakin oikealla hehtaarilla olevia tuloksia tasaisella virralla, näyttääkö järkevältä? Tarkka Rthja arvo tietty riippuu ulkoisista seikoista kuten piirilevyn jäähdytyskyvystä, mutta jos säädän tuon kohdalleen trial-and-error menetelmällä mittaamalla loppulämpötilan jollain tunnetulla tasavirralla tietyssä ympäristön lämmössä, oletan että simulaatio on suht tarkka muillakin virroilla ja lämmöillä?
Fettejä ohjataan PWM:llä eli tilan vaihtamisesta tulee myös jonkinverran lämpöhäviötä. Taajuus on vakio ja matala vain vähän reilu 100Hz, tän saanee twiikattua mukaan säätämällä RdsOn parametria vähän suuremmaksi? Virrat on sen verran suuria fetteihin nähden, ja gateilla hyvä ohjaus, että täysin johtavassa tilassa tuleva häviö on paljon merkittävämmässä roolissa. Tietysti jos switching lossit saa jotenkin fiksummin simulaatioon mukaan niin aina parempi, mut en oikein ole perillä miten se edes lasketaan?
Koodi: Valitse kaikki
static float Rthja = 59.0f; // Thermal resistance from case to air (°C/W)
static float Rthjc = 11.8f; // Thermal resistance from case to junction (°C/W)
static float RdsOn = 0.02f; // RdsOn parameter, on-resistance of mosfet (ohm)
float CalculateDelta(float current, float ambientT, float stepSize)
{
float Pd = (current * current) * RdsOn;
float Rth = Rthja + Rthjc;
float deltaT = (Pd * Rth) * stepSize;
float coolingDeltaT = ((CurrentTemperature - ambientT) / Rthjc) * stepSize;
deltaT -= coolingDeltaT;
return deltaT;
}
Ja lämpötilan päivitys toisaalla....
CurrentTemperature += deltaT;
float coolingDeltaT = ((CurrentTemperature - ambientT) / Rthjc) * stepSize;
Mun mielestä Rthjc tilalla pitäisi olla (Rthja + Rthjc) mutta se aiheuttaa aivan liian suuria lämpötiloja käytännössä testatulla virralla, mikä herättää epäilyksen että toi on laskettu jotenkin päin persiitä?