いんくらyochさんの日記

興味あることの忘備録

closed-loopコントローラSERVO42Cを試す

DIY CO2レーザー加工機ミネベアの17PM-K302-10VLAの中古2個を24VのcoreXYで動かしているが、1/8ステップ駆動でもフィードレートは15000が頭打ちであった。
モータートルクを増すべくオリエンタルモータのPKP246U12Aを入手したので、高速駆動時の脱調予防としてMKSのSERVO42C(青)も導入することにした。
組み込みに際し、コントローラがMKS-SBASEであるため、あらかじめEN/STEP/DIRの外部出力ピンが基板に立っているので、これとエンドストップの3.3VをSERVO42C基板へ引っ張ることで接続した。

設定が難解で説明に無いパラメータを設定することで、24000までフィードレートを上げても脱調することなく動作するようになった。
[設定]

2.MotType	1.8
3.Mode		vFOC
5.MStep		8
6.En		L
7.Dir 		CW
8.AutoSDD	Disable
9.Protect 	Disable
10.MPlayer	Disable
18.ACC  	  583

MPlayerをDisableするとTMC2280で言うところのスプレッドサイクル動作となるが、モータ動作音は非常に静かである。
github.com

FluidNCを試す

Grbl_Esp32をメンテナンスしようとgithubを覗いたところ、後継バージョンとしてFluidNCがリリースされたことを知る。
試しにESP32-WROOM-32Dにスタンドアロンで導入してみた。

ESP32へのインストールは簡単であり、シェルを使ってデバイスを探してフラッシュしてくれる。
BT使用かWifi使用かなどでインストーラは分かれている。

$ ./erase.sh
$ ./install-wifi.sh
esptool.py --chip esp32 --baud 230400 dump_mem 0x3ff5a018 4 SecurityFuses.bin
esptool.py v3.1
Serial port /dev/cu.usbserial-2230
Connecting....
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 230400
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00172fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 17120 bytes to 11841...
Wrote 17120 bytes (11841 compressed) at 0x00001000 in 0.7 seconds (effective 188.9 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 801.6 kbit/s)...
Hash of data verified.
Compressed 1450384 bytes to 883446...
Wrote 1450384 bytes (883446 compressed) at 0x00010000 in 39.7 seconds (effective 292.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 129...
Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.1 seconds (effective 307.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
Starting fluidterm

Wifi使用でインストールするとFluidNCのSSIDが現れ、振られたIPにブラウザでアクセスするとWebUIが表示された。
最初の接続時はWebUIのファイルがインストールされていないのでindex.html.gzファイルを選択して、uploadする必要がある。

マシンの設定は別途yamlファイルを作成して、WebUIよりアップロードするが、直近のGrbl_Esp32を使っていた場合、machine.hファイルをyamlに変換してくれるサービスも利用できる。
【移行例】

name: "BlueLaser Engarver"
board: "ESP32-DevKitC"

stepping:
  engine: RMT
  idle_ms: 250
  dir_delay_us: 0
  pulse_us: 2
  disable_delay_us: 0

axes:
  shared_stepper_disable_pin: gpio.13

  x:
    steps_per_mm: 42.327
    max_rate_mm_per_min: 60000.000
    acceleration_mm_per_sec2: 9000.000
    max_travel_mm: 500
    soft_limits: true

    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 500
      seek_mm_per_min: 4000.000
      feed_mm_per_min: 500.000
      settle_ms: 250
      seek_scaler: 1.2
      feed_scaler: 1.2

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: gpio.2:pu
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.500

      stepstick:
        direction_pin: gpio.26
        step_pin: gpio.12

    motor1:
      null_motor:

  y:
    steps_per_mm: 44.444
    max_rate_mm_per_min: 20000.000
    acceleration_mm_per_sec2: 150.000
    max_travel_mm: 450
    soft_limits: true

    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 450
      seek_mm_per_min: 4000.000
      feed_mm_per_min: 500.000
      settle_ms: 250
      seek_scaler: 1.2
      feed_scaler: 1.2

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: gpio.4:pu
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.500

      stepstick:
        direction_pin: gpio.25:low
        step_pin: gpio.14

    motor1:
      null_motor:

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

coolant:
  mist_pin: gpio.16:low

probe:
  pin: NO_PIN

sdcard:
  cs_pin: gpio.5
  card_detect_pin: NO_PIN

control:
  safety_door_pin: gpio.35:low
  reset_pin: gpio.34:low
  feed_hold_pin: gpio.36:low
  cycle_start_pin: gpio.39:low

Laser:
  pwm_hz: 20000
  output_pin: gpio.17
  enable_pin: gpio.22
  disable_with_s0: false
  s0_with_disable: true
  tool_num: 100
  speed_map: 0=0.000% 255=100.000%

github.com
wiki.fluidnc.com

レーザー加工機改修

度々ズレる光軸調整を簡単にするために、レーザー管の支持方法を3点式からThingiverseで見つけたものに取り替えた。

ThingiverseのものはK40用にモデリングされているため、meshmixierを使って足を長く修正し印刷した。
新しい支持方法ではレーザー管をYZ方向にノブで動かせるほか、移動距離も測りやすくなったことで、光軸調整に手間が掛からなくなった。
www.thingiverse.com