Controlador DIY para Ferro de Solda Hakko 907 v2 com Arduino Nano
Componentes Necessários
- 1x Punho Hakko 907 (heater + thermistor OU thermocouple tipo K)
- 1x Conector aviation 5 pinos GX16-5 (substitui plug original)
- 1x Arduino Nano R3
- 1x Display LCD 8x2 (ou 16x2 — sketch alternativo no GitHub)
- 1x Amplificador operacional MCP602 (rail-to-rail, precisão)
- 1x MOSFET IRFZ44N (chaveamento heater)
- 1x Driver push-pull: 2x transistores BJT (NPN + PNP, ex: 2N2222/2N2907) para gate rápido do MOSFET
- 1x Diodo recuperação rápida FR107 (proteção indutiva heater)
- 1x Diodo Zener 15V (limita Vgs do MOSFET)
- 1x Conversor DC-DC (24V→5V para Arduino)
- 1x Encoder rotativo com botão
- 1x Buzzer
- Capacitores: 1000µF/35V (entrada 24V), 4x 100nF (desacoplamento)
- Resistores: 2x 1kΩ, 1x 10kΩ, 2x 100kΩ, 1x 330Ω, 1x 470Ω, 1x 39Ω, 2x 33kΩ
- Potenciômetros multi-volta: 10kΩ (offset amp), 500kΩ (ganho amp)
Visão Geral
Controlador avançado para ferro Hakko 907 (ou compatíveis) com PID silencioso (PWM 31.25kHz via Timer1), calibração automática de 3 pontos, encoder acelerado, EEPROM, seleção °C/°F, desligamento automático por inatividade e modo "potência fixa".
Suporta duas topologias de sensor (termistor ou thermocouple) via jumpers JP1/JP2 no circuito do MCP602.
Recursos Principais
- PID iterativo otimizado para PWM de alta frequência: aquece a 350°C em ~30s, mantém ±1-2°C
- PWM 31.25kHz (Timer1, fase/frequência corrigida) — silencioso, sem ruído audível do heater
- Driver push-pull BJT carrega/descarrega gate do MOSFET IRFZ44N em nanossegundos
- Calibração 3 pontos (200/300/400°C) com PID mantendo temp alvo durante ajuste
- Tune mode simplifica ajuste inicial do ganho do amp (target: leitura ADC ~900 a 400°C)
- Encoder acelerado: giro lento = ±1°C, giro rápido = ±5°C
- Auto-off inteligente: detecta uso via aumento de potência acima do baseline ocioso
- Modo potência fixa: controle manual % potência (útil para componentes sensíveis)
- EEPROM: salva preset temp, fan, calibração, configurações
Menu e Operação
Modos
- Standby: Ferro desligado. Mostra preset + "OFF". Temp atual na linha 2. "no iron" se desconectado. "cold" se esfriando pós-uso.
- Main (Keep Temp): Pressione encoder → liga. Mostra preset + "ON"/"rdy". Linha 2: temp atual + % potência. Giro = ajusta preset.
- Power Mode: Pressão longa no Main → ajuste manual % potência. Linha 2: potência interna + temp real. Pressão curta = liga/desliga. Longa = volta ao Main.
- Setup: Pressão longa no Standby → menu: timeout auto-off (min), °C/°F, Calibrate, Tune, Save, Cancel, Reset Defaults.
Calibração (Requer Termômetro Externo)
- Setup → Reset Defaults (carrega padrões)
- Setup → Tune: sistema aquece. Ajuste potência via encoder para 400°C (termo externo). Gire trim-pot 500kΩ para ADC ~900-950. Pressão longa = pronto.
- Setup → Calibrate: escolha 200/300/400°C. Sistema aquece e beep. Gire encoder para temp real. Repita nos 3 pontos.
- Setup → Save.
Circuito do Sensor (MCP602)
Amplificador rail-to-rail usa faixa completa do ADC (0-1023 = 0-5V). Dois jumpers selecionam sensor:
- Thermocouple: JP1 e JP2 ABERTOS. Termopar gera 0-9mV (0-400°C). Ganho alto necessário.
- Thermistor: JP1 e JP2 FECHADOS. Divisor resistivo com thermistor (50Ω frio → 200Ω a 400°C).
Potenciômetro 500kΩ (multi-volta) ajusta ganho. Potenciômetro 10kΩ ajusta offset. No Tune mode, ADC mostra valor bruto (0-1023) para facilitar.
Circuito do Heater (PWM Silencioso)

