温度センサー付きステッピングモータードライバ tmc2240
こんにちは ふうです。
今回はステッピングモーターのドライバをtmc2209からtmc2240に変更してみました。
最初からtmc2240にしておけばよかったんですけどね、BTT のMCU Octopus Proについてきたのがtmc2209だったんです。
購入時は何を選べば良いのかよくわからずとりあえずtmc2209が8個付いているものを買いました。
今MCUを買うならOctopus Pro V1.1 (H723)とTMC5160 2個 TMC2209 5個のセットを買うのが良いと思います。H723という型番がバージョンなので気を付けて購入してください。これがよく分からずひとつ前のv1.01(F429)を買ってしまいました。BTTのストアも何件かAliexpressに出店していてややこしいんですよね。ページ下部にリンクあります。
Octopus Pro F446(V1.0) CAN通信に癖?があるらしい Octopus Pro F429(V1.0.1) よく分からずにこれを買ってしまった Octopus Pro H723(V1.2) CAN通信用のポートが変わった
2024年3月現在ではtmc2209は高速機では割とベーシックでお手軽なもの、tmc5160は高級品で電源の48v化をするならtmc5160を、tmc2240は2023年に出た両者の中間的なものでtmc5160と同じくSPI通信という方式(tmc2209はuart)でモータードライバーとデータのやり取りができるようになっています。
あとはドライバにサーミスタが内蔵されており温度がわかるようになります、ヒートシンクの温度測ってもドライバ本体の温度ではないですからね。
z軸のモーターはそんなに高速で動くことはないのでxyの2つ分だけ購入すれば大丈夫です。
変えたきっかけ
いっとき高速プリント中にmcuが落ちることが結構あり、原因は複数あったのでしょうがサーミスタ付きのデジタルテスターでtmc2209のヒートシンクの温度を測ったところ60度を超えたあたりでなんどか落ちる事がありました。
SnakeOil-XYの作者であるChipさんには24vのままでもtmc5160に変えたほうが良いか(その時はtmc2240を知らなかった)確認したことがあるのですが、そんなに変わらないと思うと聞いていたし、tmc5160は1つ5千円ほどと結構値段もするので変えるつもりはなかったのですが、tmc2240を知り温度も測れるならと購入してみました、この辺りのパーツ類はBIGTREETECHで揃えました。
tmc2240へ変えてみて
tmc2240はあまりコンフィグの情報がなかったのですが、調べたところ同じSPI通信を使うtmc5160と同じで大丈夫なようでSnakeOil-XYにもともと入っている設定を流用できました。
ジャンパーピンはマニュアルを見て設定した方が良いとは思いますが、左がtmc2209用で右がtmc2240用の設定です。マニュアルの指示通りジャンパーピンを1つだけにします。
参考に載せておきます。
# Driver0
[stepper_x]
step_pin: PF13
dir_pin: PF12
enable_pin: !PF14
microsteps: 16
rotation_distance: 40
full_steps_per_rotation:200
#endstop_pin: ^PG6
endstop_pin: ^EBBCan:PB6
position_endstop: 250
position_max: 250
position_min : -5
homing_speed: 50
[tmc2240 stepper_x]
## Soft SPI
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
spi_software_sclk_pin: PA5
cs_pin: PC4
interpolate: True
run_current: 1.000
hold_current: 0.500
stealthchop_threshold: 0
# Driver1
[stepper_y]
step_pin: PG0
dir_pin: PG1
enable_pin: !PF15
microsteps: 16
rotation_distance: 40
full_steps_per_rotation:200
endstop_pin: ^PG9
position_endstop: 250
position_max: 250
position_min : -5
homing_speed: 50
[tmc2240 stepper_y]
## Soft SPI
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
spi_software_sclk_pin: PA5
cs_pin: PD11
interpolate: True
run_current: 1.000
hold_current: 0.500
stealthchop_threshold: 0
性能的にどう変わったのかはよくわからないですが、温度がわかると安心できていいですね。
とはいえちょっと熱すぎるようで激しく動いているときは90度超えてました。やっぱりコレが原因で落ちてた気がしますね、、、
流石にファンで冷やす必要があるようなので対策を考えてみます。
最大加速度 最大速度のテスト
こちらのマクロを使用してまずは加速度の最大値を見極めてコンフィグのmax_accellをその最大値に変更してから最大速度のテストをします。
マクロの使用は簡単でダウンロードしたマクロをMainsail上でアップロードしprinter.cfgで[include TEST_SPEED.cfg]と書き込めば準備できるので、Console上で「TEST_SPEED ACCEL=5000 ITERATIONS=2」とすれば加速度5000 繰り返し2回でテストできます。
その際、繰り返しの回数は5回ほどにしておいて徐々に回数を上げていき、脱調が発生したら少し落として繰り返しを50回でテストをして問題がないことを確認し、printer.cfgの「max_accel」に問題なかった数値を入れます、こちらでは30000で十分だと思ったので「max_accel: 30000」としました。
脱調はモーターから変な音がするので一発でおかしいとわかると思います。
次はmax_velocirty側のテストなのでConsoleに「TEST_SPEED SPEED=200 ITERATIONS=5」として最大速度200繰り返し回数5でテストします。
ちなみにマクロの配布元サイトでは、加速度とプリント領域の兼ね合いで出せる速度が決まるためPrusaのサイトで理論上の最大速度を調べるようにとあります。
加速と減速するにも移動はしているわけで加減速が遅ければトップスピードでいられる距離も相対的に短くなるためです。
そんなこんなでテストを繰り返し、最大速度を400「max_velocity: 400」としました。
実際のプリントでは別の要因も絡んでくるのである程度余裕を見る必要があるようです、うちのSnakeOil-XYでは加速度30000でも特に脱調はしませんでしたが加速度35000速度が400超えたあたりでは怪しかったです。
最初はかなり脱調が発生したんですが、ドライバーへ送る電圧が低かったのとプーリーを保持するネジを締めすぎて動きが悪くなっているというオチでした。
あとは180サイズと比べて250サイズのフレームは3割ほど重いらしくそれも負荷になっているとのことでした。
この対策としては通常はX軸には1515フレームを使うのですが、AliexpressにあるMellowストアでSnakeOil-XY用カーボンフレームが売っていたのでこれも購入しました。最後の一個とのことで多分再販はないだろうと思い買ってしまいました。
あとついでにせっかくなのでそれに乗せるリニアガイドもAliexpressのBrurollストアで購入です。320mmのものは売っていなかったのでチャットで希望を伝えたところ300mmと殆ど変わらない値段で作ってもらえることになりました。これについてはまた後日。
tmc2240の冷却
温度計を見ていたところタイミングによっては90℃を超えている時が多々あったので、Octopus Proのマウンターに4010ファンを取り付けられるようにしました。
Octopus Proのマウンターにニョキっと枝を生やしてそこに両側にインサートナットをつけた柱を追加する形にしました。
柱は横向きでプリントしたかったのと、ボードを避けるために下側を平らにし、長めのM3ボルドで両側から止めるのでまぁまぁ折れにくいと思います。
空いているファン用のポートに端子を差し込み(今回は12Vファン)ファンを回したところ50℃位で落ち着いてくれるようになったので様子見てみます。
[controller_fan stepper_fan]
pin: PE5
max_power: 1.0 #最大パワーの定義
kick_start_time: 0.5 #起動時に最大パワーでファンを回す秒数
idle_timeout:60 #アイドルタイムアウトまでの秒数
idle_speed: 0.4 #アイドル時のパワー
fan_speed: 0.6 #通常起動時のパワー
stepper: stepper_x #連動させるステッパーモーターの指定
controller_fanとして書き込み、stepper_xと連動してON OFFするように設定しておきました。
ほんとはモータードライバーの温度に連動できると良かったんですけどね、思い通り(通常時はfan_speed 0.4で回してstepper_xが80℃超えたら0.8等)にするにはmacroを書くしかなさそうでした。
別の方法としてはPRINT_STARTやPRINT_ENDの中にON OFF書き込んでも良いと思います。
これで無事にTMC2240への換装が終わり温度も落ち着いてくれました、あとはカーボンフレーム用のリニアガイドが届けばまたXキャリッジの組み替えです、、、。
コメント