俺たちの電子工作!

このページは下に行くほど最新です。

遂に公表、
私の弾速計


1号機が三脚付きで2号機がユニ基盤むき出し。

ここの奈良鹿サイトにしょっちゅう来てる人なら知ってるかも知れないが
少し前にPICという大変便利なCPU、とはいってもラム、ロム内臓の
ワンチップCPUでかなりはまって遊んでいた。当時、エアガンのVSR−Gスペックの
改造を熱心にやっていたのだが、弾速がわからないとやりようがなく、改造しては
サバゲ屋に行って計らしてもらっていた。

さすがにこれは面倒なので弾速計を買おうと思っていたのだがいかんせん高い、
そして検索しているうちに

http://www.mars.dti.ne.jp/~ogura/e_hobby/bbspeed.html

というサイトを見つけてしまった、これがそもそもの始まりだった。

私は会社ではソフト屋として働いているのだが、今の世の中いつ会社が倒産したり
転職を余儀なくされたりするかもしれない、そういうことを考えるとハードにも
詳しいほうが何かと得だし、ソフトの開発もやりやすい、そしてなによりも
いい加減ソフト開発も飽きてきた。みなさんはソフトの開発と言うとなにかとてつもなく
難しいと思っているかもしれない。確かに簡単ではないけど、ある一定以上
開発できるようになると、大抵は同じやり方で延々とできてしまうのである、
まぁ、職種によるかもしれんが、、、。

そこで上記のURLである、なら俺にも作れるとやり始めたのだ、
実を言うと、以前にH8というこれまた便利なワンチップCPUの学習を少し
したことがあったのだ、秋月通商というその種のことが好きなら知らない人は
もぐりと言われるショップの名前も知っている。しかし、ポイントはただ単なる
コピーなら誰でも出来るのであまり参照せずに自力でやるということだった。

PICというマイコンについて調べなくてはと思ったのだが、ふと思い出すのは
以前H8についての本を買う前にその辺の世界をよく理解していなかったために
間違ってなんか変なマイコンの本を買ったなぁと思い出して、家を探すと、
ありました、ありましたPICマイコンの本。その日以来通勤電車の中等でえんえんと
PICの本を読むのだった。さらにネットでもいろいろ調べたが、最初は本から
覚えるのが良い様だ、ただ、最後にはネットの情報力が物を言うのだが。

そして、秋月通商である。この種のマイコン等を趣味でやる場合、この名前を
知らない人はまずもぐりである。PIC開発をやる場合、どんなキットを買えば
いいのかは見当は付いてたので、秋月のサイトで見つけ出す。
しかし、安いなぁー。

http://akizukidenshi.com/catalog/items2.php?q=K-00038&s=score&p=1&r=1&page=#K-00038

で、買ったのがこれである。本体と電源キット買えばOKなので8千円くらいである、
代引きという大変便利なもので購入した。

で、家にやってきたのだが、実はこれ組み立てキットなのである、つまり基盤になにやら
部品その他を自分で乗っけて半田付けしろというしろものなのである。でも、大丈夫、届く前に
簡単な工作キットなどを買って、練習してたのである。しかし、それでも、これで良いのか?
半田付けして良いのか?とびびりながら完成させたのであった。

さて、書き込みキットも完成し、ではPICマイコンを動かしてみようとするとき
その最初の第一歩、この種のことをやり始めようとする誰もが最初に課す目標、それは

「LEDを光らせたり、点滅させたりする」

である、これはもう定説です。間違いない!
まずプログラムですが、結構厄介ではあったが、俺も一応社会ではプログラム屋であって、
なつかしさ120%のアセンブラコードであっても、なんとかできる、なんせPICのピン一本
をONするだけでLEDはひかるのだから、しかし、一番厄介だったのは、その基板を作る作業そう、あの

「ユニバーサル基板と配線」
http://akizukidenshi.com/catalog/items2.php?c=board

という奴なのだ、このユニバーサル基板というとはまぁ基板でなんでも自由に配線できますよ、
というもので、みなさんは一般的にグリーン色した電子部品がわんさとのっかった基板ならみたこと
あるだろう、これは板に穴ぼこがぶつぶつと開いており、裏はその穴いっこいっこに半田が
のりやすくなっているもので、表から電子部品をはめていき裏で半田付けし、それをメッキ線と
いうものでつないでいくのだ。最初はLEDを光らすだけなので、電池から基板に乗ったセラミック
コンデンサや積層コンデンサ、三端子レギュレーターなどを配線していき、PIC用の18ピンソケットの
PICの電源供給ピンにつながるように配線していくのだ、そしてLEDをくっつけて完了と、
書けば簡単だが初めてなのでこうかあーかと基板をくるくるひっくり返しては確認して配線
していくのである。ちなみに、後日気づいたのだが、この初基板は三端子レギュレーター
の接続にまちがいあったのだ、とはいえ動くことは動いたのだが。

で、今度はソフトの版だが、あっちこっちのHPや文献を参照してたかだかLEDを
光らすだけのソフトをつくりあげた、といっても初期化してポート一つをONにするだけである。
どこかで前述したが、俺はソフト屋なのであまり他人のプログラムは参考にしないと
書いたが、実際にはあっちこっちのHPのサンプルプログラムを眺めまくった、
それ以上に電子部品の何たるかの記述が役に立った。
まぁこの種の制御系は初めてなんだから、変なルールにこだわることもなかろうと、
しかも実際、俺の知ってるアセンブラとはなんか微妙に違うし、、、。

