How to flash iHeater and change temperature thresholds/timeouts

Hi. Could you please tell me how to actually flash this iHeater? The problem points are: I don’t understand how to compile the firmware. The instructions don’t say a word about it. I also need a temperature of 40 degrees, but there seems to be a whole lot tied to it there, and the fan is supposed to turn on at 45 degrees, as I understand it. Which parameters can be safely changed without breaking the dependencies and logic? Also, where do I increase this timer? The one that’s responsible for the heating time.

build the firmware — pio run, it will build two firmware files in the firmware folder, for both board revisions
setting it to 40 just means changing the numbers in mode_temp

#define MODE_TEMP_0 0.0f
#define MODE_TEMP_1 55.0f
#define MODE_TEMP_2 60.0f
#define MODE_TEMP_3 65.0f
#define MODE_TEMP_4 70.0f
#define MODE_TEMP_5 75.0f
#define MODE_TEMP_6 80.0f
#define MODE_TEMP_7 85.0f

to keep it from losing its mind, it would be a good idea to adjust this too

#define FAN_ON_TEMP 55.0f
#define FAN_OFF_TEMP 35.0f
#define FAN_ON_ACTIVE_MODE_TEMP 40.0f

for 40, I think a reasonable compromise would be to lower it by 5C because it’ll probably trigger anyway, but for reliability maybe, idk

if (heater_temp > FAN_ON_ACTIVE_MODE_TEMP || air_temp > FAN_ON_ACTIVE_MODE_TEMP)

not sure what you mean about the timer, but if you basically don’t care what it’s set to, then here

#define HEATER_MIN_TEMP_DELTA 0.1f // Minimum required temperature increase
#define HEATER_RESPONSE_TIMEOUT_MS (1000 * 60 * 30) // Time to wait for heater response
#define HEATER_MIN_PWM 80.0f // Minimum PWM value for response check

#define AIR_MIN_TEMP_DELTA 1.0f // Minimum required air temperature increase
#define AIR_RESPONSE_TIMEOUT_MS (1000 * 60 * 30) // Time to wait for air response

replace 30 with 300 or 3000)

🇷🇺 Оригинал

Привет. Подскажи пожалуйста как всетаки прошить этот iheater. Проблемные моменты: я не понимаю как скомпилировать прошивку. В инструкции про это нет ни слова. Так же мне нужна температура 40 градусов, но на нее чет там дофига всего завязано и вентилятор должен включаться от 45 градусов как я понял. Какие параметры можно корректно изменить чтобы не нарушить зависимости и логику?. Так же где прибавить данный таймер? Ну который отвечает за время нагрева.

собрать прошивку - pio run, будет собрано две прошивки в папке firmware, для обеих ревизий платы
выставить 40 это все лишь поправить цифирьки в mode_temp

#define MODE_TEMP_0 0.0f
#define MODE_TEMP_1 55.0f
#define MODE_TEMP_2 60.0f
#define MODE_TEMP_3 65.0f
#define MODE_TEMP_4 70.0f
#define MODE_TEMP_5 75.0f
#define MODE_TEMP_6 80.0f
#define MODE_TEMP_7 85.0f

чтобы у него фляга не свистнула, неплохо поправить и тут

#define FAN_ON_TEMP 55.0f
#define FAN_OFF_TEMP 35.0f
#define FAN_ON_ACTIVE_MODE_TEMP 40.0f

для 40, я думаю, разумным компромиссом будет опустить на 5С потомоу что оно и так сработает, но для надежности наверное, хз

if (heater_temp > FAN_ON_ACTIVE_MODE_TEMP || air_temp > FAN_ON_ACTIVE_MODE_TEMP)

про таймер не понял, но если в принципе пофигу что там будет то тут

#define HEATER_MIN_TEMP_DELTA 0.1f // Minimum required temperature increase
#define HEATER_RESPONSE_TIMEOUT_MS (1000 * 60 * 30) // Time to wait for heater response
#define HEATER_MIN_PWM 80.0f // Minimum PWM value for response check

#define AIR_MIN_TEMP_DELTA 1.0f // Minimum required air temperature increase
#define AIR_RESPONSE_TIMEOUT_MS (1000 * 60 * 30) // Time to wait for air response

заменить 30 на 300 или 3000)

Thanks for the info. About the timer — mine throws a “Heater not responding” error. You restart it a few times, and then it starts working.

🇷🇺 Оригинал

Спасибо за информацию. Про таймер - у меня он в ошибку падает «Heater not responding». Несколько раз перезапускаешь его, и потом начинает работать.

that’s when it can’t heat up, there’s logic there: for the heater, the temperature has to increase by HEATER_MIN_TEMP_DELTA 0.1f within HEATER_RESPONSE_TIMEOUT_MS (1000 * 60 * 30)
if it’s not heating, I think it’s related to trying to heat something large, I don’t really see any other reasons right now

🇷🇺 Оригинал

это когда оно не может нагреть, там есть логика, для грелки это прирост температуры HEATER_MIN_TEMP_DELTA 0.1f должен быть за время HEATER_RESPONSE_TIMEOUT_MS (1000 * 60 * 30)
если оно не греется, я думаю, это связяано с попыткой нагреть что-то большое, других причин не пока вижу

Well, I kind of understand the cause, or at least what it might be.

I have pretty powerful cooling on the motors and the printer board, which creates a bit of air circulation in every part of the printer chamber. *With the stock cooling, the drivers on the board and the motors were overheating.
So naturally it takes longer to heat up (until the whole printer frame warms up, since the air circulates around it).

I mostly print nylon, ASA, and ABS, which need high temperatures (those were exactly the materials where my printer was overheating, which is why I installed stronger cooling).

Also, I print some critical parts in PETG (and that’s why I need 40–45 degrees).

🇷🇺 Оригинал

Ну, причину как бы я немного понимаю, в чем она может быть.

У меня на моторах и плате принтера стоит довольно мощное охлаждение, которое даёт в любой части камеры принтера небольшую циркуляцию воздуха. *Со стоковым охлаждением драйвера на плате и движки перегревались.
Соответственно прогрев идёт дольше(пока не погреется вся рама принтера, по которой воздух циркулирует).

Печатаю я в основном нейлоном, asa и abs пластиками которым нужна высокая температура(как раз на этих материалах были перегревы у моего принтера, причина установки мощного охлаждения).

А так же некоторые ответственные элементы печатаю из petg(под который и нужно 40 -45 градусов).