前回、ソフトウェアとしてはきちんと動作している様子が確認できたので、今回は自分が基板を作りやすいように設定ファイルを変更していきます。
ESP32はWiFi接続時にアナログ入力をするには少しクセがありました。
今回はデジタル入出力だけですので問題無いと思いますが、念の為に制限されたピンが無いかを確認しておきます。
ピンの状態などはこちらのブログが詳しいです。
今回、空いているピンに「強制停止ボタン」と「停止後の再開ボタン」という役目を付けたいのですが、34以降のピンは入力のみ。且つ、プルアップ&プルダウン設定が出来ない仕様。
つまり、「34,35ピンは物理的に3.3Vにプルアップすればスイッチとして使える」ということのようです。
これらに注意して配線していきます。
ユニバーサル基板にESP32を搭載して信号を取り出しやすいようにピンの役割を変えて作った配線図がこちら。
青丸は抵抗、オレンジ丸にはコンデンサを載せる。
自分がわければ良いので配線図のお決まりなどなく結構適当。(変更の可能性充分あり)
高速で信号が変わるDIR信号のようなものは最短距離が望ましいので短めで配線。
クーラント設定には風を送るMISTと切削油を投入するFLOODがあり、今のところ必要性を感じませんが、別の機能を搭載するにしても設定ファイルを書き換えるだけで何にでも割り振れるので一応出力の準備だけしておきます。
スピンドルモーターもONとOFFの制御とPWM制御ができます。どちらか一個で良い気もするけど、同じく用途に応じて書き換えられるので一応回路には反映します。
問題は、この回路できちんと信号が出るのか?ということですが、これは実験するしか方法はありません。
上の回路に対応するよう設定ファイル「config.yaml」を書き直しました。
name: "ESP32 Dev Controller V4"
board: "ESP32 Dev Controller V4"
stepping:
engine: RMT
idle_ms: 250
dir_delay_us: 1
pulse_us: 2
disable_delay_us: 0
axes:
shared_stepper_disable_pin: gpio.18:low
x:
steps_per_mm: 800
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 25
max_travel_mm: 1000
homing:
cycle: 2
mpos_mm: 10
positive_direction: false
motor0:
limit_all_pin: gpio.5:low:pu
stepstick:
direction_pin: gpio.32
step_pin: gpio.33
motor1:
null_motor:
y:
steps_per_mm: 800
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 25
max_travel_mm: 1000
homing:
cycle: 2
mpos_mm: 10
positive_direction: false
motor0:
limit_all_pin: gpio.17:low:pu
stepstick:
direction_pin: gpio.25
step_pin: gpio.26
motor1:
null_motor:
z:
steps_per_mm: 800
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 25
max_travel_mm: 1000
homing:
cycle: 1
mpos_mm: 10
positive_direction: true
motor0:
limit_all_pin: gpio.16:low:pu
stepstick:
direction_pin: gpio.27
step_pin: gpio.14
motor1:
null_motor:
spi:
miso_pin: gpio.19
mosi_pin: gpio.22
sck_pin: gpio.21
sdcard:
cs_pin: gpio.23
card_detect_pin: NO_PIN
coolant:
flood_pin: gpio.2
mist_pin: gpio.4
control:
safety_door_pin: gpio.34:low:pu
cycle_start_pin: gpio.35:low:pu
probe:
pin: gpio.15:low:pu
PWM:
pwm_hz: 5000
output_pin: gpio.13
enable_pin: gpio.12
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
spinup_ms: 0
spindown_ms: 0
tool_num: 0
speed_map: 0=0% 10000=100%
これで34,35ピンに3.3Vへ10kΩでプルアップしたものをGNDへ落とせば緊急停止と再開が出来るはずです。いざ実験です。
うまく動きました。
それぞれのピンをGNDへ接触させると一時停止と再開をします。
本来はドアのオープンで停止する機能なので「ドアを確認してね」「ドア閉まったよ」とメッセージが出ています。
他に設定し直したピンもきちんと動作するのか確認です。配線ぐちゃー
適当なLEDを動作中にそれぞれのピンに接触させると信号が出ていることが解ります。
ステッピングモーターのDIR信号は正転・逆転だけなので点灯か消灯のみ。
STEP信号は速さに応じた信号が出るのでこのようにPWMっぽい信号になります。
どうやら狙い通りうまく動いてくれたようです。FluidNC優秀!