そして、遂にAKIの書き込み機で俺のプログラム、というほどでもないが、を焼きこんで
それをテスト基板にはめる、そして電池をいれる。
くわしくは覚えていないが最初はなんやかんやでひからなかったと思う、原因は
記憶にものこらないしょーもない原因だ。しかーし、うまく光ったときはうれしかったね。
そして、単純なループウェイトをつくって、2個にしたLEDを点滅させたりした。
わざわざ電気を消して暗闇光るLEDを見て、おおーーと眺めたりした。
こういうことを趣味にできるというのはこういうことに感動できる人のみなんだろうな
といまでも思う。もっとこの種の趣味にはまった人はおそらくはじめてLED光らせたときは
感動して涙をながしたのでは思う。

んでもって「弾測計への道」なのだが、正直言って、ユニバーサル基板にパーツを置いて
メッキ線でつなげて半田付けしていくのは楽しかったね「これははまる」と
半田ごてもちながらおもったもん、なんというのか頭がえらくなったような気が
するのですよ。絶対的に言えばPICの基板なんてのは超低レベルなんだけど、
なんかこう「頭いいかんじ」がするのである。
逆にうざかったのが、そのソフトの部分なんだよね。
「全部アセンブラ」
これだよ、これ、すげーめんどくさい、ただの足し算、引き算、掛け算、割り算でも
ものすごーくめんどくさい、足し算はかんたんなんだけどね。
とにかく、なんぼ頭振り絞って考えてもやることはただの算数。
すごくかなしい。
しかも、さらにいやなのがガワの作成、一号機をみればわかるけど、金属製のガワに
プラスチックパイプが通っている。通すために金属部を切断しないといけないの
だが、俺がもってるのはルーターのみ、簡単に切断できると思ったのだが、
切断用の碇石がすぐ駄目になる。5cm切るのに一枚いる。おまけに凄い騒音
近所の人がどう思ってるのか心配するも後で聞いてみたところ大丈夫
だったようだ。

で、出来たのがこの文のとっぷにある、1号機だ。計測部分をアップしてみると

パイプのこちらと向こうに計測部がある、下から赤外線を発して上の受光部分で
光が届いているかをチェックする。BB弾が通ると瞬間光が遮断されるので
こちらと向こうの計測部分を通過する時間がわかれば、計測部間の距離から
弾速を計算するわけだ。

ただ、これには致命的な欠点があって、計れることは計れるのだが、正確に赤外線を
遮断しなくてはいけないのだ。開発時のテストは主にエアコキハンドガンでやっていたので
狙いをつけるのが簡単で、あんまり計測ミスはなかった。手前と奥の計測部の受光遮断が
うまくできたからだ、しかし、これがAKとかG−Spec等になるととたんにむずかしくなる。

2号機を開発することになったのだが、まず、ルーター等の使用をすくなくするなどで
簡単に作れるように心がけた、そして計測ミスがはっせいしないようにと。
普通に考えて計測をミスをなくすのは計測部の幅を広くすることだろう。
実際他の弾速計サイトではそうやっている。しかし、難しいのは赤外線発光部が
赤外線受光部に正しく向けられるかなのだ、ちょっとでもずれたら遮断と判断されるので
正しく動作しなくなる。んでいろいろ考えた結果がこの写真の2号機だ。

注目点は2枚のユニバーサル基板をスペーサーでくっつけた2段式で上の基板の裏と下の
基板の表に赤外線受発光部をそれぞれつけうるのだ。これなら基板の穴位置から
赤外線受発光部の位置あわせが簡単だし、穴にパーツをはめるので方向がずれるのを
防ぐのに大いに役立つ。

赤外線受発光部は横に2個並べれば問題ないようだ。
2号機はとにかく簡単に作れる。部品代だけでも2,3千円だ。むき出しの基板も
室内専用だから問題なし。

こんなちゃちなもんでも電気、電子についていろいろ知ったと思う、詳しい人から
みればPIC程度で云々となるだろう、実際そうだと思う。んが、それまでは単純に
「電気はプラスからマイナスに流れる」などということは実はなんもわかってなかったのを
実感した。今では「マイナス」のことも「グランド」などと言うようになったし、電子はマイナス極から
プラス極に流れるということも覚えた、ちなみにこの流れるというのもちょっと言葉の
イメージとは違うようだ。

さて、「マイコン基板の学習」などというインテリ度数120%の響きがあるものを
弾測計を通じてやったのだが、その結論をここに書こう!

「PIC自体の性能がいいので簡単すぎてマイコン基板の勉強にはならん!」

でした。まぁ、それは違うという人もいると思いますが、私はこう思ったね、実際。
マイコン基板の勉強がしたい人はZ80でアドレスバスやデータバスの
配線をせこせこやるような基礎中の基礎をやるほうがいいよ。
「こんなんつくりたい、早く簡単に」という目的が手段を正当化するような場合は
PICが使えます。

その後、また改良版を作った。

量産型の方だが、赤外LEDをTLN231に変えてみた
前回のだと2つ並んだセンサーのど真ん中だと反応しないことがあった、
これだとちょっと測定範囲が狭くなるかもしれないが、ど真ん中でも反応する。
あと、簡単に安くつくれる。
一応、この量産型は個人が家で、ちょっと改造した銃の弾速を調べるのが
正しい使い方だ。パーツはむき出しだし、基本的に脆い。

 




完のはずなのだが!

あのTokumizmanが半田ごてと半田吸い取り線(よく使う)を持って帰ってきた!

まて、よく見るとFutaba社製のプロポ3PM−FMも持ってるぞ!

