Firmware Autónomo iHeater¶
iHeater é uma solução compacta e acessível para impressoras 3D sem câmara térmica ativa ou com capacidade limitada de conexão na placa-mãe. É particularmente útil para modelos com placas proprietárias, onde não há conectores livres para ventoinha, aquecedor ou termistor. O iHeater resolve este problema de forma simples e universal.
Pode funcionar de forma independente com o seu próprio firmware como dispositivo separado ou sob controlo do Klipper com conexão à impressora por USB
Sobre o firmware¶
iHeater é um firmware para um dispositivo autónomo de controlo de temperatura da câmara de uma impressora 3D.
Finalidade¶
O dispositivo fornece aquecimento e mantém uma temperatura estável dentro da câmara da impressora 3D, que é crítico para impressão de ABS, ASA e outros plásticos dependentes da temperatura com elevada contração e baixa adesão entre camadas.
Alimentação¶
A placa iHeater não possui fonte de alimentação própria. Para usá-la no modo Standalone, alimente a placa com 5 V.
Verifique se a placa está alimentada.
Sem alimentação, os LEDs permanecem apagados e o aquecimento não é iniciado. Verifique a alimentação antes de procurar a causa no firmware ou nas configurações.
Opções de alimentação:
- Cabo USB. Ligue o USB a um adaptador de energia ou a qualquer outra fonte de 5 V. Um host (impressora, Klipper) não é necessário.
- Fonte externa de 5 V. Ligue a fonte ao conector de alimentação separado da placa; a posição do conector depende da revisão da placa. Use esta opção quando ela facilitar a montagem, por exemplo ao alimentar a placa a partir da fonte da impressora.
- Módulo de alimentação de 5 V na placa (opção experimental). O módulo é soldado diretamente na placa e a alimenta a partir da fonte escolhida. Esta opção não faz parte do conjunto básico e foi testada com menos rigor do que as demais.
Nunca ligue várias fontes de alimentação ao mesmo tempo.
Ligar USB, fonte externa e módulo de alimentação ao mesmo tempo causa conflito entre as fontes e falhas de funcionamento, e pode danificar o equipamento.
A indicação por LED mostra que a placa está alimentada.
Como configurar o firmware¶
Ficheiro config.h¶
Este ficheiro define os parâmetros de funcionamento do dispositivo: O ficheiro está localizado na pasta Core/Inc/config.h
| Parâmetro | Finalidade |
|---|---|
SELECTED_THERMISTOR_TYPE |
Seleção do tipo de termistor (0-5, ver abaixo) |
MODE_TEMP_0-MODE_TEMP_7 |
Temperaturas para cada modo. Pode definir qualquer valor, incluindo decimais, por exemplo MODE_TEMP_4 67.5 |
MAX_TEMP, MIN_TEMP |
Intervalo de temperatura admissível do aquecedor |
MAX_AIR_TEMP, MIN_AIR_TEMP |
Intervalo de temperatura do ar |
HEATER_MIN_PWM |
PWM mínimo no qual o sistema começará a verificar a resposta do aquecedor |
HEATER_RESPONSE_TIMEOUT_MS |
Tempo de espera para o aumento de temperatura do aquecedor (predefinido: 5 seg) |
AIR_TARGET_TIMEOUT_MS |
Tempo máximo para atingir a temperatura alvo do ar (predefinido: 10 min) |
TIMER_CLOCK, PWM_FREQUENCY, PWM_STEPS |
Configuração da frequência e qualidade do PWM |
Termistores¶
Selecionados em SELECTED_THERMISTOR_TYPE. Suportados:
| ID | Tipo | Comentário |
|---|---|---|
| 0 | ATC Semitec 104GT-2 | Padrão da E3D |
| 1 | ATC Semitec 104NT-4-R025H42G | Análogo do 104GT |
| 2 | EPCOS 100K B57560G104F | Popular |
| 3 | Generic 3950 | Predefinido, amplamente utilizado |
| 4 | SliceEngineering 450 | Suporte para temperaturas elevadas |
| 5 | TDK NTCG104LH104JT1 | Médico, preciso |
Modos de temperatura e LEDs¶
O modo é definido pelo valor de temperatura e é apresentado em forma binária através de três LEDs:
Ao ativar o modo, os LEDs piscam; ao atingir o modo, iluminam-se continuamente
| Mode | Temperature | LED3 | LED2 | LED1 |
|---|---|---|---|---|
| MODE_TEMP_0 | 0.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_1 | 55.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_2 | 60.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_3 | 65.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_4 | 70.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_5 | 75.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_6 | 80.0°C | ![]() |
![]() |
![]() |
| MODE_TEMP_7 | 85.0°C | ![]() |
![]() |
![]() |
Ativação e desativação automáticas r1.1¶
Macros
Controlam a temperatura de ativação e desativação do aquecedor, bem como o modo ao ativar.
Suponha que o termistor do gatilho está localizado perto do aquecedor da mesa. Com as configurações atuais, o aquecimento da câmara ativará quando a temperatura da mesa atingir 45 e desativará quando a temperatura da mesa cair abaixo de 80, estes parâmetros são aceitáveis para a maioria dos plásticos que requerem câmara térmica ativa e não causam conflitos lógicos durante o funcionamento.
Também pode selecionar o modo que será ativado quando o gatilho for disparado. Por exemplo, agora é selecionado TRIGGER_MODE MODE_2, o que significa que o modo MODE_TEMP_2 será ativado - temperatura na câmara 60.0°C
Trabalho com iHeater-link (montagem r1.1 pulse)¶
A montagem iheater_rev1_1_pulse é projetada para funcionar em conjunto com o módulo iHeater-link no ESP. O módulo recebe comandos da impressora, portal ou aplicação móvel e transmite a definição de temperatura da câmara para o iHeater através de uma linha GPIO. O firmware iHeater não depende do lado da impressora e não conhece o transporte - recebe apenas um número: a temperatura do ar desejada na câmara em °C.
Conexão¶
- Grave o iHeater com a montagem
iheater_rev1_1_pulse(ver secção "Como gravar"). - Ligue o fio de sinal do iHeater-link ao conector TH2 da placa iHeater (pino PB1).
- A ligação à terra GND comum entre ESP e iHeater é obrigatória - utilize um fio de terra separado.
- Deixe o termistor do aquecedor no seu conector padrão TH0. O termistor do ar em TH1. Funcionam como em qualquer outra montagem.
- O conector do gatilho não é utilizado nesta montagem (a sua linha é ocupada pela entrada digital).
Nunca ligue ou desligue o fio de sinal com alimentação fornecida.
Comandos recebidos¶
| Código de iHeater-link | Significado |
|---|---|
0 |
Desativar aquecimento |
10 |
Desativar aquecimento (código de desativação acordado) |
45..90 |
Ativar aquecimento, definição de ar em °C igual ao código |
| outros valores | Ignorados, estado anterior mantido |
O mínimo 45 °C é definido em config.h pela macro PULSE_MIN_TARGET. O máximo é limitado por MAX_AIR_TEMP (predefinido: 90 °C).
Indicação LED¶
| Estado | LED1 | LED2 | LED3 |
|---|---|---|---|
| Aguardando primeiro pacote após inicialização | LED a correr LED1 → LED2 → LED3 com passo de 1000 ms | ||
| Ligação OK, aquecimento desativado | iluminado continuamente (heartbeat "ligação ativa") | apagado | piscada curta ~80 ms em cada pacote recebido |
| Ligação OK, aquecimento ativado | LED a correr LED1 → LED2 → LED3 com passo de 200 ms | ||
| Ligação perdida (mais de 5 s sem pacote após primeira conexão) | "Farol": os três LEDs piscam em simultâneo durante ~100 ms a cada 2 s. Aquecedor desativado, ventilador ativado. |
Os erros normais (sobreaquecimento, termistor desligado, aquecedor não responde) funcionam da mesma forma que nas montagens analógicas - ver secção "Como lidar com erros".
Comportamento em caso de perda de ligação¶
O firmware desliga o aquecimento quando os comandos do iHeater-link deixam de chegar e retoma o funcionamento quando voltam a chegar.
Após ligar, o firmware aguarda o primeiro pacote e mostra uma luz corrida lenta (passo de 1000 ms). O aquecedor está desativado. A espera não tem limite de tempo: enquanto a ligação nunca tiver sido estabelecida, a ausência de pacotes não é considerada perda de ligação.
Após receber o primeiro pacote, aplica-se a regra: se não chegarem pacotes durante mais de 5 segundos, a ligação é considerada perdida. Durante estes 5 segundos, o iHeater continua a funcionar segundo o último comando.
Em caso de perda de ligação:
- O aquecedor é desativado.
- O ventilador é ativado e funciona até a ligação ser restabelecida.
- Os LEDs mostram o "farol": os três LEDs piscam durante ~100 ms a cada 2 s.
Nenhum erro é guardado na flash, o controlador não reinicia e não é necessário premir o botão MODE. Quando os pacotes voltam a chegar, o iHeater executa o comando recebido: com um valor-alvo 45..90 retoma o aquecimento; com 0 ou 10 permanece desativado.
Botão MODE¶
Na montagem pulse, o botão MODE não muda de modo e não inicia a calibração. A sua única função é limpar o erro guardado ao iniciar o dispositivo. Todos os comandos de aquecimento vêm apenas do iHeater-link.
Como gravar¶
Descarregar¶
Descarregue o firmware da página de lançamentos
Utilizar firmware pronto¶
O firmware é pré-configurado com modos de temperatura de MODE_TEMP_0 a MODE_TEMP_7, conforme descrito acima, e é destinado a funcionar com um termistor do tipo Generic 3950 (tipo 3 conforme a lista em config.h).
Utilizar modo DFU (USB)¶
- Instale o jumper BOOT0
- Ligue o USB, o dispositivo será reconhecido como DFU 3.1 Carregue o firmware usando STM32CubeProgrammer:
3.1.1 Especifique o caminho para o ficheiro .bin do firmware (por exemplo: Firmware/iHeater_v1.2.3.bin)
3.1.2 Defina o endereço de carga: 0x08000000
3.1.3 Clique em "Start Programming"
ou
3.2 Carregue o firmware através da linha de comandos: ```bash dfu-util -a 0 -s 0x08000000 -D Firmware/iHeater_vX.Y.Z.bin 4. Remova o jumper e reinicie a alimentação
- Mantenha o botão BOOT pressionado
- Ligue o USB, o dispositivo será reconhecido como DFU
-
Carregue o firmware usando STM32CubeProgrammer:
3.1.1 Especifique o caminho para o ficheiro
.bindo firmware (por exemplo:Firmware/iHeater_v1.2.3.bin)3.1.2 Defina o endereço de carga:
0x080000003.1.3 Clique em "Start Programming"
ou
3.2 Carregue o firmware através da linha de comandos:
-
Reinicie a alimentação
Como usar¶
Antes de usar, verifique se a placa está alimentada — consulte a seção "Alimentação".
- Pressão curta do botão MODE - alterna entre modos (0-7)
- Pressão longa (2+ seg) - redefine o modo para 0 (OFF)
- LEDs exibem o modo atual conforme a tabela acima
- Piscada de LEDs - modo ativo mas temperatura ainda não atingida
- Iluminação contínua - temperatura alvo atingida
Diferenças entre revisões
a revisão r1.1 tem uma porta de gatilho para ativação e desativação automática do aquecimento da câmara. Ao ligar um termistor à porta de gatilho, o aquecimento ativará e desativará de acordo com as temperaturas especificadas em config.h, por predefinição 45 e 80 para ativação e desativação do aquecimento.
- Pressão curta do botão MODE - alterna entre modos (0-7)
- Pressão longa (2+ seg) - redefine o modo para 0 (OFF)
- LEDs exibem o modo atual conforme a tabela acima
- Piscada de LEDs - modo ativo mas temperatura ainda não atingida
- Iluminação contínua - temperatura alvo atingida
Como lidar com erros¶
O dispositivo reinicia automaticamente e apresenta o código de erro através dos LEDs, com o ventilador ativado.
Limpeza de erros¶
Mantenha o botão MODE pressionado durante o arranque até os LEDs mudarem de indicação. O erro será apagado da flash e o dispositivo continuará funcionando normalmente.
Ajuste fino¶
Caso haja confirmação de que as leituras do termistor diferem da temperatura real, pode utilizar a função de ajuste fino para isso, é necessário medir a resistência dos resistores correspondentes e escrever os seus valores em vez dos valores predefinidos
#define PULLUP_TH0 4700.0f
#define PULLUP_TH1 4700.0f
#define PULLUP_TH2 4700.0f
Este software é licenciado sob a Licença Pública Geral GNU v3.0 apenas para uso não comercial.




