いんくらyochさんの日記

興味あることの備忘録

3号機のBLDCつづき

BLDCモータを搭載したプリンタ3号機であるが印刷品質が悪いため、諸々見直しを図った。
まず、エンコーダの面に対して軸が垂直になっていない可能性があるため、モータマウントを印刷し直した。
そのあと、erase_configurationで設定をクリアしてから再設定を行った。
手順としては以下の通り。

  1. キャリブレーションに必要な項目を設定
  2. モーターキャリブレーション、エンコーダオフセットキャリブレーション実施
  3. クローズドループ状態でvel_gainを調整(振動しだした値の50%)
  4. vel_integrator_gainを式で設定(0.5 * 100 * 現在値)
  5. アンチコギングキャリブレーション実施
  6. velモードで高速に回して、大きく振動しないことを確認
  7. pos_gainを上げる

設定は以下の通り。

  "config.max_regen_current": 0.0,
  "config.brake_resistance": 2.0,
  "config.dc_bus_undervoltage_trip_level": 9.5,
  "config.dc_bus_overvoltage_trip_level": 16.0,
  "config.dc_bus_overvoltage_ramp_start": 14.0,
  "config.dc_bus_overvoltage_ramp_end": 16.0,
  "config.dc_max_positive_current": 20.0,
  "config.dc_max_negative_current": -0.009999999776482582,
  "axis0.config.startup_encoder_offset_calibration": true,
  "axis0.config.startup_closed_loop_control": true,
  "axis0.config.enable_step_dir": true,
  "axis0.config.turns_per_step": 0.00015619999612681568,
  "axis0.config.calibration_lockin.current": 5.0,
  "axis0.config.calibration_lockin.vel": 2.0,
  "axis0.motor.config.pre_calibrated": true,
  "axis0.motor.config.pole_pairs": 7,
  "axis0.motor.config.calibration_current": 10.0,
  "axis0.motor.config.resistance_calib_max_voltage": 2.0,
  "axis0.motor.config.torque_constant": 0.01046835444867611,
  "axis0.motor.config.current_lim": 20.0,
  "axis0.motor.config.requested_current_range": 20.0,
  "axis0.controller.config.control_mode": 3,
  "axis0.controller.config.input_mode": 3,
  "axis0.controller.config.pos_gain": 50.0,
  "axis0.controller.config.vel_gain": 0.035208333283662796,
  "axis0.controller.config.vel_integrator_gain": 1.7604166269302368,
  "axis0.controller.config.vel_limit": 33.29999923706055,
  "axis0.controller.config.input_filter_bandwidth": 200.0,
  "axis0.controller.config.anticogging.pre_calibrated": true,
  "axis0.controller.config.anticogging.anticogging_enabled": true,
  "axis0.encoder.config.mode": 257,
  "axis0.encoder.config.abs_spi_cs_gpio_pin": 7,
  "axis0.encoder.config.cpr": 16384,
  "axis0.encoder.config.pre_calibrated": true,

テスト印刷の結果

左からステッピングモータで印刷、circular_setpoints = Trueで印刷、Falseにしてklipperのアクセラレーションを順次下げて印刷、最後がinput_modeをINPUT_MODE_PASSTHROUGHからINPUT_MODE_POS_FILTERに変更して印刷である。
Z文字の縁がなまっているのが解消されて、ほぼステッパと同じ品質になった。

BLDCモータを3号機に付けてみる

MKSのXDriveで組んだBLDCモータをcoreXYの3号機に付けてみた。

www.youtube.com
ギア比3:1のギアボックスをPLAで印刷し、モータはSTEP/DIRモードで動かしている。
結果は印刷はできるし非常に静音なのだが、トルクに差があるためなのかX軸を左右に振ると、Y軸が前後に0.2mm程度振れるため造形品質がよろしくない。
モーターのチューニングを続けているが、パラメータも多く調整に難儀している。

レーザーチューブ交換

2017年から使用していたCO2レーザー管の電極の付け直しをしていた際に、ガラス部分を割ってしまって使用不能となったので交換した。

電極を付け直す前にアクリルのカットをしてたのだが、20mA流れてるのにまったく切れない状態だったので、レーザー管の劣化か電極の接触不良かを切り分ける作業をしているところだった。
交換後は切れるようにはなったのだが、20%の出力指定で電流が20mAと流れ過ぎなため、LaserWeb4のGコードを見たところS200となっていた。
grbl-LPCの設定は0~1なので、どこかの時点から常時100%の出力でカットしていたようで、かつ電源は50Wのものなので劣化がかなり早まったようである。
交換済みのレーザー管はZnSeが使われているので容易に廃棄もできず、処分先を探している。