や、奴だ、奴が帰ってきたんだ!!

「俺達のハカルンです」編

前回、弾速計を作るために昨日は日本橋のシリコンハウス、今日はホームセンターと
辛苦の苦しみを味わったのも忘れたころ、せっかくかったPICライターだからと
またごそごそとうごきだしてなんかつくってしまった、一体、なにが彼を駆り立てるのだろう、
誰にもわからない、だが彼はまたやってしまったのである、それは・・・

「ラジコンカーのオートラップタイマー」

ラジコンは増田屋コーポレーションの登録商標です。

名づけて「ハカルンです。」だ!これは自分の走らすラジコンカーのタイムを自動的
に計ってくれるという書かなくってもわかってらいという代物である。

仕掛けは簡単で、よくTVやエアコンなどのリモコンスイッチがありますが、あれの手元の側の
装置をよく見ると、ボタンがいろいろ付いていてボタンを押すとき装置の先をエアコンやTVに
向けるのだが、実は手元の側には赤外LEDというのがついてある、このLEDというのはPCの
についている起動中をあらわすランプと同じで、ピカピカひかるものなのだが、この赤外LEDは
見えない光というかなんかそういうもんをひからせているのである。んで、この時、目にも見えぬ速さ
(そもそも見えないが)で光った消えた光った消えたを繰り返してそのその繰り返しパターンを
受信機側(この場合、TV本体かエアコン本体)が察知して、

「お、光った光った消えた光った光った消えた消えた光った、ときたか、ならばチャンネル2だな」

とか、やっているのである。つまり送信機をRCに載せて同じパターンを延々と外部に
向かって発信し、受信機の前を通ったときにそれを察知しタイムを計測するという
仕掛けなのであーる。


これが発信機、PIC12F629というマイコンを使っています。中央の青黒いのが赤外LED。

こっちが受信機、PIC16F84Aというマイコンで制御されます。今回は
液晶表示板を使った。

(まったくの余談だがこのPICマイコンをマイコンとここでは書いてるが実はこれを
作っているメーカーはこれをマイコン、つまりマイクロコンピューターとは呼んでいない、
マイクロコントローラーユニットと言っており、その目的は周辺機器制御となっている、
つまり生みの親から日陰者で生きろと命ぜられたのである。かなし。)

 

知ってる人は知ってると思うが、これと同じものは実は販売されていて、RC屋に
行けば売ってます。しかしそれを買わずにてめーで作ってしまうところが奈良県人の
心意気だ、さぁ半田ごてを持って配線だ!

「配線、配線〜!さっさと配線!しばくぞ!!バシッ!バシッ!」

とまぁ、そういうのもあるが、実はこの市販品、結構な値段がする、大体1万6千〜7千円だ。

これなら作るための理由も立つ、せっかく作ったものの、材料費より安いのが
市販されてるとなると意味ないですからね。ちなみに、今回の完成までの材料費は
とてつもなく安いです。一番高い部品で、LCD(液晶表示板)の1500円くらいで、
あとは高いので200円とかで後は抵抗とかスイッチとかは10円単位とか1円単位
です。送信機、受信機合わせても合計で3000円は絶対に超えないですね。
特に今回「安く出来た感」があるのは前回の弾速計の時のような無駄な部品購入がなかった。
これがかなり効いてる。前回の弾速計も完成品の部品代はたいしたこと無いが
無駄に購入したのを考えるとかなりつらいものがある。

 

 


頭切断 ピークカットD

充電、それはRCに置いて最も重要なファクターのひとつである、なぜなら速度にもっとも
影響を与えるものの一つだからだ。いかに優れたモーターであってもそのパワーの
源がおかしければ全ては駄目になる。コーナーでの立ち上がり加速、持久、確かに他の
パーツも影響を与えるだろうが、その重要さは比較にならない。そう、RCとは
充電の戦いなのだ。

この物語は急速充電にあまり興味の無かった少年、徳満拓海が数々のバッテリーとの
急速充電を通して、彼の充電器が成長していくものがたりである。

徳満拓海、彼は以前からPICマイコン等でなにやら電子工作の真似事をしていたが、今回から
挑戦しだしたのは主にRCバッテリー用の急速充電器である。
充電器というと難しく聞こえるかもしれないが、充電行為自体の仕組みは簡単である。
要は必要な電圧で必要な電流をバッテリーに流せばいいだけなのだ、つまり、
定電圧定電流(この定電流というのが実は重要)のスイッチング電源があればもうそれで
即充電自体はできるはずだ。実際これの元になった資料は定電圧定電流マシーンで、
http://www.piclab.net/equipj65.html
をみれば基本的なものは全てここから作られている。

とはいえ、これがRCバッテリーに的を絞ったものでないのは明らかなのは、その流せる
電流量が1Aしかないのは見ればわかる。で、改造となるのだが、改造するには結局
図面のパーツ一つ一つがなんであるか絶対につまずいてしまう。簡単に5A流せる
電源使えばいい、とはならないんだなこれが。

今回苦労したのは電圧や電流、特に電流値をPICでそれらを検出することなんだよな。
まずいままでやったことが無いことがあれやこれやと(俺はまだ初心者なので何をやっても大抵
初めてなのが付きまとう)ある。その一つがADコンバータ、そしてOPアンプによる増幅である。

ADコンバータというのはPICの端子にかかる電圧を1024段階にして探知するものなのだ、
今まではONかOFF、0ボルトか5ボルトかの二つに一つだったのが今回はその間を10ビット
にして検出してしまうのだ。で、こういう場合はどうするか、まずはテスト基板で試してみます。
cdsという明るさの段階に応じて抵抗が強くなるパーツがあるのだが、これを使って

