ついにマイコンに手を出してしまった。
ラジコンのね、電飾をね、マイコンでね、制御してあげるとかね、そういうことをしたくなったのね。だってね、買うとね、高いんだもの。作るとね、安いんだもの。
なんとなく昔の自作パソコンの雰囲気だ。今はパソコン自作するより完成品買った方が安いけど。
パソコンの自作より敷居が高いと感じるのは半田付けが必要なところか。半田付けってあんまりしたことないし、そもそも電子回路とか全然読めないし書けない。だかしかし簡単な回路だったら記号勉強すればなんとかなる。半田付けも練習すればなんとかなる。
マイコンのプログラミングは... まあ、なんていうか、正直余裕ッス。
ってことで、手を出したマイコンは「PIC」ってやつ。特に 8 ピンの PIC がラジコンの電飾制御には良く使われるようだ。8 ピンの PIC はとても小さいのでラジコンにも搭載しやすそうだ。PIC12F629 や PIC12F675 なんてのが福岡でも入手しやすい。PIC12F675 はA/D コンバータ付きで高い。A/D コンバータ使わない場合は PIC12F629 で十分と思われる。
PIC12F683 ってのもあって、これは 629/627 よりメモリも多くて若干高性能なんだけど福岡では売ってなかった。でかいプログラム書くようになったら通販で買ってみようかと思うが、まず最初は160円で買える PIC12F629 で遊んでみればいいと思う。
まず、Web読んだり本読んだり色々情報集める。本数冊買った瞬間自作よりも完成品買った方が安くなるとか考えちゃだめだ。そんなこと考えたら先に進めない。
PIC にパソコンからプログラムを書き込むにはなにやらライティング用のハードが必要らしい。PICkit3 ってのを4,500円で買った。この時点で完成品買った方が... とか考えてもだめだ。考えたら先に(ry
PICkit3 ってのを買えばそれに PIC12F629 挿してすぐにプログラムを書き込めると思っていたら... ソケット部分は別途必要らしい。ネットに転がってた回路を見て以下の基盤を作った。8ピンしか使わないから8ピンが書き込めればいい。
さて、プログラム書こうか。どんなプログラムを書くかというと... とりあえずね、F104 に付けてる点滅する赤いリアライトをプロポの 3ch 目(AUX)でオンオフさせたいと考えた。
ってことで受信機の仕様を調べる。受信機にはピンが3本ある。+と-とSとなってる。+と-はそのままだ。Sってなんだ? どうやらSからパルス信号が出てるらしい。パルスの幅で HI と LO を見るらしい。
このパルス信号、サンワとフタバで微妙に違う。が、違いが微妙なので AUX でオンオフ判定しようと思うくらいならサンワとフタバで同じプログラムができる。
サンワの場合、パルス幅が1500マイクロ秒(以下 us)でニュートラルだ。フタバは 1520us らしい。微妙な違いだ。とりあえず、AUX でオンオフ判定したワケなんだから、パルス幅が 1600us 以上でオン、以下でオフ、となるコードを書くことにした。
さて、PIC12F629 は 8ピンだ。うち 2ピンは+と-(+が1ピン目で-が8ピン目だ)で使うので、残りの 6ピンを入出力で使うことができる。この入出力ピン(I/Oピン)のことを GPIO っていう。PIC12F629 の 2ピン目~7ピン目を GPIO 5~GPIO 0 と呼ぶ(ピン番号と GPIO番号が逆になっている)。この辺は 8ピンの PIC で共通らしい。
今回の AUX でオンオフするプログラムでは、GPIO 3(4ピン目)で受信機のS、パルス信号を入力し、GPIO 2(5ピン目)でバックライトに向けての出力をオンオフしてあげる。
さて、問題はプログラムを何で書くかだ。ラジコンの電飾用のプログラムはアセンブラが多いと思われる。実際、今回作る程度のプログラムだったらアセンブラでも簡単に書ける。だがしかし、普段高級言語を使ってる身にとっては、アセンブラは非人道的な言語だと思えてしまう。
コンパイラの最適化はあまりされてないようだが、PIC 用のフリーの C コンパイラもあるようなので、ここは C 言語を使う。ラジコンの電飾制御程度のプログラムだったらアセンブラでメモリ節約... とか考えなくてもいいと思う。他人が書いたアセンブラのコードも参考にしたいのでアセンブラも一応勉強した。が、基本 C 言語でやっていきたいと思う。
ってことで書いた C 言語のソースコードは以下
sw3ch_c.txt
元々がアセンブラで公開されていたコードを C 言語に移植したのでなんかちょっと変なコードになってると思われる。が、とりあえず動いたのでよしとした。そのうちプログラム変更すると思われる。オフのときはスリープにするとかできないんだろうか。その辺を調べてみよう。
が、とりあえず完成品を作ってみたくなったので以下の基盤を作って F104 に組み込んだ。
この図では受信機から来る 6V をそのまま PIC12F629 に入れてる。PIC12F629 の動作電圧は 2V ~ 5.5V らしい。5V で使うのが理想的とかなんとか。だがしかし今回は 6V の電圧で動かしてる。だって、接続する F104 のバックライトが 6V 前提なんだもん。5V とかだったらおそらく暗くなっちゃう。6V で PIC 動かす基盤の例もあるので、その辺はあまり気にしないことにした。
とりあえず初 PIC 作品は無事完成。プロポの 3ch目(AUX)で無事バックライトのオンオフができるようになりました、と。
次はツーリングカー用の電飾基盤を作ろうと思っている。3ch目でフロントライトとリアライトをオンオフできて、スロットルを監視して LO だったらバックライトをオンにしてあげる。つまり、TH と AUX の 2ch のパルス信号を監視する必要がある。これをアセンブラで書くとしたら(自分は)気が狂う。が、C 言語なら余裕と思われる。なので C 言語で書く。
ちなみに、マイコンに手を出した僕を見て奥さんは「バカじゃないの?買った方が安いじゃない。」って言ってた。どうも女には理解ができない世界らしい。なのでこう説明してあげた。「何いってんだよ。高いか安いかじゃないんだよ。楽しいか楽しくないかなんだよ!!」
最近のコメント