---SPINDLEのPWM制御 (その2) (8)

ーーMACH パラレルポートでのPIDコントロールーー
 パラレルポートでの,PIDコントロールについて,調べました。
 Smooth Stepper では,うまくいかなかったのですが,
 パラレルポートでは,うまくいきました。
  kernel Speed 100Hz
  Moter Control
    Use Spindle Motor Output と PWM Controlにチェック
  Special Function
    Closed Loop Spindle Control にチェック
    P→1.6 I→1.0 D→1.0
  PWMBase Freq 100
  Index 入力 ポート 1の11ピン
  PWM 出力 ポート 1の14ピン
 の設定で試してみました。
 入力した回転数に,MACHの方で,追従していく様子が確認
 できました。
 MACHは,やはり優れ物です。
 PIDの設定を最適化すれば,応答速度等,よくなるような気が
 します。
 最初デフォルトの
   P→0.25 I→1.0 D→0.3
 でやりましたが,入力回転数に追従する時間が多少かかり
 ました。Pを1.6に増やしたら,かなり追従までの時間が
 短くなりました。一端上がって,下がります。
 念のため外部の回転計でも回転数を計測しましたが,
 MACHの表示とほぼ同じでした。
 パラレルポートでは,確認できましたが,Smooth Stepperで
 実施するには,なにか設定があるのでしょうかね。

 

 私が確かめたのは,写真のような実験環境です。

 

 パラレルポートにジェンダーコネクターをつなぎ,ジェンダー
 コネクターから引き出した線に各信号線を結線しであります。
 今回使ったPWMのコントローラーは,◯華製のもので,
 PIDコントロールしないと,MACHからのPWM信号よりかなり
 高めの回転をします。
    2019年6月18日の記事
 で確認した,IRF740等のFETを使うと,きっと,応答速度
 もよくなるのかと思います。

---SPINDLEのPWM制御 (その2) (7)

 いくつかのFETを使って,PWMで,モーターのコントロール
 をしてみました。
 4種類ほどですが,だいたい似たような傾向でしたが,
 一つだけ範囲の広いものがありました。
 IRF740というFETで,◯華製3040というCNCに使われている
 ものです。
 PWMの範囲が広いので,コントロールするには,やりやすい
 のではないかと思いますが,他のものよりも発熱量が多い
 ような気がします。

 

 ただ,今回は4つのFET全部同じ回路でテストしました。
 厳密に言えばきっと,使ってる抵抗等もFETの特性に応じた物
 だと結果が違う物になったかもですね。
 実家においてあったPCをもってきましたので,パラレルポート
 での,PIDのコントロールについて,調べてみようかと思います。
 過日SS(スムーズステッパー)の本家のフォーラムを覗いて
 みましたが,印象としてESS(イーサネットのSS)とMACH4
 での話題が多くなってるような気がしました。

---SPINDLEのPWM制御 (その2) (6)

 いろいろやってますが,MACHからの信号でDCモーターを
 回す,回したモーターの回転数をMACH上に表示,の二つ
 は,どうにか達成することができました。
 ただ,MACHに入力した回転数と実際の回転数にかなりの
 開きがあります。
 MACHからのPWM信号のDUTY比を調べたところ,入力
 の回転数とほぼ比例していることがわかりました。
 そのPWM信号を入れている◯華製のコントローラーを調べて
 みると,入力のPWM信号のDUTY比と回転数は,比例関係
 にはなっていないようでした。
 よくわからないのですが,これは,もしかして,回路に使われて
 いるFETの特性に関係あるのかなと邪推しました。
 そこで,先達のHPを参考に,別なFETを使って,ドライバー
 を作ってみることにしました。
 どうなることやら・・・・・・・・・。
 ちなみに,◯華製のコントローラーと入力DUTY比の関係は,
 およそ,最高回転数9000RPMのDCモーターで,
 次のようでした。
  入力DUTY比   RPM   予想されるRPM
  4%     1283       360(9000×0.04)
  6%     2256       540  ・・
  7%     3049       630  ・・
 11%     4061       990  ・・
 14%     5003       ・・   ・・
 19%     6125       ・・
 25%     7000
 36%     8015
 69%     9000
 これでは,入力した回転数と離れてしまうのは,当たりまえ
 ですね。

---SPINDLEのPWM制御 (その2) (5)

 以前作っておいたPWMの基本周波数変換のプログラム
 XC8 V1.35 用に書き換えました。
 PWMの発生器で動作も確認しましたが,大丈夫なようで

 す。元になった諸兄は,変換後の周波数は,少なくとも
 20kHz必要だと書いていましたが,私は,
     100Hz→→10KHz
 にしてみました。まだ,基板に組んでないのですが,
 実験基板で,実際のコントロールがどうなるか確認して
 みたいと思います。参考までに,下記がプログラムです。
  main.c
 例によって,コメント,ゴミ等が沢山あります。