「電圧降下」

をもちいてPICの端子にかかる電圧を計測してそれを数字にしてPICに
表示させるのだ。電圧降下(あらかじめ言っとくが俺は詳しいわけではない)というのは、
まぁ、今ここに書こうとしたが面倒などでググって欲しい。で、この実験は初めてにもかかわらず
うまく行った、明るさに応じて数値が変化する。うまく行って当たり前といえばそうなのだが、
これまで当たり前のはずがうまく行かず苦労したのが多々ある。
幸先がいい。

で、今回もっとも俺の脳みそを沸騰させたのが

「オペアンプ」

である。なんでも微弱な電圧を増幅してくれるらしい。これも実際にはいろんな
使い方があって、増幅だけが仕事ではないらしい、が今回はそんな余計なことには
かまってられないので、例によってググって資料収集

http://www.picfun.com/partops.html

結局このページが一番わかりやすかったのだが、果たしていきなり

「ネガティブフィードバック」

と言われて理解できるだろうか?こういう難しいのにぶち当たったときはとにかく
要点だけはしょって覚えるのが定石でなんとか非反転増幅の真似事は
出来るようになった。実際、電流計測で増幅比率をあれこれ変えて実験というか
結局は無駄になったかも知れないがいろいろ試したのがまぁまぁ理解ができるよに
してくれたと思う。

 

で、この基板からの出力、つまりバッテリーと接続される部分からなんとか充電できそうな
出力が出てるのがわかると、ハングオンレーサーのバッテリーをつなげてみた。当初は
PICによる電圧計測があんまり信用できず、テスターの電圧表示も合わせて充電していった。

最初のほうにも書いたが充電の行為自体は定電圧定電流を出力しそれをバッテリーつなげれば
とりあえず充電はできます。

ハングオンレーサーのバッテリーは270mAhしか容量がないので30分もあれば十分なのだ、
充電中はテスターの示す電圧をずっと眺める。

そしてバッテリーもあったかくなりだし、そろそろ満杯のはずというときにテスターの示す

「電圧が突然下がり始めた」

のだ、そうこれこそが急速充電器がただの定電圧定電流マシンでなくすための
現象なのだ。いわゆるデルタピークというやつだ。ニッカドやニッケル水素は
充電していき満タンを過ぎるとその電圧が急激に下がる現象をみせる、そして
そこを読み取って充電を終了するのが急速充電器の肝でデルタピークカットと
いう呼び名もある。そのために、PICのADコンバータで出力電圧を電流を正しく
検出しなくてはいけない。

 

(またまた余談だが、おれがこんな電子工作ごっこしているのは一にも二にもハードウェア
の学習の為なのだが、マイコン制御であるかぎり結局はソフトで決まってしまう。
なんか疑問を感じるこのごろでもある。)

今回の急速充電器ではそのデルタをうまく検出しピークカットを行うこと、それが

「プロジェクトD」

なのだ。

 

いきなりですが、完成しました。
とりあえず第一版として完成です。

まぁ、例によっていろいろと苦労がありましたが、ちゃんと充電できます。
上の画像を最初のと比べると分かりますが、目立つ特大の放熱フィン。
いままで放熱フィンなんて気休めだと思っていましたが違いました、すっげー
効果あります。ファンとかつけても良かったけど、自然放熱できるならそれに
越したほうが無いし、付けるとまた面倒なのでファンは無いです。

一番の苦労はどうやって5A流すかで、最初に参考にしたのは1A流す安定化電源のため
その辺考慮は無いのでいろいろ試行錯誤した。最終的にはPICから1815を駆動、
それが3つのパワーMOSFETで5A流してます。

ここにいたるまでの試行錯誤とは言うと、1815の部分をフォトトランジスタにしたり
FETでいくかパワートランジスタで行くか、それを何個にするかといろいろありました。
電圧をかけてONするタイプのFETをバッテリーの前につけて「なんでバッテリーの手前の
電圧が低いんじゃあ!」と分かってる人だと当たり前の失敗を壮絶な数行いました。

 

とはいえまぁ完成です。

機能を一応記しておくと、

RCカー用の6セルバッテリーを対象とした場合、充電電流は0.2Aから6.4Aまでの
0.2Aステップづつです、ただ、あこぎな技を使えば7Aまで流せます。
カット方式は、まずデルタピークカット、温度検出、最高電圧、時間とあります。
またトリクル充電あるなしとその時間、電流も設定できます。ありの場合、
充電終了後、1分後に設定どおり始まります。

「プロジェクトDについて語ろう」

プロジェクトDなどという恥ずかしいの考えてしまったので、少しデルタカット方式に
ついて書かせてもらいますが、これって要するに過充電してバッテリーが
”逝かれて”しまって電圧が落ちるの検出するのだろう?可能な限り
温度検出でやったほうがいいです。ちなみに今回私の付いてる
温度検出は温度上昇率でないため、どれくらいでカットするかは経験からの
値がいります。ただ、これでも十分つかえるはずです。なぜなら対象となるバッテリーは
満タン近くになって初めて発熱しだすためそれを検地すればいいのですから。

まぁ、これからもっと使用してみて不具合があれば修正していきたいとおもいます。

よって、とりあえず、

CASE CLOSED!

 

 


 

「俺達のモーターチェッカー」編

例によって、私が540モーターレースに出ていた時、同じクラスに出ている人と少し
話をしていて、すこしその人のピットを見せてもらっていた。そのとき彼が自分の収納
ボックスをさらりと開けた時、私は見て待った!

