2015-03-30 21:43 | カテゴリ:PIC応用回路

以前製作した、Nゲージのコントローラを「VVVF」風の制御が可能な仕様に変更しました。

これは、数年前に製作したPIC16F876を使用した、Nゲージ鉄道模型のコントローラです。
ボリュームで電圧を変化させて、それをPICのアナログ入力から読み取り、PWMでパルス変調をかけた電源を供給する使用です。

DSC00813.jpg

DSC00814.jpg

このHWの一部とSWをかなり書き換えて、最近の電車のVVVF風の音が出て、超低速から発進できるコントローラに改良しました。

具体的には、DIPスイッチで、出力波形(矩形波)のパルス波長を決めて、その周期をボリュームで次第に短くしていく回路です。
これで、VVVFの、あのウィーーンという起動時の周波数があがっていく様が表現できました。

ただし、SWを簡略化するために、ある程度周波数が上昇した時点で、回路が切り替わり、再び低い周波数から上昇していくような、高度な再現は出来ていません。

簡単なデモですが、ビデオを参照ください。



コントローラのビデオと実際の走行画面は完全には同期していません。
【ジャンル】:趣味・実用 【テーマ】:鉄道模型
コメント(2)
2015-03-27 20:41 | カテゴリ:PIC応用回路
16x16のドットマトリクスで、アナログ時計を表現しようという試みで、トライしてきました。
LEDのマトリクスのダイナミック表示と、時間のカウントの並列処理に苦労しました。
なかなかバグが取れませんでしたが、ようやく完成しました。(と思いますが)



秒針の表示は外周を廻るドットで分かりやすいと思います。
長針も、「その気になって読み取ろうと努力すれば」、時間も分かると思いますが、、、、


2015-03-25 18:46 | カテゴリ:PIC応用回路

PICを利用したアナログ式の時計のプログラミングをしていますが、なかなかバグが取れないので、ちょっと遊んでいます。



この音と、このキャラクターは、とても懐かしいです。
ちょうど、就職した頃に、100円玉をいっぱい持って、喫茶店に行って、遊んだものです。

2015-03-24 14:10 | カテゴリ:番外編
Anniversal.jpg

皆様のおかげをもちまして、開設1周年、そして、アクセス10000回を迎えることが出来ました!

ありがとうございます

これからも、身のまわりの話題と、少しでも皆様のお役に立てそうな内容にすべく、努力し、50000回、100000回
を目指してまいります。

こんごとも、よろしくお願いいたします
2015-03-23 13:01 | カテゴリ:PIC応用回路
アナログ時計の文字盤のデザインを考えています。

12時がこちらです。

MX02-1.jpg


3時がこんな感じです。

MX02-3.jpg

これだと、ほとんど問題なく時刻が判読できそうです。

MX02-2.jpg

これは、11時59分
長針が1ドット左になっています。
短針も1ドットがまだ
左サイドに残ってます。

MX02-4.jpg

これは、2時59分。
同様に、長針と短針は1どっとづつ左に残りがあります。

参考までに、下記が、11時58分と、その下に11時57分です。

1258.jpg

1257.jpg

この微妙な違いが分かりますかねぇ??
まあ、12時少し前、と言うのが印象でも分かれば良いとします。(汗)

ちなみに、短針は、30分毎にしか変化しません。

2015-03-22 21:33 | カテゴリ:PIC応用回路
デジタル式アナログ時計の実現方法を考えています。

16x16ドットという限られた表示スペースなので、かなり表現が難しくなると思い、まずは、アナログ時計の針のデザインを検討しました。

長針と短針でそれぞれ、回転させるとどの様に表現されるのか?
長針は、1分刻みで、動かしたいので、60通りのデザインになります。
さすがに短針は、そうは行かないので、1時間に2回動くようにしました。

MX01-1.jpg

MX01-2.jpg

要するに、プログラムでは、1秒をカウントして、1分になったら、分針を一つ進め、30分で、短針も1つ進める、という動きを繰り返せばよい訳です。

これを、たとえば、C#言語や、BASIC言語などの、IF分や、case分でプログラムしようとすると、60個のIF分が並んで分岐させることになります。

でも、アセンブラでは、便利な命令があって、レジスタの内容(値)をプログラムカウンターに加算する命令があるのです。
そうすると、秒のカウント値をそのときのプログラムカウンターに加算すれば、秒の値に応じて、分岐させることが出来ます。

MX01-5.jpg

これは、秒のカウントに応じて分岐するプログラムの一例です。

MX01-4.jpg

同様に、分に応じて分岐。

MX01-3.jpg

そして、時間です。

この様に分岐させた先にGOTO命令の先に、長針や短針のドット表示を制御するプログラムを記述すれば、見かけ上、長針や短針が動いているように見えます。

というアイデアです。

また、秒のカウントだけではなく、ドットLEDをダイナミックに1msec毎に16行分スキャンしてやらないと、LEDが全桁表示しませんので(ダイナミック点灯式)あわせて、その制御も、割り込み処理の中でしなければなりません。
うーーん、複雑な制御です。

はたして、、、、

2015-03-21 18:37 | カテゴリ:PIC応用回路
秋月電子から、待望のPIC16F877とついでに注文した、RS232C<->USB変換アダプターが先ほど届きました。
ここ数年、秋月さんは、部品の梱包がとても丁寧で、部品種ごとに、ジッパー付きの小さなビニール袋に小分けして、さらに大きな袋に入れた上で小さなダンボールで出荷されてきます。
とても信頼できます。

