第24週 CCP(PWM)でDCモータ駆動(2:ソフト編2)  
   
友人が入院しました。
この友人夫婦も私もテニス(のようなもの)をしていますので年に一度くらいは一緒にプレーします。これが、いろいろ姑息な手を使うのですが、どうにも勝てない。
まあ、入院の方は順調に回復、退院となってまずはよかったよかったと言うところですが、それよりなにより、むふふ、病み上がりのこの時を逃してなるものか。千載一遇のチャンスとはこのこと、手術の傷痕が消えてない今を置いて勝てるチャンスはまたとない。
なんてヒキョーモノなんだぁ! あ、それはオレだっけ、オレ。(^^;
っつうことで、長年の雪辱を期して遠路はるばる出かけたんですがね。う〜む、なんですな、結果は聞いて欲しくないですな。(泣)

CCPモジュールのPWMモードを使う(ソフト編2)

今度はスイッチで回転方向を、トリマで速度を可変にするプログラムです。
スイッチを割り付けたポートBの<RB0>を回転方向に割り当てます。
10ビットのアナログ入力を上位8ビットだけ使用してこの値を前回のスイッチ入力値と同じように使います。
運転中でも速度変更、回転方向変更をできるのは前回と同じです。
アナログ入力の扱いは第18週そのままです。



特に目新しいものはありません。前回と第18週 とを合体させただけ。

プログラムはこちら

■今週のおやぁ?
 不思議な現象にぶつかりました。
 ADCON1レジスタでアナログポートを設定するのに
   MOVLW   0EH
   MOVWF   ADCON1    ;RA0のみアナログ、ADFM=0(結果左詰)
 としてAN0のみアナログに割り当てますが、ここで誤って
   MOVLW   07H
 とすべてデジタル割り当てにしてしまいました。
 でも、ちゃんとアナログ入力として動くんです。

 推理:AN0のみがTRISレジスタで入力設定されていて他のビットは出力設定されています。
     データブックのアナログポートピンの記述に
     「(ADCON0の)CHS2:CHS0ビットおよびTRISビットの状態に関係なくA/D変換は行われます」
     「デジタル入力として構成されるピンはアナログ入力と変換します」
     とあります。ちょっと翻訳文章意味不明ですが、要するに
     「アナログチャンネル選択すればアナログ変換する」
     ってことでしょうか。
     じゃあ、ADCON1の設定はなんなんだぁ。
 宿題ですね、これは。はて、どうしたものか。
 自然現象じゃなく、人間の考えたものですから、こりゃ考えた人に聞くしかないですね。
 マイクロチップテクノロジーさんに聞くしかないか。

 

トリマ回転に併せてパルスのデューティが変化し、それに従ってスピード、回転方向が刻々と変化します。

あまりあっけないので書き込みするネタがありません。(^^;
多少は画面上下スクロールくらいしないと。波形写真なんか載せてみます。


  2.44V

  3.66V

  4.87V
 Vref+:Vdd(4.88V)に対して1/2、3/4
 および全電圧を入力。
 周期は設定通り19.53kHzで一定となったまま
 デューティが入力電圧に従って変化する様子が
 わかります。