---SPINDLEのPWM制御 (その2) (4)

 スピンドルをPWMでコントロールすべく,いろいろやって
 ました。
 MACH上に,回転数数を表示するのに,以前,
   EESX911R
 というオムロンのフォトインタラプタ―を使いましたが
 〇月にある、
  CNZ1023
 を使おうと思いました。使えれば、CNZ1023の方が
 一個20円と格安なので、コスパ最高なのですが。
 結論から言うと、オシロでは、きれいな波形が確認で
 きるのですが、残念ながら、私の力では、MACHに
 取り込めませんでした。
 諸兄のHPを参考に、
 プルダウンの抵抗やらいろいろ変化させてみましたが、
 だめでした。もしかしたら、前回のように、フォトカプラー
 等で、処理しないとだめなんでしょうかね。
 
 ということで、前回使った
  EESX911R
 で、回転数を取り込んで表示さて、入力した数値との
 比較を行いました。
 結果、クローズドループのコントロールになるかなと
 思いましたが、だめでした。
 結果は次のようでした。

   回転数入力 ポート2 10番ピン
   PWM出力  ポート2 14番ピン
   カーネル       2500khz
   PWM基本周蓮   1000Hz
   MACH SRO 20パーセント
     (これが一番数値が近かった)
   入力     表示 RPM
   1000      1339
   2000      2339
   3000      3178
   4000      3932
   5000      4623
   6000      5250
   7000      5778
   8000      6218
   9000      6222

 MACHの、フィードバック、クローズをコントロール、の
 項目にチェックをいれても大きな差はありませんでした。
 ただ、またまた未知数なのですが、P、I、D の設定の
 項目もあり、ここはデフォでしたので、もしかして、設定
 によっては、うまくいくのかな、と思ったりもしました。
 ありきたりの実験の様子です。

 

 MACHからのPWMの基本周波数は変換してませんので、
 後日、変換した後どうなるか、見てみたいと思います。
 なかなか思うようにできないですね。

---SPINDLEのPWM制御 (その2) (3)

 MACHからのPWM制御で,PWMコントローラを通して,
 モーターを回してみましたが,入力値と,回転数がかなり
 離れています。
 MACHの問題なのか,PWMのコントローラーの問題か,
 それとも,別の問題なのか分からないので,
 PWM発生器から,DUTY比を変えて,回転数との関係
 を見てみました。

 

 PWMの基本周波数は,2khzにしました。
 モーターの最高回転数は,9400rpmです。
 
   DUTY比       回転数
   10%        3466rpm
   20%        5700rpm
   30%        7058rpm
   40%        7800rpm
   50%        8200rpm
   60%        8600rpm
   70%        8800rpm
   80%        9000rpm
   90%        9400rpm
  100%        回転せず

 PWMのDUTY比と回転数は,比例しないようです。
 正確なコントロールをするには,やはりループバック
 でコントロールする必要があるのでしょうかね。
 回転数をMACHに入れて,ループバックでのコントロール
 をしてみたいと思います。

---SPINDLEのPWM制御 (その2) (2)---

 前回の記事書いたのもう3年もまえなんですねえ。
 やるつもりでしばらく(ずっと)中断してました。
 機会があって,またその続きをしました。
 今回は,実際のスピンドルモーターをMACHから,
 コントロールしてみました。といっても,私の実験環境
 でですけど。

 

 次の環境で確認しました。

 MACH3→Smooth Stepper→◯ECさん基盤
          ↓        ↓ 
      スピンドルモーター  ステッピングモーター
 MACH3からのPWM信号は,
        ◯ECさん基盤→汎用出力 14番
        Smooth Stepper→ポート2の 1,14,17

 のそれぞれで確認でき,写真赤丸の
 PWMコントローラーを介してモーターをコントロールで
 きました。
 という訳で,今回は,MACHへの数値の入力と実際の
 回転数について調べました。

 kenerl Speed 25000Hz
 Pwm Base Freq. 1000
 Pully Selection Min Speed 0
       Max Speed 10000
       Ratio 1

 の設定です。ちなみに,モーターをPWMコントローラー
 を介さないで回すと,9949rpmで,約10000rpm
 位ですね。

  入力数値         実際の回転数
     500           2488
    1000           4300
    2000           6540
    3000           7668
    4000           8254
    5000           8610
    6000           8813
    7000           8997
    8000           9105
    9000           9200
   10000           回転せず

   小さい数字の入力だと
     100→約1000
     200→約2000
   で入力のほぼ10倍になってました。
   回転数をMachにフィードバックしていませんので,
   フィードバックするように
     Use Spindle FeedBack in Sync Mode
   チェックを入れるともっと正確になるんでしょうかね。
   諸兄のHPにあった,基本周波数と分解能の問題
   のような気もしますが。
   多分,基本周波数を上げて,分解能をあげると
 
   もっと細かい制御ができるのかなと思います。
   後日,基本周波数を変更して,確かめてみようか
   と思います。 

