Объясните, почему череповато? Почему грубо? По-моему, изящно и
тонко. См. ниже. Сопротивление открытого канала - известно (можно специально померить для начальной температуры -40, для целевой температуры -20 и для нормальных условий). Потом, ограничение тока вывода - известно из паспорта. Берём квадрат допустимого тока, перемножаем на сопротивление канала выходного транзистора GPIO в нормальных условиях (а можно и при -20 - что больше - то выгоднее - больше мощности без превышения допустимых пределов). Получаем ограничение мощности рассеяния на выходном транзисторе GPIO.
Настраиваем ШИМ на максимально высокую частоту - чтобы импульсы прогрева были короткими и не успевали перегревать канал транзистора - чтобы разогрев усреднялся. А скважность выбираем достаточно высокой, чтобы средняя мощность не превышала допустимую.
Всё! Мы в дамках! - подогрев кристалла - есть, транзистор не разрушен.