v.2 UPD 22/10/25
- Уточнение названия чипов
- Для MCU головы, изменены коэффициенты. Взяты из документации на подсерию GD32F303xB вместо более общей документации GDF303xx, как в первой версии. На выходе получаем, что MCU головы греется сильнее на 8-10 градусов. Спасибо коллегам за тесты с тепловизором и термопарой.
Внимание! Датчики внутри MCU с завода не калибруются и различные экземпляры могут выдавать разные погрешности. Данные температуры не являются точными и используются только для общей оценки состояния системы.
Данное руководство подразумевает, что вы владеете навыками работы с конфиг файлами, ssh, sftp и умеете редактировать/копировать файлы в файловой системе принтера.
Все изменения вы делаете на свой страх и риск, и под личную ответственность!!!
Как известно Klipper создавался под такие микроконтроллеры как STM32, однако китайцы не стоят на месте и давно научились делать их функциональных клонов. Благодаря, тому что разработчики принтера переопределили и жестко указали тип MCU, Klipper даже и не знает, что работает с клонами.
- Host: Rockchip RK3308B, поддерживается на уровне ядра linux, Отображение температуры работает в стоке, проблем нет.
- MCU Head: GD32F303CBT6 (переопределен как stm32f103) , используются коэффициенты от STM32, которые могут искажать настоящую температуру. Отображение температуры работает в стоке, но желательна* правка коэффициентов от клона.
- MCU Back: GD32F425RET6 (переопределен как stm32f407). У оригинального STM32 калибровочные коэффициенты при производстве записываются в спец регистры, которых у китайского клона нет. Отображение температуры не работает в стоке, при активации Klipper падает в ошибку (Division by zero). Требуется* изменение расчета температуры и использование коэффициентов от клона.
Обязательно сделайте копию оригинального файла.
//****
Вы можете не заменять файл на предложенный, а отредактировать ваш:
Нужно изменить два метода в данном файле:
def config_stm32f1(self):
self.slope = 3.3 / -.004070
self.base_temperature = self.calc_base(25., 1.454 / 3.3)
и
def config_stm32f4(self):
self.slope = 3.3 / -.004400
self.base_temperature = self.calc_base(25., 1.4 / 3.3)
****//
Все коэффициенты взяты из официальных даташитов GD32.
Хост:
[temperature_sensor RK3308B]
sensor_type: temperature_host
min_temp:0
max_temp:100
MCU в голове:
[temperature_sensor MCU_Head]
sensor_type: temperature_mcu
sensor_mcu: THR
min_temp:0
max_temp:100
MCU на задней плате (!Только если вы выполнили пункт 1, иначе получите ошибку Klipper!):
[temperature_sensor MCU_Back]
sensor_type: temperature_mcu
sensor_mcu: mcu
min_temp:0
max_temp:100

P.S. После обновления прошивки будет необходимо проделать все операции заново!
Автор: @EteRys