数日前、3D プリンタのメインボード BIGTREETECH 社 SKR mini E3 V3.0 でファンの動作がコントロールできない問題がありました。 しかし、本日コーヒーを飲みながらゆっくり考えると簡単に解決できました。
忘れないようにメモしておきます。
機種とファームウェア
対象のメインボードとファームは下記の通りです。
項目 | 値 |
---|---|
ボード | BIGTREETECH SKR mini E3 V3.0 |
ファームウェア | Marlin bugfix-2.0.x (Nightly Builds) |
現象
ファン動作の問題は G-code M106 命令でファンの動作を制御できなかったことです。 具体的には、番号 PC7 に接続するファンの動作を制御することができない状態でした。 また、PC7 は標準では FAN1 に設定されています。
さらに、制御されるべきである PC6 に接続される FAN0 も全く制御できない状態となっています。 PC6 の場合はボードに電源を入れると常に動作している状態となります。
PC7 に関しては Marlin の Configuration_adv.h ファイルを編集し様々なファンに設定できますが、M106 命令が効かない状態です。 私の場合はこのファンを冷却ブロワーとして使う予定でした。 しかし、M106 命令で制御できない場合、常に回転させておくか停止させておくかの二択になります。 そのため、特定の層を印刷中に停止し、それ以外は動作させるなどの制御ができないのは非常に不便です。
解決方法
Marlin のソースコードを変更して PC7 を FAN0 に設定すると M106 命令で動作制御できるようになります。
// Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h ファイルを下記のように編集します。 // 変更場所は Heaters / Fnas 項目です。 // 大体、140 行付近です。 // 変更前 #define FAN_PIN PC6 #define FAN1_PIN PC7 #define FAN2_PIN PB15 // 変更後 // #define FAN_PIN PC6 // この行をコメントアウト #define FAN_PIN PC7 // PC7 を FAN_PIN に割り当てる #define FAN1_PIN PB15 // PB15 はFAN1 に割り当てる、ここは番号と気分の問題
このようにコードを変更すると PC7 に割り当てたファンを M106 命令で制御できるようになります。 PC6 に接続されるファンについてはボードの電源 ON で常に動作しています。 この箇所を変更しても全く動作は変わらないため、問題ないです。