« プリント基板に、ミスが見つかりました。。 | トップページ | KATO D102/DCS51KのDCCパケット »

2018/09/16

12bit相当PWMで、RCサーボモーターをスローアクション制御

試作したプリント基板にフラットパッケージ版のPICが必要なので、今回は、秋月で入手可能で価格も割安なPIC16F1705-I/SL@¥100を使ってみました。すんなりとは行きませんでしたが、結果OKです。



(参考)
【16番】RCサーボモーターでKATO HOユニトラック手動ポイントの電動化


PPS機能とCCP機能があるので、PIC16F18313版のソフトウェアがほぼそのまま使えるかと思いましたが、CCP(PWMモード)機能の時に割込が発生しませんでした。割込のあるPIC16F18313の方が少数派のようです。onz

マルツの通販でPIC16F18313-I/SN@¥150位を購入すれば解決するところですが、割安のPIC16F1705でどうにかできないか考えた結果、CLC(コンフィギュラブル論理回路)機能でCCP(PWMモード)出力を複製し、CLC出力の立ち下がりで同等の割込みを発生させるようにしました。

ちなみに、PIC16F1705はアナログ回路が強化され、8bitDACとOPAmpが内蔵されていますが、今回は使っていません。



開発とデバッグは、DIP版のPIC16F1705-I/P@¥110を使います。

いきなり_16F18313向けのプログラムを移植しようとしてもトラブルになるだけなので、ひとつひとつ確認して、手持ちのライブラリに_16F1705対応の修正を加えています。

・Lチカ(クロックとコンフィグレーションワードの設定)
・I2C機能とPPS機能でLCD表示(I2CのRxyPPSの設定値が、PIC16F18313と異なる落とし穴あり。。)
・10bitPWM機能でRCサーボモーター駆動
・CLC機能の確認
・CCP(PWMモード)/PPS/CLC機能による12bit相当PWM機能でRCサーボモーター駆動
・Timer1G機能でDCC信号の取込み
・CCPで使用中のTimer2機能でメインの__delay_ms()を使ったスローアクションを関数化(ライブラリに反映中)



PIC16F18313に加えて、PIC16F1705にも対応できました。


結局CLC機能を使って実現できるのであれば、PPS機能がなくデータメモリも128バイトと少ないのですが、さらに割安のPIC16F1503T-I/SL@¥80でも動くかどうか気になるところです。


続く。。

« プリント基板に、ミスが見つかりました。。 | トップページ | KATO D102/DCS51KのDCCパケット »