---MACHによる回転数表示(2)---

 パルスジェネレーターの信号をMACHに入れて見ました。
 パルスジェネレーターのスイッチをON,OFFしたときだけ,

 

 赤枠の部分の数値の変化がありました。
 一度変化すると,その後変化がなくなりますので,多分,
 パルスジェネレターの設定のせいかな?と思います。
 それで,今日は,フォットインターラプタをつないで,MACH
 に入力してみました。
 紙をインターラプタに出し入れしてみると,それにつれて,
 黄色枠の数値が変化しました。

 

 やはり,考え方としては,いいようです。
 円盤を作って,それにスリットを入れて,実際の回転数
 を表示させてみたいと思います。
 作った円盤をドライバードリルに取り付けます。

 

 手持ちでインタラプターをセットして,回転させると,

 

 回転数を表示することができました。
 あれこれ見ていると,パルスの入力設定に関係ありそうな
 項目がありました。
 Usb SmootStepper v1.7fe Config の設定で,
 Spindle IndexPrescaleの項目です。

 

 この数値が,1回転あたりのパルスの数の設定のようです。
 写真のように10に設定したところ,タコメーターで測定した
 数値の1/10になりましたので,あってると思います。
 数値が安定しないのは,もしかして,フォトインタラプタとMACH
 の間にフォトカプラーを入れてますので,このカプラーの応答
 速度の関係かもしれません。

---MACHによる回転数表示(1)---

 以前,ロックヒルさんの掲示板だったでしょうか,スピンドルの
 回転数をMACH上に表示することに関する書き込みがあった
 ように思います。他の諸兄の掲示板だったかもしれませんが,
 ちょっと不確かです。
 それによれば,MACHで回転数を表示するには,確か「index」
 に信号を入力すればいいような書き込みだったと思います。

 

 この「index」にパルスを入力すると,

 

 ここに表示されるのでしょうか。
 手元にある○月のファンクションジェネレーターでパルスを
 生成して,簡単なインターフェースを介して,入力してみた
 いと思います。

 

 このジェネレーターは,矩形波だと0Hz~10KHzまでの
 波形を生成できます。
 オムロンのパルスメーターだと,1回転に必要なパルスの
 回数を設定できますが,MACHでは,ざっと見たところそ
 れがないようなので,たぶん,1パルス1回転の表示になる
 ような気がします。
 たどすると,このジェネレータで,0~10000rpmの表示に
  (訂正 勘違いでした。RPMですので,0~600000rpmですね。)

 なるはずです。さて,どうなるか・・・・・・・。
 追記 10000rpm程度まで,表示できればいいので,
     パルスジェネレーターで生成するHzは,
     10000÷60=166.6
     ですね。
 インターフェースは,パルスジェネレーターとMACH(PC)の間
 にフォットカプラーを入れて,MACHでindexに設定した端子
 をアクティブローの設定で,グランドに落とすだけなので,
 フォットカプラーと抵抗だけです。

---SPINDLEのPWM制御 (その2) (1)---

 ちょっと前に,諸兄のHPを参考にPWMの基本周波数変更の
 記事を書きました。
 作ったプログラムを使って実際の運用はしていないのですが,
 運用すべく次の段階に移ります。
 今回は,市販(アリエクスプレス)のPWM制御の基盤を使って
 みようと思います。

 

 何日か前に書き留めで届きました。これにはちょっとびっくり
 です。通常の郵便で届くかと思いましたが,これだと,間違い
 も少ないでしょうね。
 という訳で,今日,ちょっと調べて見ました。
 以前にSABLEの静音スピンドルを購入しましたが,これについ
 ていた24Vの電源を使って,PWMの出力波形を見てみました。
 最初,オシロに出力波形を出してみて,びっくり。

 

 ノイズだらけ?です。本体が壊れているのかとおもいしたが,
 念のために,電源を変えてみました。すると,

 

 きれいな波形です。波形が波形が汚かったのは,電源のせい
 でした。こんなに違いがあるんですね。
 ちなみに,ノイズがひどかったのが,

 

 の電源です。
 ちなみに,PWMの制御基板も○華製です。
 波形を見てみると,基本周波数は,約10khzで,PWM
 は0%~100%まで,調節可能なようです。
 次は,MACHからの信号で,制御してみようと思います。
 ちなみに,波形がきれいだったのは,

 

 の電源で,コーセルのメーカーです。
 波形がきたなかったのは,
 たぶん,○華製でしょうかね。