Hardware

【XY-Plotter】Part6:レーザーカッター実装

はじめに

これまでの記事ではペンプロッタとしてマシンを構成していたが,今回はヘッド部分をレーザーモジュールに換装してレーザーカッターへ構成変更する.

XY-Plotter
「XY-Plotter」の記事一覧です。

材料

材料は次の通り.今回はペンと違って上下に稼働する必要がないため部品点数も少なめ.

なおレーザー光は目に致命的なダメージを与える恐れがある.取扱には十分に注意すること.

レーザの電源をいれる際は必ず安全ゴーグルを着用すること.

LASER TREE LT-20W-A

レーザーモジュールのスペックは次の通り.4Wと比較的小さい出力でありながら,MDF,木材,紙,皮革,竹,プラスチック,ゴム,アルミナ,ステンレス鋼などの彫刻に利用できる他,紙のような薄い素材であれば切ることもできる.まずはこのモジュールでお試ししてみて,慣れて出力が足りないと感じてきたら高出力レーザーに交換してもいいかもしれない.

LT-20W-A ユーザーマニュアル

LT-20W-Aはクラス2レーザーだが,クラス2だからといって安全なわけではない.目の保護は必須.網膜を損傷してからでは遅い.必ず電源をいれる前に安全ゴーグルを着用すること.絶対に.

組み立て

部品点数が少ないので組み立ては簡単.レーザの焦点位置によって位置を上下に調整できるよう,BaseMountBracket側面のネジでAdapterPlateを押さえつけるように固定する.レーザーモジュールの高さと焦点距離調整はKlipperでレーザ出力を調整できるようになってから行うので,この時点では適当な位置でOK.

このレーザーモジュールはPWMで出力制御ができるので,ペンプロッタのサーボモータ制御に利用していたPWMをレーザーモジュールに差し替える.またレーザーモジュールの電源は12Vなので,ACアダプタから電源を取るように配線する.

Klipper設定

Klipper設定ファイルは以下の通り.このファイルの変更点は末尾のみ.includeでレーザー用の設定を読み込む.

[include mainsail.cfg]
[mcu]
serial: /dev/ttyS0
baud: 115200
restart_method: command

[virtual_sdcard]
path: ${/Path/To}/printer_data/gcodes
on_error_gcode: CANCEL_PRINT

[printer]
kinematics: corexy
max_velocity: 4000
max_accel: 4000
実際にカットする前にいくつか調整する必要がある.
[gcode_arcs]
#resolution: 1.0
#   An arc will be split into segments. Each segment's length will
#   equal the resolution in mm set above. Lower values will produce a
#   finer arc, but also more work for your machine. Arcs smaller than
#   the configured value will become straight lines. The default is
#   1mm.


#######################################
## STEPPER
#######################################
[stepper_x]
dir_pin:PD2              # Arduino D02
step_pin:PD5             # Arduino D05
enable_pin:!PB0          # Arduino D08
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PB1       # Arduino D09
position_endstop: 0
position_max: 240
homing_speed: 100.0

[stepper_y]
dir_pin:PD3              # Arduino D03
step_pin:PD6             # Arduino D06
enable_pin:!PB0          # Arduino D08
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PB2       # Arduino D10
position_endstop: 0
position_max: 180
homing_speed: 100.0

[stepper_z]
dir_pin:PD4              # Arduino D04
step_pin:PD7             # Arduino D07
enable_pin:!PB0          # Arduino D08
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PB4       # Arduino D11
position_endstop: 0
position_min: 0
position_max: 1
homing_speed: 1


#######################################
## tool config
#######################################
#[include ServoPenTool.cfg]
[include LaserTool.cfg]

レーザー用の設定は次の通り.Gcode M3コマンドでレーザー出力するよう設定した.

#######################################
## Laser Tool - LT-20W-A
#######################################
# NOTE
# The definition of a laser tool is the trade-off with a pen servo.
# Lasers are dangerous, so you should usually use a pen servo.
#######################################
[output_pin LASER]
pin: PB3                # 信号線(黄色)を接続したピン
pwm: True               # PWM制御を有効化
cycle_time: 0.001       # 周波数 1kHz (LT-20W-Aの推奨範囲内)
shutdown_value: 0       # 安全のため緊急停止時は出力を0にする
value: 0                # 起動時はオフ

