2018-07-12 13:30 | カテゴリ:PIC応用回路

やっとの事で、タイマーや割り込みが動作することが確認できましたので、いよいよ本題のプログラムの政策にかかりました。

この回路のハードは、PICのピン(RA2)をソフトでON/OFFするとその信号が、CLC(内蔵論理回路)の入力として接続され、PWMの出力信号と論理和をとったものが、12V電源の出力をスイッチング(TrとFFTで)します。
PWMのテストができましたので、一応、このPICのピンでの出力制御を確認します。
簡単なパルスをRA2ピンから出力します。
オシロで12Vのパワー出力を観察します。、、、、、、
何も出ていません。(笑)

RA2が出力ということは、以前のプログラムで確認しましたので、間違いありません。
仕方がないので、ハード基盤を確認したら、RA2ではなく、RA5ピンからCLCへ接続されていました(笑)
プログラムを再確認したら、#define で定義されていた名前が違っていて、正しい定義では、ちゃんとRA5になっていました。
お恥ずかしい!!

で、気を取り直して、まずは簡単なパルスを発生させて、BEMFを観測することにしました。

例のDD51ミニ機関車からモーターを取り出して、直接駆動回路の電源を接続しました。

(NG303-01)
NG303-01.jpg


続きは、、、
2018-06-27 13:51 | カテゴリ:PIC応用回路
さて、気を取り直して、「明日になり」、明るい日になりそうです。

PWM発生によるPIN割り込みが「うんともすんとも」言わなかった件ですが、まず、Nゲージ制御の出力を調べました。
出力が出ていません!?!?
前は出ていましたが!

結論から言いますと、PICの内部設定の論理回路(CLC)のPWMがORで出力する部分のもう一方の入力がオープンのまま(設定忘れ)で、ノイズなどの条件でLやHになり、PWM信号がゲートされたりされなかったりしていました。

これで、PWMがちゃんと出ました。(笑)


続きは、、、
2018-06-23 13:46 | カテゴリ:PIC応用回路

昨年に、Nゲージコントローラで、BEMFを利用して低速定速走行を目指し、一定の成果を得られました。

その時は、モーターの逆起電力をAD変換して、モーターの回転速度を推定し、それと指定された速度との差を求めてモーターへのPWMとPFMのフィードバックをかけて制御する方法をとりました。
一定の性能は確認できたのですが、最大の問題点は、BEMFの逆起電力のAD計測で、ノイズなどの影響で、とても高精度の計測がむつかしく、従ってモーター制御も精度良くはできませんでした。

そこで、ちょっと考えていたのが、BEMFを一つではなく、2パルス計測し、その間の時間を計測して速度を推定してはどうかというアイデアです。
モーターに電力パルスを1つ与えます。すると、ローターが少し回転し、コアが2個分磁石を通過すれば、BEMFが2個生成されるはずです。
その時間間隔を計測すれば、モーターの回転数を直接計測できます。
更に、進めれば、ギア比がわかれば、車両の進む距離もわかるはずです。(車輪がスリップしなければ)

なにか面白そうです。

基礎的なデータを知るためにちょっとトライしてみたいと思います。

(NG301-01)
NG301-1.jpg

2018-06-18 21:44 | カテゴリ:PIC応用回路
多数のLEDスロー点滅をテストしています。


前回までに3個のLEDスロー点滅が、なんとか実用的になるところまで来ましたので、LEDの個数を増やして、テストしています。
とりあえず、16個までの点滅にトライします。


いつも使用している「ブレッドボード」に、9個のLEDをセットしました。


(SLEDM2-01)
SLEDM2-01.jpg




続きは、、、
2018-06-15 18:28 | カテゴリ:PIC応用回路

スロー点滅をやるぞー!
と、ぶち上げてしまい、ちょっと怖気づいています。

まずは、SWで処理する為の論理を考えていきます。
可能であれば、以下のような処理フローで実現できると思います。

1)TRR0の割り込み設定で、例えば100usec毎に割り込みをかけ、

2)その割り込み処理ルーチン内で、各LEDの点灯・消灯のDutyや点滅のカウントを取り、

3)それに応じて対応するLEDをON・OFFすれば行けるはずです。

続きは、、、、