20個はあろうかというモーターが並んでいるのを、

すごすぎる、RCカーをやっているとこういうのによく出会ってビビルがすごいものである。
なぜモーターがいくつもあるかというと、時と場合によってモーターの回りが違うからなのだが、
まぁそれは俺にも分かる、しかし、どのモーターがいい状態なのかを知るには、、、

 

「回転数をふと知ってみたくなるものなのです・・・」

モーターの回転数を計測する装置、いわゆるモーターチェッカーは各メーカーからいろいろ発売
されています。これらのホームページを参考にして自作してみました。

まずは、モーターの回転数を知るのですが、何せ高速に回るモーターです、果たして
そんなのを知る方法はあるのか。例によって日本橋のシリコンハウスに行って店員に聞いて
押してもらったのが、モーターの軸に金属製のギヤを付けてその近くにセンサーを
近づけると、磁力だかなんだかの変化が生じて、ギヤの1歯1歯ごとにON/OFFを
教えてくれるらしいものなのだ。おいおい、マジかよそれ?歯の1つ1つが分かるなんて!?

すごいとは思うが、歯の数かぞえてもしょうがない、モーターの回転数が知りたいので、
んで、結局は赤外線を発してそれを鏡に反射させて回転させるというあれを使う事になった。

モーターの軸に鏡みたいなのを取り付け、ある方向から赤外線を当てる、鏡がこっちを
向いてると反射され受光センサーが受光し、1回転を知るという仕組みだ。

しかし、

高速で猛回転するモーターをこんなん判別できるのだろうか?

さらに、しかし、
とんでもない事が分かったのである、それは

たとえ1分間2万回転のモーターでもマイコンから見ればかなり遅い!

ということなのです、例えば

1分間で2万回転だと、1秒で333回転、1ミリ秒(千分の1)で0.333回転
つまり、1回転するのに3ミリ秒、PICマイコンの1動作は1マイクロ秒(百万分の1)
が単位になってるくらいだから、相当にモーターの回転は遅いことに気付いてしまった。

もう何度もPICマイコン工作はやっているので開発のパターンみたいなのが出来てきた。
まずは、PICを動かす5Vを作る為の部品を載せ、PICマイコンを載せ、LEDを載せる。
それで、とりあえずPICマイコンが動くかをLEDの点滅で調査、そして今回はLCD(液晶表示板)
を載せて表示チェック、これで第一段階終了。

そして、最近は文明の利器をうまく使って配線を行うようになった、PCBEという
フリーウェアの配線図を画くソフトなのだが、これでかなり楽&綺麗な配線が出来るようになった。

本来のPCBEの使い方とは違いますが、赤線がユニバーサル基盤の裏で、
緑色が表へのジャンプ、黄色と紫が何らかのパーツを表します。

今回の開発で新しいチャレンジはなんと言ってもPIC用Cコンパイラ(CCS)です。
結構いい値段したはず。C言語でPICマイコンが開発できるという代物ですが、
所詮はPICなので結局コンパイラとPICをおもんかばってやらないと駄目で、
PICアセンブラを想像しながらプログラミングしていきます。とはいえ
かなり楽なんですが、やっぱり容量がでかくなり、感覚的にアセンブラの3倍
くらいの気がします。

本来機能としては、

○モーターの回転数を1分間当たりで出す。
○モーターを回す電圧を調整できる。
○モーターに流れる電流を計測できる。
という、当たり前機能のみです。

おまけの機能
○モーターへ出力するコネクタをバッテリにつなげれば充電できます。
○慣らし運転にも使える。

主要パーツは

○PIC16F819 アナログ入出力付きの優れもの、F88には少し劣るらしいが。
○2SJ200 世間ではパワMOS等はNチャンネルがデフォルトらしいが、
俺が使うのはいっつもPチャンネルのこれ。

「グラウンド配線は太くすべきものなのです・・・」

さて、例によって例のごとく今回もへんてこな現象、に悩まされた。
毎度毎度の事ですが、、、。上のようなかなり出来上がってきた状態の時、
単にモーターを回し続けていた時、なんとPICにリセット信号が入ったように
瞬間死んでしまうのです。

うわぁああ、なぜだぁああ!と思い探したところ。
モーターからグラウンド(0V)に繋がる配線1本にPICのグラウンドなどが
繋がっていたのです、モーターは高速にON/OFFされ、逆起電流などという
得たいの知れない現象が起こるので、0Vが0Vになっていないのが原因だったのです。

多分・・

んで、PICのグラウンドは別に配線を引いてみたところ綺麗さっぱり変な現象が
消えました。

その他に、C言語コンパイラ開発なので容量の足らなさに苦労した。

これが、完成品です。RCスポーツの雑誌でモーター回転数が載っていたので
それを資料に回転数を調べたところ、まぁ、俺のモーターならこんなもんだろうという数字が
出て納得です。540モーター、7.2Vで1万8000前後かな。

作ってみての感想ですが、これって充電器やスピコンと構成が全く同じです。
特に充電器とはパーツや配線は全く同じで、以前の自作充電器との違いは
パワMOSの数とフォトセンサがあるか無いかの違いです。

さらに、僕はモーターを2,3個しか持ってないので、数ある中から調べて選ぶという
本来の機能より慣らしマシーンとしてばかり使っていますね。

 

 


 

復活のその他のコーナー

 

同人活動を停止、というか多忙で余儀なく停止していたが何とか復活したい、
んで、とりあえず手始めに俺の趣味で色々やらかしている
その他のコーナーからちょっと始めてみたい。

