---SPINDLEのPWM制御 (基本周波数の変換) (1)---

 諸兄の作ったプログラムを、穴の開くほどながめていました。
 タイマー0、タイマー1、タイマー2、外部割り込みを使ってます。
 一部、数値の意味の分からないところもありますが、同じもの
 が時間をかければできそうな気がしました。
 ちなみに、それぞれの割り込みは、
  タイマー0・・・・・・MACHからのPWM信号の有無の検出
             出力用PWMの初期設定
  タイマー1・・・・・・マニュアルでのLCDとLEDの点滅
  タイマー2・・・・・・MACHからのPWM信号のHとLの時間
             の計測
  外部割り込み・・・PWMの一周期の検出とDUTY比の計算
             PWM信号の有無の検出(追記)
 をしてるようです。
 分からなかったのが、タイマー2がPWMの信号も生成して
 るはずですが、割り込みにも使われているので、ここがわ
 りませんでした。
 PWMの生成と一緒にタイマー2の割り込みも実行できる
 ようで、やっと、その資料も見つけました。
 ちょっと、離れると、細かい設定の仕方を忘れてしまいます。
 諸兄のCコンパイラーは、CCSのようで、私が使っているのは、
 無料のHI-TECH-Cなので、割り込みや細かい記述(文法)が
 違います。また、いろいろあさりながら、楽しみます。

---SPINDLEのPWM制御---

 sable2015のスピンドルに、ブラシレスモーター(模型用)や
 ちょっと前に発売になった専用の20VのDCモーターを使った
 りしてます。
 どちらにも一長一短があるのですが、DCモーターの方が静か
 なので、こちらを使おうかと思いました。
 ブラシレスモーターは、既存のインターフェースを使って、速度
 制御したことがあるのですが、DCモーターということで、
 秋月の「PWM(スイッチング方式)DCモーター速度可変キット」
 を使って、マニュアル操作とMACHからの制御の切り替えができ
 ないかと、思いつきました。
 マニュアルは、簡単に接続すればいいのですが、MACHから
 となると、一工夫が必要なようです。
 MACHからのPWMで直接モーターを制御するには、
 問題があると諸兄のHPにはあります。
 「周波数の設定は任意に変えられる。 高くも設定できるのだが、
 階調が低下するので実用的ではない。
 例えば、カーネル周波数が35KHzの場合にPWM周波数を1KHzに
 すると階調は35段階だ。
 殆んどの人が聞こえない15KHzを選ぶと階調は2.3段階になって
 しまう。」

 この意味がなんとなく分かりました。秋月の「PWM(スイッチング方式)
 DCモーター速度可変キット」は、PWMの基本周波数は、10KHz
 と記載があります。
 詳しいことは分かりませんが、搭載してあるパワーMOSFETを制御
 するにあたって、この周波数が最適なんでしょうね。
 とすると、諸兄が言っているように、MACHで、基本周波数を高く
 すると、階調の問題が・・・・・・・・・・・・・・・。
 カーネルの周波数を25000Hzとして、MACHの設定を、
 「PWM(スイッチング方式)DCモーター速度可変キット」と同じ
 10kHzにすると、おおよそ、低・中・高の3段階ぐらいの切り替え
 しかできないことになってしまうようです。
 階調のことを考えると、MACHの基本周波数を低めにして、
 コンバートの回路でもつくる必要があるんでしょうね。
 一つまた、勉強しました。