で、早速、プログラムを書き込んで、テストしました、、、、
おー!
問題なく動作しました。
やはり、PICが壊れたのでした。
回路に問題が無くてよかったです。

それでは、このドットマトリックスの基盤を使って何をしようかと考えるに、ちょっと分解能的には無理がありますが、アナログ時計もどきを作ってみたいと思います。
長針と短針と秒針が、この16x16のパネルに表示され、時間を刻むと言う案です。

これからちょっと設計を考えて見ます。

2015-03-19 22:17 | カテゴリ:PIC応用回路
なぜか、動作が止まりました。

MX-1.jpg

調子よく動いていましたが、長時間試運転で放置していて、PCでメールを書いているときに、ふと見ると動作していません。
電源が抜けたかとチェックしても問題ありません。
スイッチを操作していると、PIC本体が異常に発熱し、やばいと思ったら、PICが昇天してしまっていました。
PICライターでプログラムを読み出しても、エラーとなり、完全に壊れました。

理由が良く分かりません。
で、ソケットを良く見たら、ピンが1本なくなっていました。
このソケットは、取り外しを容易にするために、二段重ねで使用しているうちの上段のほうです。

MX-2.jpg

左上のピンがありません。

MX-3.jpg

裏から見ると右上です。

かけているピンはI/Oなので、即座に致命的な問題にはならないと思いますが、なぜか壊れました。
PIC16F877:金500円なり。

早速、交換用の在庫をみると、ありました。

で、これをPICライターにセットして、プログラムを書き込んだのですが、書き込み時に「エラー」となってしまいます。
えー! ライターも調子が悪くなったのか?
ライターまで購入するとなると、5000円を超える出費になります。

しばらく、ライターの回路と仕様書を見て、気がつきました。
在庫として買っていた、PIC16F877は、16F877Aで、”A”が末尾についています。
壊れたPICは”A”無しの、16F877です。
そして、私のライターは、”A”には対応していないと分かりました。
と言うわけで、ライターは壊れていないことが確認できました。

早速、秋月電気にPIC16F877を注文しました。

しかし、手持ちに、間違って、購入した、”A”タイプのPICが4個、2000円相当あり、これを活用するには、PICライターの新しいバージョンを購入する必要があり、悩んでいます。

まずは、PICのチップが届いたら、プログラムを焼きこんで操作確認です。
もし、動かないようであれば、マトリックス表示機は「お蔵入り」です。(泣)
MX-4.jpg
2015-03-18 17:49 | カテゴリ:PIC応用回路
昔に、秋月電気商会から買って在庫になっていた、8x8ドットマトリクスLEDが4個あったので、これを使用して、16x16のマトリックス表示機を製作しました。

これは、1年前にハード製作して、基本動作テストまで完了していたものです。
予め、プログラム内に文字フォントをデータとして書き込んでおき、それを単にスクロール表示するだけのシンプルなものです。

回路的には、8x8のブロック毎に、8+8=16の端子があり、それを4個集合させました。
ドライブ的には、16+16のラインをダイナミックにドライブし、該当するLEDのドットを光らせるのですが、一度に、最大で16個のLED(1行分)をドライブし、それを数ミリ秒毎に行を切り替えて、16桁、16行分を光らせます。



このままだと、単に静止したパターンを表示するだけですので、一定の速度で、パターンをスクロールさせました。
HWの配線(PICの入出力ポート数の制限と、配線の取り回しの関係)で、16ビットの連続したポートアドレスを2組確保できず、4ビットのポートやら、8ビットのポートやら色々混在したので、SWでパターンのデータをPICからLEDに書き込むプロセスが、異常に複雑になってしまいました。
中間にバッファエリアを設けて、そこでポートアドレスの変換をするようにしました。

言語は、MPLABのアセンブラです。
PICのアセンブラは、単純な命令形態でシンプルな構造で組めましたが、プログラミングは結構な力仕事でした。

プログラムの書き込みは、昔、秋月電気でキットで購入したPICプログラマーで、いまだに動作しています。
二階建てに組み上げましたが、下は電源(15V)です。

これだけでは、面白くないので、何か役に立つものに応用したいと思っています。

2015-03-17 14:30 | カテゴリ:未分類
ようやく完成しました。

とりあえず、工作机の上で、自然光とスタンド光とフラッシュの合成照明で、いまいちですが、完成写真を撮りました。
女性ドライバーが運転しているところがミソでしょうか。
心配していた、メタリックレッドですが、想像通りの色に発色しています。
これには満足です。

MR10-1.jpg

MR10-2.jpg

MR10-3.jpg

MR10-4.jpg

MR10-5.jpg

MR10-6.jpg

在庫がなくなりましたので、プラモの製作はちょっと一休みします。
何か良いモデルがあれば、即開始ですが(汗)

2年程前に、WindowsのPCでVisual C#の勉強を始めて、PICで製作した電子回路(室内温度、外気温度、湿度、気圧を測定しLED表示する)のデータをPCに取り込んで、グラフ表示するプログラムを製作しました。

今日の関西地方は、春の様に暖かです。
DSC00787.jpg

外気温は19.1度、室内温は23.9度、気圧は、1005ヘクトパスカル(高気圧です)
湿度(屋外)は、気圧と交互表示になっていて、47%です。
この上にエアコンがあるので、吹き出す温風の具合で、室温が変化します。(汗)

DSC00786.jpg

それ以降、C#の勉強がストップしていて、ボケ防止の意味もあって、少々C#の勉強をしたいと思っています。
そのあたりも今後随時、ご紹介したいと思っています。