やっぱ、ある程度更新癖をつけないとね〜(^o^)

でもって、始まりますのは・・・

復活の半田ごて、復活のゼロプレッシャーソケット、復活の秋月電子さんありがとうございます・・・

 

俺たちの電子工作

VGAコントロール編

帰ってきたマイコンいじり!お久しぶりです。

でも、マイコン電子工作って目的がモチベーションを決めるんだよね。
こういうのがやりたい、というのがあって初めて根気が出てくる。

ご存知の通り、私こと徳蜜満は毎年(最近はそう言えなくなったが)の如くX68kパソコンの
イベントに出ているのだが、いい加減新しいネタとか無いものかというがこのところの
悩みのタネだった。出来れば会場に持っていってそれなりに一目を引く何かが
出来れば嬉しい。

で、マイコンで何か出来ないかと色々考え色々紆余曲折色々妥協色々決断色々ググって
出来る出来ないかの情報収集を集め、

ちょっとやってみたろうかいのう、

という今回のネタがVGAコントロールで普通のLCDモニター
に何か表示させて、出来れば何かゲーム的なのを表示させて

なんか遊べへんかいのう

というのがこれ、

VGAモニターをマイコン操作で何か遊んでみよ〜!!

 

マイコンといっても私が使えるのはPICマイコン、しかも秋月さんのリリースしているPIC
ライターでカバーしてるのしか出来ないのでPICマイコンでも上位の凄いPICマイコンは
使えない・・・、でもまぁ例によってVGAコントロールに向けて

ググって情報収集(コピペパクリネタ探しとも言う)だ〜!

 

「VGAとはなんぞ!」

一応説明しておくとVGAというは事実上の標準のモニター出力方法です。知ってる人は知ってると
思いますがよくブラウン管TVの表示方法でブラウン管の奥からレーザー光線?みたいなのが
画面に向かって左上から横に一画面分ささっーーーと色付きで描画していき
一段下がってまた一画面分横に一ラインささーーーと描画し、最後に
一番下の一ラインを描画したらレーザー光線の先っぽが画面右下から左上に
ささささーーーと動くのを繰り返すあれだ。

でも今ブラウン管モニターってないでしょ!?というのはその通りなのですが、
正直俺はよく知らないがこの描画方式が便利すぎて凄すぎる為か
このやり方で出力すればブラウン管CRTディスプレイでも液晶LCDでも
これできっちり映るようです。

んで、ググって調べた結果、モニターに何かを表示するにはかなーりのRAMと
動作速度が必要なようだ。というかPICでは結構パワー不足。

ちなみに640*480ドットの今ではかなりダサい目の解像度だと・・・

まず、一画面描画分の時間、つまりレーザー光線が左上からささーーと
動いてまた左上に戻ってくる時間は60分の1秒、

つまり1秒間に60回

PICは基本、4MHzクロックで動かした場合、1MHzで1命令を処理します。

これは1秒間に100万回です。

「余裕ジャン!」

と思う無かれ、横1ラインの時間は31.469kHz、で
1秒間に3万1千回

「余裕ジャン!!こっちは1秒間に100万回だぜ、ちょろい!!」

と思う無かれ〜、これを1ドット分640分割(実際には描画され無い両端部分もあるので
もちっと多めで計算する)。だと

25.175MHz

PICの1命令だけで1MHz・・・、

1命令やってるだけで25ドット分飛んで行きます・・・><;

もうこれでカッコいい640*480ドット
PICの
スペースハリアーをやってみた
とかPICで
アイドルマスター
やってみたは
不可能になりました。

しかし、まぁ綺麗さを抑えても何かそれなりの物を作ってみたいので色々探して基礎になりそうなのを
発見、PIC16F84AというPICのもっとも代表的なのでVGAを操作しています。その
サイトが

こちらです。

簡単なVGA操作が乗っています。

「って、英語ジャン!英語がわかるの?徳蜜満ってひょっとして・・・


(代表的英国人の図)

英国人なの!?」

と思う無かれ〜〜〜。

 

「今回の新兵器」

今回の電子工作では例によって新兵器が登場します。前から気になっていましたが
遂に買ってきてしまいました。それがこの・・・

ブレッドボードです。

 

 

 

 

 

俺たちの電子工作

VGAコントロール編

昔の偉い人は言いました「無知の知を知れと・・・」

※前回の記述で25MHzで云々は横の走査線の一本の時間で、1命令1MHzの
PICだと25回しか命令が出せないという事でした。1ドット25MHzと勘違い
してました。

 

「今回の新兵器」

今回の電子工作では例によって新兵器が登場します。前から気になっていましたが
遂に買ってきてしまいました。それがこの・・・

ブレッドボードです。

このブレッドボード、なんだかめんどくさい、ユニバーサルボードに半田付け
したテストボードのほうが良いのではないかと思っていたのだが・・・

買う前にちょっとネットで使い方調べて、買って手元でいろいろ
眺めて、意を決しパーツをペコペコと挿していった結果・・・

「簡単やがなこれ!」

そしてこういう場合必ずやるのがやはり

LEDチカチカ

にチャレンジです、なんですが拍子抜けするくらいに
簡単に終了。

 

「驚愕の事実!俺は知らんかったんや〜」

んで、VGA表示用のブレッドボード配置は簡単に出来、VGAケーブルとの接続コネクタも
配線し、遂にプログラムに入る。

まぁ、例のサイトのコピペなのだが一応プログラムを読む、
読む、読む・・・。

