Hakko 907 v.2 はんだごてコントローラー自作:Arduino NanoでPID温度制御
必要な部品と材料
| Hakko 907 はんだごてハンドル(ヒータ+サーミスタ/熱電対内蔵、5ピン航空プラグ推奨) | ×1 |
| 5ピン航空プラグ GX16-5 または GX12-5(ハンドル側コネクタ交換用) | ×1 |
| DC-DCコンバータ(24V→5V、Arduino/ロジック電源用) | ×1 |
| Arduino Nano R3 | ×1 |
| LCD 8x2文字(または16x2、I2Cモジュール付き推奨) | ×1 |
| オペアンプ MCP602(レールツーレール、熱電対/サーミスタ増幅用) | ×1 |
| MOSFET IRFZ44N(ヒータ駆動用) | ×1 |
| 高速リカバリダイオード FR107(ヒータ逆起電力吸収) | ×1 |
| トランジスタ NPN/PNP 各1(MOSFETゲートドライバ用、2段プッシュプル) | 各1 |
| ロータリーエンコーダ(プッシュボタン付き) | ×1 |
| コンデンサ 1000µF 35V(入力平滑、ヒータ突入電流対策) | ×1 |
| コンデンサ 100nF ×4、抵抗各種(1kΩ×2, 10kΩ, 100kΩ×2, 10kΩ/500kΩマルチターンVR各1) | 各種 |
| ブザー | ×1 |
必要な工具・ソフトウェア
- はんだごて、テスタ、オシロスコープ(ゲート波形確認用)
- Arduino IDE
プロジェクト概要
Hakko 907互換はんだごてハンドルをArduino Nanoで制御し、PIDアルゴリズムによる高精度温度制御を実現するコントローラーを自作します。第2世代(v.2)では高周波PWM(31.25kHz)でコイル鳴きを抑制、3点校正・チューンモード・自動電源オフなど実用機能を充実させています。
主な特長
- サーミスタ/熱電対両対応:ジャンパー(JP1, JP2)切替でどちらのハンドルも使用可能
- PID制御:立ち上がり約30秒、定常時±1〜2℃の安定度
- 高周波PWM(31.25kHz):Timer1使用で
analogWrite()の490Hzから大幅向上、可聴帯域ノイズ排除 - MOSFET高速駆動:NPN/PNPプッシュプルドライバでゲート充放電高速化、スイッチング損失低減
- 3点校正(200/300/400℃):外部温度計で実測値を入力、内部ADC値とマッピング
- チューンモード:初回セットアップで400℃到達時のADC値をマルチターンVRで≒900に調整するガイド機能
- 加速付きエンコーダ:ゆっくり回せば1℃、速く回せば5℃刻みで設定変更
- 設定EEPROM保存:前回設定温度を不揮発記憶
- ℃/℉切替、自動電源オフ(アイドル検知ベース)
メニュー構成・操作方法
| モード | 入り方 | 操作 | 表示内容 |
|---|---|---|---|
| スタンバイ | 起動時 / メインから短押し | エンコーダ回転で設定温度変更、短押しでメインへ | 設定温度 / OFF / 現在温度(冷却中は"cold") |
| メイン(温度制御) | スタンバイで短押し | エンコーダで設定温度変更、短押しでスタンバイ復帰、長押しでパワーモードへ | 設定温度 / ON→rdy / 現在温度 / 出力% |
| パワーモード(手動出力) | メインで長押し | エンコーダで出力%変更、短押しでON/OFF、長押しでメイン復帰 | 出力値(内部単位) / 現在温度 |
| セットアップ | スタンバイで長押し | エンコーダで項目選択、短押しで編集、長押しで保存してスタンバイ復帰 | 自動オフ時間 / ℃/℉ / 校正 / チューン / 保存 / キャンセル / デフォルト復元 |
センサ増幅回路(サーミスタ/熱電対共用)
MCP602(レールツーレールオペアンプ)を非反転増幅器として使用。サーミスタの場合は分圧回路+増幅、熱電対の場合は直列増幅。どちらも出力を0〜5V(ADC 0〜1023)にスケーリングします。500kΩマルチターンVRでゲイン調整し、400℃でADC≒900(5V×900/1023≒4.4V)を目標とします。余裕を持たせるため930〜950まで上げてから900に戻す手順を推奨。
ヒータ駆動回路(高周波PWM対応)
- MOSFET IRFZ44Nのゲート容量を高速充放電するため、NPN(2N2222等)/ PNP(2N2907等)のトーテムポールドライバを採用
- ツェナーダイオード 15V(D2)でゲート電圧クランプ(Vgs最大±20V対策)
- FR107高速ダイオードでヒータの逆起電力を電源側へ還流(スナバー効果)
- 24V入力直後に1000µF電解コンデンサ配置、冷態ヒータ低抵抗による突入電流で電源が落ちるのを防止
校正手順(外部温度計必須)
- セットアップメニュー「reset config」でデフォルト値読み込み
- 「tune」モード:エンコーダで出力調整し外部温度計で400℃に保持→マルチターンVRでADC≒900に調整→長押し完了
- 「calibrate」モード:200/300/400℃各点を選択→短押しで加熱開始→PID到達でビープ→外部温度計実測値をエンコーダ入力→短押しで保存→全点完了後長押し
- 「save」でEEPROM書き込み
自動電源オフ機能の仕組み
「アイドル時の出力%が最小値付近で安定している」ことを利用。使用中は熱負荷で出力%が増加するため、出力%の微小増加を「使用中」と判定します。PIDパラメータ調整でアイドル時の分散を最小化し、誤検知を抑制。信頼性が不安な場合は無効化可能。衝撃センサ搭載ハンドルならより確実です。
コードリポジトリ
完全なスケッチ(0802/1602両対応版)はGitHubで公開:
https://github.com/sfrwmaker/soldering_907_lcd/blob/master/soldering_907_lcd.ino
回路図・PCB
Eagle形式の完全回路図(complete_9vLI2a96Rv.sch)をプロジェクトページで公開。Manoj氏によるPCB設計版(関連リポジトリ)も参考になります。
温度換算ロジックとセンサタイプの違い
内部ADC値(0〜1023)を人間可読温度に変換するIRON_CFG::tempHuman()は、校正3点(200/300/400℃)間を線形補間。200℃未満は「周囲温度(内部値:サーミスタ約350、熱電対約0)」と200℃点で補間。熱電対使用時は周囲温度内部値を0に設定変更が必要(スケッチ244-245行目)。
まとめ
市販ステーション並みの性能を、Arduino Nanoと手に入りやすい部品で実現した決定版DIYはんだごてコントローラーです。高周波PWM+プッシュプルドライバ+バースト火制御的PIDという構成は、ヒータ制御のベストプラクティスの一つです。コードはモジュール化されており(CONFIG, PID, DSPL, BUZZER等クラス分け)、拡張・移植も容易です。自作PCB化すればコンパクトな専用機に仕上がります。はんだ付け品質を安定させたい全メイカーにお勧めのプロジェクトです。
製造プロセス
- スマートホーム連携向けマルチポジション温度センサーシステム
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- 862D+はんだごて用DIY温度コントローラー:精度と信頼性を両立
- MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
- 3Dプリンター火災予防:スマートセンサーセーフティシステム
- オルガンコンソールのMIDI化:部品選定とセットアップガイド
- Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
- 高度なリモートコントロールグリッパーロボット: 精密ハンドリング向け
- CoroFenceサーマルディテクター:Grid-EYE & PIRセンサー搭載IoT体温監視
- FINEXプロセス:鉄鉱石微粉と非コークス炭による先進的溶銑製造
- インバー36部品:材料、特性、信頼できる購入先