回転数の制御
産業用スピンドルの特徴の1つである、外部入力によるスピンドルの回転数制御を試してみました。
回転数の制御方法は大きく分けて2つ
- VI1へのアナログ電圧入力
- RS-485 Modbusを使った通信
VI1へのアナログ電圧入力
入力電圧範囲は本体にあるディップスイッチにて変更できるようです。
すべて下に下がっているときは0-5V、1と2が上で3と4が下のときは0-10Vとなるようです。
デフォルトはおそらく0-10V設定になっていると思いますが、使うときは要確認。
パラメータのP7.08=3とするとアナログ入力を受けつけるようになります。パネルのツマミは無効化されます。
VI1とGNDに安定化電源を繋いで動作確認してみました。
結果は以下。当然ですがほぼ線形変化でした。
10Vは手が滑って超えてしまうと危険かもという判断で、9.5Vまでで測定しています。
理論的には40Hz/V=2400rpm/Vであってほしいので、数ヘルツの誤差はありますが、個人的には大体きてるしそんなものかなと思います。
わりと適当な配線で実験したので、ケーブル側で電圧降下が起きていて周波数が下がった可能性はあります。
電圧(V) | 周波数(Hz) | 推定回転数(rpm) |
---|---|---|
1.00 | 37.7 | 2262 |
2.00 | 77.8 | 4668 |
2.99 | 116.7 | 7002 |
4.00 | 156.9 | 9414 |
4.99 | 196.6 | 11796 |
6.00 | 236.3 | 14178 |
6.99 | 274.8 | 16488 |
8.01 | 315.3 | 18918 |
9.01 | 353.9 | 21234 |
9.51 | 375.3 | 22518 |
回転開始は手動でRUNボタンを押しています。
今回は設定していませんが、P00.01を編集すると外部端子(FWD、REV端子)でスピンドルの開始停止を制御可能となります。
Duetで制御
公式参考:
PWMをアナログ電圧0-10Vに変換するモジュールを用意して以下のように配線
VFDのパラメータを
P00.01=0
VFDのRUNボタンで回転開始設定
P07.08=3
VI1の値で回転数制御設定
に設定。
Duet側にはconfigに以下の設定を追加
M950 R0 C"vfd" L24000 ;VFDピン、24000RPMのスピンドル0定義
M563 P0 S"VFD" R0 ;スピンドル0をツールとして登録
Duet側にスピンドルが登録されるとWEBUIにスピンドル操作のパネルが出てきて制御できるようになります。
実際に回転数を指定してスピンドルを回転させてみました。
そのときのWEBUI上の指定値に対するVFDの周波数の結果を載せます。
DWC上設定速度 | VFD表示周波数 |
---|---|
0 | 0 |
4000 | 69.1 |
8000 | 133.4 |
12000 | 197.4 |
24000 | 378.9 |
概ね線形変化。ただし特に調整もしない状態だと上限の400Hzには達しませんでした。
おそらく24000rpm指定して、実際には22500rpm~23000rpmあたりが出ているのかと思います。
スピンドルを回転させる前はVFD表示は数ヘルツ程度値が前後していましたが、実際にスピンドルを回し始めると値は安定しました。
変換基板上のツマミ(ポテンショメータ)を調整すると出力が調整できたので、12000RPM指定時にVFD上で200Hzとなるようにしましたが、24000RPMを指定するとVFDでは380Hz程度だったので、スピンドル定義の最大回転数を23,000くらいに落として登録して実際の回転数に合わせて登録しても良いかもしれません。
CNCxPRO v5で制御
CNC xPRO v5はTOOLHEADの部分に0-10Vの端子が出ているので使えるはず。
(Front_Panel · Spark-Concepts/xPro-V5 Wiki · GitHub から引用)
試したら追記
RS485 Modbus通信
2線式のRS485のUSBモジュールが手元にあったので、試してみました。
インバーターのいくつかパラメータを変更しました。
P00.01 = 3 (モーターの制御:RS485 Modbus設定)
P03.00 = 3 (RS485の通信速度 繋がり易くするため遅め設定 9600bps)
P03.01 = 1 (アドレス。デフォ10ですが、分かりやすくするため1に変更)
P07.08 = 5 (インバーターの周波数変更をModbusでするように変更)
RS485の端子は緑の端子台の上にあります。XHコネクター3PでB,A,COMがでています。
インバーターのABとUSBのモジュールのABを接続しました。
終端抵抗は必要かと思いましたが、入れるとうまく動作しなかったので、どちらも終端抵抗はすでに入っていたのかもしれません。あるいはたまたま動作しただけかもしれません。
今回はテストとして直接Modbusの指令値を送って周波数を指定値にしたり、回転・停止ができることを確認しました。
動作確認に使ったソフト:
https://www.fa.hdl.co.jp/jp/html/app/Modbus_Tool/index.html
手動で設定した周波数の設定値の読み取り(パラメータ07.08=0のとき)
Modbusでの周波数の設定および回転の開始停止
制御できることは確認できましたが、
ぶっちゃけ、上記のように直接Modbusのコマンドを打つのは非効率なので基板側がRS485 Modbusに対応していなければ使う必要はないかと思います。
アナログの値ではないので明確に値を指定できるのがメリットだと思いますが、通信のケーブルにノイズが載って読み込めなくなると元も子もないので、ケーブル作りは注意が必要かも。
CNCxPRO v5で制御
CNC xPRO v5にはRS485用の端子がでているので使えるはず。
ただしwikiの説明はHuanyang VFDになっているので、YL620では使えないかも。FluidNCのwikiにはYL620の記載があるので、FluidNCを入れた状態でYL620用設定にすれば使えそう。
(Front_Panel · Spark-Concepts/xPro-V5 Wiki · GitHub から引用)
試したら追記する。
Duetで制御
残念ながらRepRapFirmware3.5時点では対応していない。対応予定ではあるらしいがいつになるかは不明
追記:3.6で追加される可能性あり