だが、あるところが非常に気になった、それはいわゆる
Vブランク割り込みという奴で、ちょっとゲームプログラミングを
かじった人なら必ず知っている言葉だ。

モニターの電子ビームが横の走査線を上から下に描画してゆき最後に右下から
左上に戻るときにプログラム側に

「割り込みかフラグ立ち」

として教えてくれるあれだ。

 

俺はてっきりモニター側が描画のタイミングをこっちに指示を出してくれて
プログラムはそのタイミングにあわせて各ドットの色データなどを転送
するものだと思っていたのだが・・・

プログラムを読んでいくとどうも違う、こちらからVブランク信号を送って
いるようなのだ。

「???んっんっ、、、???なんだなんだ」

俺は悩んだ、Vブランク割り込みの信号をこっちから起こす!?

「そんなバカな!」

最初、この参考のプログラムが特殊なやり方をやっていると思ったのだが
色々ネットを彷徨い真実を捜し求めた結果、
こちらからVブランク信号は出すようなのだ。

「し、知らんかった・・・俺は無知だった〜 ToT」

 

そしてソースコードもコピペ完了し実行してみると・・・

してみると・・・

ちゃんと画面に映りました!

ちょっと表示が歪んでいるところもあるけれど十分

「うぉおお〜」

と、最初表示された時に叫ぶのには十分でした。

 

「俺たちのVGA」

とまぁ簡単な表示だけどなんとかVGAモニターに表示させるのは出来た。

しかし、これでこの先どうしようかのう・・・

やはり、何か形に残したい・・・

でもとりあえず

 

 

 

 

俺たちの電子工作

VGAコントロール編

 

前回としめくっておいてなんだけど

いそいそとVGAゲームにチャレンジしておりました。

色々なサイトをうろうろしどこまで信用できるのか?あてになるのか?などの
疑心暗鬼の中でなんとか表示できるようになりました。

さらに2人用のみだけど歩け歩けゲームを作りました。
しかも、ちゃんと音がでます。しょぼいが音楽的なBGMがあります!

 


一応ゲームパッドの様なものも作ってみた。

 

例のサンプルプログラムを参考に作っていたのだけど、あれって簡単にPICでVGA表示できるのは
すごいのだけどやはりはしょっている部分が多くて、実際表示すると同期ずれで画面が
ちょっと歪むんだよね。

しかし!

最初はそれがどう致命的に間違っているのか判らず、こんなんで良いんだろうと
作っていたのでなかなか苦労した。

しかも、今の表示モニターはおよそ全てLCDモニターで、これはブラウン管モニターや一般的に想像されるような
ブラウン管奥から電子銃で画面左上からササーーーっと表示していくのではなく、それを擬似的に表現しているので
、LCDモニターについている制御装置さんのタイミングにあわせてあげないといけない。
でも、きちんとあわせると綺麗に表示される。

結果的に俺的プログラムは

http://tinyvga.com/vga-timing/640x480@60Hz

が一番参考になった。

 

「PIC16F88 & VGA」

まず、Hライン時間は均一にしてしっかり525回信号を出しましょう。
均一にしつつV回帰信号もしっかり出しましょう。

という事で考えてみれば当たり前なのだが最初のサンプルプログラムは不幸にも
その辺はしょっていた。しかし俺はそういうものなのだろうと思って開発していたので
結構苦労した。

さらに、H時間を均一にするといってもこれが大変、なんとか全525ライン
全てマイクロセコンド単位で同じに出来た。

因みに、

俺プログラムでHラインは

31.8マイクロセコンドに統一、

マニュアル的には

31.777557100298が正解。

ちょっとずれてます。1マイクロセコンドは1秒を百万分の1した単位です。

 

一画面トータルにかける時間は

俺プログラムで

16.695ミリセコンド

マニュアル的には

16.683217477656ミリセコンドです。

ミリセコンドは1秒の千分の1です。

 

これのタイミングにあわせないといけないのだけど、俺のPICは0.2マイクロセコンドが1ステップ
なのでこれ単位でしかあわせられない。だから31.777の様な端数には合わせられないんだよね。

中には、31.8と31.6を交互にだせばいいんでね?

と思う方、いるとおもいます。

んで俺もやってみたが・・・、駄目でした。

 

LCD制御基板さん的には、かかる時間はずれていてもまずはタイミングは同じにしてくれ
というのが正しいようです。

で、なんとかタイミングを統一したのですが、Hの0.1マイクロセコンドがちょっとずつ
ずれを大きくして1画面単位でもずれがでて結果・・・

画面上の5分の1くらいがちょっとゆがみがあるのが取り除けなかった。

もちょっと頑張れば完璧になるかなとは思いましたが、そう致命的にはないので
今回はここまでとしておきました。

 

 

「PICで音楽がなる!」

VGA参考の為にニコニコ動画をうろうろしているとなんと、PICで音楽を鳴らしている人が
いるではないか!

http://www.nicovideo.jp/watch/sm8078215?ref=search_key_video

しかもゲームで!!

で、やはりグーグル先生に「PIC スピーカ」で検索をして色々参考にした結果
簡単に音を鳴らすことが出来ました。

しかし!

今回のVGA制御では処理速度を速くしないといけない、んで、最速の20MHzで動かしている。
しかしこれだとタイミングが速いので高オクターブの音しか作れない><;
でもまぁ仕方ない、それなりに音楽的には聴こえる。


ギター用チューナーでチェック、スピーカーを直接挟んでます。

 

 

「PIC−BOX360」

さて、なんだかんだでブレッドボードで完成。専用基板を作ります。