# --- G-Code マクロ ---
# M3 S255 で最大出力、M3 S0 または M5 で停止
[gcode_macro M3]
description: レーザー出力開始 (0-255)
gcode:
    {% set S = params.S|default(0)|float %}
    SET_PIN PIN=LASER VALUE={S / 255.0}

[gcode_macro M4]
description: M3と同じ動作(互換性用)
gcode:
    M3 {rawparams}

[gcode_macro M5]
description: レーザー停止
gcode:
    SET_PIN PIN=LASER VALUE=0

[homing_override]
gcode:
    PEN_UP
    G28 X Y
axes: xyz
set_position_z: 0.0

[gcode_macro LASER_TEST]
description: レーザー出力最低
gcode:
    M3 S1

[gcode_macro LASER_STOP]
description: レーザー停止
gcode:
    M5


#######################################
## Klipper Controll
#######################################
[gcode_macro PAUSE]
description: Pause the print and homing
rename_existing: PAUSE_BASE
gcode:
    {% set laser_value = printer["output_pin LASER"].value %}
    RESPOND TYPE=echo MSG="PAUSE laser value: { printer["output_pin LASER"].value }"
    SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=laser_value VALUE={laser_value}
    SAVE_GCODE_STATE NAME=PAUSE_STATE

    PAUSE_BASE
    G90
    M3 S0
    G1 X 0.0000 Y 0.0000 F5000

[gcode_macro RESUME]
description: Resume the print from the home position
rename_existing: RESUME_BASE
variable_laser_value: 0.0
gcode:
    RESPOND TYPE=echo MSG="RESUME laser value: { printer["output_pin LASER"].value }"
    RESTORE_GCODE_STATE NAME=PAUSE_STATE
    RESUME_BASE
    {% if laser_value < 0.06%}
        M3 S{laser_value}
    {% else %}
        M3 S0
    {% endif %}

[gcode_macro CANCEL_PRINT]
description: Cancel the print and home all axes
rename_existing: CANCEL_PRINT_BASE
gcode:
    M82
    G90
    G28
    CANCEL_PRINT_BASE

レーザーカット

焦点距離調整

実際にカットする前にいくつか調整する必要がある.

まずは焦点距離の調整を行う.説明書によると焦点距離の推奨値は,彫刻で20mm,カットで50mmとなっている.個体差があると思われレンズの調整で2mmや0.5mmと書かれているのはあくまで参考と思っておいたほうが良さそう.

LT-20W-A ユーザーマニュアル

Klipperのマクロで LASER_TEST を用意している.コンソールから実行すると最小出力でレーザー照射する.焦点距離と加工する材料が一致するよう,レーザーモジュールの高さやレンズの調整を行う.

レーザー出力調整

続いてレーザー出力の調整を行う.

刻印にしろカットにしろ,加工対象の材質や色によってレーザー出力を調整する必要がある.例えば紙をカットする場合,光を吸収しやすい黒は比較的低出力でカットでき,光を反射しやすい白では少し出力を上げる必要がある.

またレーザー出力はヘッドの移動速度にも関係する.高出力が一点に長時間集中すると発火の恐れがある.移動速度を上げてレーザー出力も上げるか,移動速度を下げてレーザー出力も下げる,というような調整も必要になってくる.加工対象によっては何度か同じ軌跡を辿って少しずつカットする必要もあるかもしれない.

適当に基準となるヘッドの移動速を決めて,レーザー出力のアタリをつけていくのが良い.

なお今回利用するレーザーモジュールはレーザー光周辺を覆う光学フィルタが無い.何度でも言うけど必ず安全ゴーグルを着用して作業すること.網膜を損傷してからでは遅い.

レーザーカット

ようやくカットを行う.ここまで来れば,Gcodeの生成方法はPart5で説明した通りだし,ペンプロッタ構成の時と操作は何ら変わりないので説明省略.

ダイソーに行くと色んな色の画用紙があるので切り絵が捗る.

おわりに

レーザーモジュールは,サーボモータと同じく,PWMで制御できる.ほぼすべての構成要素はそのままに,ヘッド部分の交換だけでペンプロッタからレーザーカッターに転用することができる.

簡単だね.

ただレーザーはペンプロッタより危険を伴うので扱いには十分注意すること.


ペンプロッタのまとめページはこちら.よかったら覗いていってください.

コメント

タイトルとURLをコピーしました