第22週 CCP(PWM)でDCモータ駆動(1:ハード製作)  
   

北海道に山登りに行きました。豪勢ですね。なんの、全国どこでも10000円という超割航空券が2日連続発売というので、往復それを使って1泊で行って来ようという体力まかせの豪華にして貧乏な強行北海道です。(^^; 同行は4人、女3人は観光で私は別行動の山。
急な話でしたので宿泊も旅行社などには行かず自力で探しました。きれいな新築、おいしい食事、豊富な温泉、景観抜群、交通至便、日当たり良好、商店街至近、幼稚園学校隣接、公庫融資付き、ちょっと違うか、けど、何より格安という条件で探しました。格安の条件さえはずせば、あるある、さすがに北海道ですが、格安は第1条件ですからこれはぜったいに譲れません。でも格安と他の条件とはきっちり区分けされてるんですね。必ずどちらか、なんですね。
ところが執念とは恐ろしいもので、見つけましたですよ、屈斜路湖のほとりの某プリンスホテル。季節はずれとあって格安も格安、観光地の場末のきったない民宿よりさらに安く、おまけに夕食にシャンパンサービス、さらにおみやげまでついてます。経営大丈夫か、某プリンスホテル。

満室ににならないうちに即予約せねば。 ん? レディズプラン? おれはどうなるんだぁ! とりあえず電話してみたんですよ。
「あのぉ、おっさんのワタクシはどうなるんでございしょう?」 
「ハイ、けっこうでございます」
案じていたわりにはいとも簡単に、いきなりレディズプランに組み込まれてしまいました。(*^_^*) 

わくわく。着いたら真っ先に確かめなくちゃ。
「あのぉ、露天大浴場もレディズプランでしょうか?」
「はい、もちろんでございます」
うれしいな。わくわく。客はみんなレディだからな、オヤジはもちろんのことガハハおばさまも除外だな、なんせレディだから。わくわく。
ってな期待を胸一杯にして遠路はるばるたどり着いたのですが、ンニャロー、約束が違うじゃないか。なんでレディズプランなのにオレだけオヤジ風呂なんだ。うそつきー、悪徳しょうほーっ。なにも約束はしてないか、つい興奮しちまってすんません。
ただ、ひとつだけレディズプランらしかったのは、カミソリが、ない。(^^; 翌日は髭面のレディで過ごしました。とほ。



CCPモジュールのPWMモードを使う

CCPモジュールのPWMモードを使ってみます。
CCPってなんじゃい、とデータシートや参考書を読むと最初のCはCompare、次のCはCapture、PはPWM(Pulse Wide Modulation)だそうで、
1) Compareはコンペアレジスタとタイマ1とのCompare(比較つまりは一致をチェック)により正確な周期を作るなどの応用に
2) Captureはタイマ1の値をトリガの瞬間をとらえ記憶、つまりはCaptureして正確な時間測定に
3) PWMはタイマ2と連携して正確な周期とデューティのパルス発生に
応用するためのようです。
ともにソフトに影響されずに正確な時間管理が実現できるようです。

今回はこのうちPWMを使ってモータを回してみます。
テスト回路は新しく組みます。
スイッチ選択で回転速度を変えたり、A/D変換端子につないだトリマで速度を変えたりしてみます。



機能
 (1) 速度設定用にはディップスイッチとAD変換端子につないだトリマの2通りを用意します。
 (2) モータはゴミの中から拾った得体の知れない物ですが、5V定格で500mA程度のもの(らしい(^^; )を使用。
   めんどうなのでモータ回路も制御回路と同じ電源を使用してしまいました。ホントはいけないんだ。
 (3) 速度設定は、まず最初は適当に設定しておいた波形データをディップスイッチによって選んで出力させます。
   その次にはトリマで設定したアナログ値によって連続的に変化させます。
   このときディップスイッチで回転方向を変えたりしてみます。

PWMのおさらい
 (1) 機能
    出力パルス波形は周期とデューティで決まります。
    周期    :PR2レジスタ(8ビット)に設定した値と
           タイマ2との比 較(一致)によって出力Highに
    デューティ:CCPRxH(CCPRxLの8ビットと
           CCPxCON<5:4>の2ビット計10ビット)と
           タイマ2の比較により出力Lowに

    当然デューティより周期の方が長いということになります    が、ここでPR2が8ビット、CCPRxHが10ビットでは周期      よりデューティが大きな値になるからヘンじゃないか。
  そうしたらめんどうなことをやっていました。
  8ビットのタイマ2はプリスケーラで小さい方に2ビット増やして   10ビット分解能とし、Dutyの比較にはこちらで対応、周期の比  較にはプリスケーラなしで8ビット比較というわけです。
  それぞれの計算式では
      周期=(PR2+1)×4×Tosc×(プリスケーラ値)
      デューティ=CCPRxH×Tosc×(プリスケーラ値)
  となって[×4]でビット幅不釣り合い分を帳消しにしています。
  つまり使用上多少いいかげん(^^; でも平気な周期は粗くて  、  PWM出力に直結するデューティは細かくってことでしょう。

  それにしてもめんどくさい! 色を変えて太字にしてビックリマ  ークまで付けたところに苦闘のあとが垣間見えますね。(^^;

 (2) セットアップ手順
    データシートによれば、こんな手順にせい、と書いてあります。

    1. PR2レジスタ書きこみにより周期をセット
    2. CCPRxLレジスタとCCPCON<5:4>書き込みによりデューティをセット
    3. TRISCレジスタ書き込みによりCCP1,CCP2ピンを出力に設定
    4. T2CONレジスタ書き込みによりタイマ2プリスケーラをセット
    5. CCP1モジュールをPWMモードに
   
   と、ここでこの手順では目的の可変速にはちょっと都合が悪いことに気付きました。
   つまり駆動させながらデューティを変化させたいわけで、2.項を後回しにしてサイクリックに書き換えるというやり方をする
   つもりです。大丈夫なのか、まあ、例によって試行錯誤してみます。

 
◎速度設定入力はいつものパラレル入力です。
 4点スイッチのうちBit3を回転方向、Bit2:1 を速度設定用とします。
◎別途アナログ入力も用意しました。A/D変換で経験済み。
◎PWM出力は2本、正転用、逆転用です。参考書などではもう2点汎用パラレル出力を用意してPWMとは別にON/OFFだけさせていますが、このあたりのことはどうなのか。これも試行錯誤で突破します。(^^;
◎駆動素子はパワーMOS−FET・2SK2414です。
 

今回はハード製作だけです。
次回にプログラムを作成して動かしてみます。