回路を設計します。ユニバーサル基板で配線を考えるのですがこれが結構難しい。
基板の裏にメッキ線をはわし、クロスするところは基板上面をはわす。

 

で、完成したPIC用ゲームマシーン、名付けて

PIC−BOX360でーす!

 

\ ピクボックスサンロクマル デ〜〜〜ス /

/ ナノデ〜ス \

 

 

「歩け歩けゲーム」

作ってみました!

ゲームプロがラムの初歩の初歩。

タイトル画面

 

ゲーム中です。

音楽もゲーム中に鳴り、だんだんテンポが速くなります。

見て判りますが、1ドットがでかいです。32*24ドットです。
VGA640*480が分け合ってこのドットサイズです。

本当はPICでやってみたアイドルマスターとかスペースハリアーとかやりたかった
のですが・・・

 

 

「完成について」

そもそもPICでこういうのは基本無理な話で、当初はVGAが表示されればそれで良いと
思っていましたが、まぁなんというかゲームとして作りました。

やはり、なんでも完成させるのに持っていくのは大変ですが。

やり終わった感が気持ちいいですね。

いずれ、ようつべやニコ動にゲーム画面をアップしたいと思います。

これで俺もニコニコ技術部にエントリーだ!

 

PIC16F88&VGA、はこれでおしまい。

 

 


 

 

俺たちの電子工作

- DE0&FPGA編 -

また・・・

また電子工作編です・・・。

一応このホームページは俺の自作ゲームの部屋なのだが
相変わらず電子工作にいそしんでおります・・・

以前、ゲーム開発に復活すると言ったのに・・・
今でも新しいリリースを待っているのに・・・

この様な奈良鹿ゲームユーザーの声が徳蜜満氏には聞こえないのだろうか???
彼の耳に届かないのだろうか???

 

そして遂に、
平成X年○月X日

西成区、徳蜜満氏自宅前にて・・・


ピンポーーーーン、ピンポーーーーン」
「徳蜜満さーーん、新作どうなったんですか〜?」
「ピンポンピンポーーーン」
新作作るって言ったでないですかぁ〜!?

ピンポンピンポンピンポーーーン

「ガラガラ・・、うっせーな!
朝からなんだよ!」

なんと徳蜜満氏は耳が聞こえない人物だった!

 

- 必殺並列処理! -

最近ちょっと分けあってDE0なるものを購入した、FPGAというあれである。
FPGAとかCPLDとか大体は知っていた、以前にトランジスタ技術の
オマケに付いていたCPLDでちょっと遊んだ事があったからなのだが・・・

そのときの印象は電圧のON,OFFをAND演算やNOT演算して
結果がでてくる・・・

なにそれ?そんなんありがたいの?

だったのだが・・・。

ご存知のように前までにPICマイコンでVGA処理をしていたが
マイコンで直接操作するにはあまりに速度がちょっと足りないし、表示処理の
負担が多き過ぎてゲームの部分が無さすぎる。
もっと格好よく映像処理をやりたい、という希望がモクモク作戦的に

私に沸き起こっていた。

なんせ前回のPICのVGAは32*24ドットという超絶解像度だったので、
やっぱり640*480で映したい。

 

で、色々考えましたが色々不都合が考えられた、例えば

「超速いマイコンを選択する」

個人の入手できるマイコンだと今だとRX62nというのがなかなか頑張っている。
しかし、ちょっと速い程度なのでVGAの負担の重さは変わらず。

「専用のグラフィックチップをマイコンで操作する」

本来これがベストなのだが、グラフィックチップって一般には入手しにくいん
だよね。AG3というパチンコやパチスロなんかに積んでるのがあれば
いいんだけど、個人には販売して無いし、チップを制御する方法は
とても難しい。俺はハードの知識は初心者レベル><;

「入手可能な速いマイコンを二つ繋げて一つはゲーム用、ひとつは
VGA処理用にする」

入手が可能で、ハードウェア実装も可能だとするとこれが
ありえるかも。実際今回のDE0/FPGAが無ければ
こちらを選択していただろう。

「ラズベリーパイとか小型PCを使う」

買ってきてそのまま使える・・・、まぁPCですからねぇ。
作る面白さがないから駄目。

 

んで、あるとき雑誌か何かを読んでいるときにDE0を発見したのだと思う。
評価用という実験向けのボードとして販売されているのだが
基板にVGA端子が付いていた、つまりこの基板上で何かすれば
VGA表示が可能という意味だ。

でもって、DE0やFPGA、CPLDについて色々調べていくうちに

これはすごい!

と思うようになった。そして遂に1万5千円出して入手した・・・

このFPGA、ご存知の方なら説明不要だが
ロジック回路を言語の記述で作成し、FPGAの中に好きにつくれるのである。

しかも、俺が一番気に入っているのがこのFPGAの中にCPU
入れてしまうことが出来るのだ。普通に俺がやるような
記述言語で・・・

んでFPGA内のCPUからFPGAの自分で設計した回路に指示ができる・・・、

俺はFPGAをリリースしている会社、アルテラザイリンクス
HPやFPGAの説明を読みあさっていた・・・

 

すげーよこれ!

 

CPUが作れるんだってよ!

 

ハードウェアも自作出来るってよ!

 

・・・まぁ私もこの辺の経歴は長いので最初の凄さ説明の受け売りには
必ず何かどこかに落とし穴があるのはわかってはいるが、それでもかなり凄いl。

そして、FPGAやCPLDを特徴を現すキーワード

並列処理

というのをかなり期待していた・・・。

 

続く・・・