Problema: MOSFET IRFZ44N tem capacitância de gate (~1.7nF). PWM padrão 490Hz não exige driver rápido, mas 31.25kHz exige.
Solução: Driver push-pull (totem pole) com par NPN/PNP. Carrega gate em ~100ns. Zener 15V limita Vgs (alimentação 24V > Vgs max 20V). FR107 descarrega indutância do heater ao desligar. Capacitor 1000µF na entrada 24V evita brownout no Arduino (heater frio = baixa resistência = pico de corrente).
Código Fonte
Disponível no GitHub: soldering_907_lcd.ino
Estrutura principal (classes):
IRON_CFG— EEPROM + calibração 3 pontos + conversão tempPID— Iterativo (Kp=50, Ki=16, Kd=50 @ denom 2048)DSPL— LCD 8x2/16x2 (chars custom: °, fan, power)BUZZER— Beeps variadosFastPWM_D9— Timer1 31.25kHzIRON— Herda PID; máquina de estados + sync + segurançaDEBUG_PID— Ajuste fino de Kp/Ki/Kd via Serial
Esquemático Completo
Arquivo Eagle: complete_9vLI2a96Rv.sch (disponível no projeto). Inclui:
- Entrada 24V DC → 1000µF → DC-DC 5V → Arduino
- MCP602 + jumpers JP1/JP2 + trimpots
- Driver push-pull + MOSFET + Zener + FR107 + heater
- LCD (paralelo 4-bit ou I2C), encoder, buzzer
Notas de Versão
- v2 (2019): Esquemático atualizado, driver push-pull, PWM 31kHz
- 2018: Calibração melhorada
- 2017: Bugfix sketch, suporte LCD1602, novo hardware
Dicas de Construção
- Use conector aviation GX16-5 no punho — robusto, polarizado
- Monte driver push-pull o mais próximo possível do MOSFET
- FR107 deve ser recuperação rápida (trr < 500ns)
- Teste em bancada com carga resistiva antes de ligar ferro real
- Para LCD 16x2, use sketch alternativo no GitHub (mesmo código, pinos diferentes)
Conclusão
É uma satisfação enorme usar ferro controlado: aquece rápido, mantém temperatura estável, silencioso. Este projeto prova que com Arduino, bons componentes analógicos e PID bem ajustado, dá para igualar (ou superar) estações profissionais por fração do custo.
Processo de manufatura
- Sistema Multi-Posição de Sensores de Temperatura para Integração em Casa Inteligente
- Controle USB para Jogos DIY com Arduino – Construa Seu Próprio Gamepad de Alto Desempenho
- Controlador DIY para Ferro de Solda 862D+ — Precisão e Confiabilidade
- MotionSense: Detecção Inteligente de Intrusão com Arduino e ESP8266
- Prevenção de Incêndio em Impressoras 3D: Sistema de Segurança com Sensor Inteligente
- Integração MIDI para Órgãos Digitais: Guia de Componentes e Configuração
- Levitação Magnética Repulsiva com Arduino: Circuito Simples e Guia DIY
- CoroFence Detector Térmico: Sensor PIR Avançado & Integração IoT
- Processo FINEX: Produção Avançada de Ferro Gusa usando Finos de Minério e Carvão Não-Coqueável
- Componentes Invar 36: Materiais, Propriedades e Compra Confiável