Comments
Description
Transcript
PSコントローラを使った 赤外線送信機の製作
第 3 章 PS コントローラを使った 赤外線送信機の製作 第 3 章 ジョイスティックはスプリングで戻らないように改造 ここではPIC16F84Aを使用 調整用トリマ 赤外発光ダイオード バッテリは外付け ゲームに広く使われている,プレイステーション のアナログ ・ジョイスティッ ク ・コントローラを改造して,PIC16F84A を使った 4 チャネルの赤外線送信機を作 ります.Futaba 製の送信機と信号形式に互換性をもたせてありますから,市販のラジコ ン・サーボや,スピード・コントローラを使うことはもちろん,本書で製作する赤外線受 信機と組み合わせて,インドア・プレーンをリモート・コントロールすることができます. このアイコンは,章末に用語解説があります 第 3 章 PS コントローラを使った赤外線送信機の製作 3.1 使用するコントローラ プレイステーションに使われている PS コントローラにはいろいろな種類があります.ここではソニ ー純正の PS-one(SCPH-110)というアナログのジョイスティックが二つついたものを使っていますが, PS-2(SCPH-1200)コントローラでも問題なく使えます.また,ほかの機種でもジョイスティックの可 変抵抗器に 8k Ωから 10k Ωのものが使われていれば問題なく使うことができます(写真 3.1 参照). プレイステーションのジョイスティックに連動している可変抵抗器は,基板上で 4 個並列につながっ ています.分解する前に抵抗値を測定したところ 2kΩ台の抵抗値を示しました. 3.2 赤外線送信機の回路 作成する 4 チャネル赤外線送信機の回路図を図 3.1 に示します. ジョイスティックの可変抵抗器と直列につながっている 5kΩのトリム・ポット(半固定抵抗器)R 9 , R 10 ,R 11 ,R 12 は,ニュートラル調整に使います.0.047μF のコンデンサ C 4 ,C 5 ,C 6 ,C 7 には温度特性 の優れているマイラ・コンデンサ(フィルム・コンデンサ)を使います.写真 3.2 に外観を示します. PIC の発振器には 4MHz のセラミック発振子(セラロック)Y 1 を使います(写真 3.3).ジョイスティッ クに組み込まれている押しボタン・スイッチ(S 2 )を使って,送信機から送り出す赤外線の変調波を切 り替えられるようにしてあります. 赤外発光ダイオードのドライブに使われている FET(Q 1 )は表面実装タイプの IRLML2502 を使って 写真 3.1 PS-2 コントローラ コントローラに使われている二つのアナログ・ジョイスティックを利用して,PIC16F84A で市販のラジコン送信機と互換性のあるシ リアル・パルスと,赤外線を変調するための出力を作り出す.コントローラで使用するのはケース,2 個のアナログ・ジョイスティッ ク,ジョイスティックを支えている基板,それと LED.それ以外のパーツは取り外してしまう. 58 22μ 0.1μ 10k 1 ジョイステックの VR の位置を読み 込む 3 4 R2 U2 RA2 RA1 RA3 RA0 RA4 OSC1 ss CH1 6 CH2 7 CH3 8 CH4 9 5k 18 220Ω D19 17 16 Y1 4MHz 15 MCLR OSC2 5V V 14 R 10 R 11 5k 5k D16 D2 D5 D8 D11 D14 D17 D3 D6 D9 D12 D15 D18 R1 2 R9 D13 R 810Ω C3 D10 R 710Ω 22μ 2 C2 D7 R 610Ω 7.2V or 7.4V +5V 1 D4 R 310Ω 3 C1 D1 R 510Ω SLR932AV-7K or SLR931A×18 U1 78L05 S1 R 410Ω 赤外線出力部 2 dd RB0 RB7 RB1 RB6 RB2 RB5 RB3 RB4 Q1 2SK2961 or IRLML2502 3 13 1 12 11 10 S 2 はONの状態で電源 スイッチ(S 1 )をONに すると38kHzで変調さ れた赤外線が出力され, S2がOFFの状態で電源 スイッチ(S 1 )をONに すると56.9kHzで変調 された赤外線が出力さ れる PIC16F84A R 12 5k S2 R 13 10k R 15 10k R 14 10k JOYSTICK L R 16 10k JOYSTICK R C4 C5 C6 C7 0.047μ×4 図 3.1 4 チャネル赤外線送信機回路図 写真 3.2 送信機に使用するコンデンサ 写真 3.3 4MHz のセラロック 左から,22μF/16V タンタル・コンデンサ,0.047μF/50V マ イラ・コンデンサ,0.01μF/50V マイラ・コンデンサ,0.1μF セラミック・コンデンサ.タンタル・コンデンサは極性があ るので取り付けるときに間違えないように.+と印刷されて いて,足の長いほうがプラスになる.マイラ・コンデンサと セラミック・コンデンサには極性はない. セラミック発振子(セラロック)は圧電セラミックスの機械的 共振を利用したもので,水晶振動子と CR 発振回路の中間の 周波数安定度がある.今回の使用目的には十分な発振周波数 安定度があり,小型軽量で安価なので,PIC の外部発振器と して多く使用されている. 59 第 3 章 PS コントローラを使った赤外線送信機の製作 写真 3.4 リチューム・イオン電池 携帯電話用のリチューム・イオン電池で定格電圧 3.7V,570mAh の容量.樹脂ケースに収められていたが,電池だけを取り出した. 外装はアルミで+電極,はんだ付けできるように電極タブがスポット溶接されている.2 個の電池を直列にして使うので,必ず同じロ ットの新品を組み合わせて使う.電池を重ねるときにお互いの電池ケースがショートしないように,1mm のスチレン・ペーパを挟ん でパックした.充電の偏りを防ぐため,時々 1 セルずつ別々に充電してから Y 型のコネクタで直列にして使う. いますが,ディスクリート・タイプの 2SK2961 を使ったほうが作りやすいでしょう. この送信機は電源に携帯電話に使われるリチューム・イオン電池 を 2 個直列にして使います(写真 3.4).平均消費電流は 80mA ほどと大変少ないのですが,出力に使っている赤外発光ダイオードをパ ルス駆動しているため,瞬間最大電流は 1A を超えているのでできるだけ容量の大きい電池を使いま す.目安として 500mAh 以上の容量のある電池がよいでしょう. また,直列使用するため,同一品種で同一ロットのばらつきの少ないものを組み合わせて使うように します. リチューム電池の充電器と取り扱い方法については第 8 章を参照してください.JST コネクタについ ては第 4 章で説明しています. 3.3 送信機のプログラム ここでは PIC16F84A を使っています.まず電源スイッチが ON になったときに,左側のジョイステ ィックにセットされているスイッチ(S 2 )が ON になっているか OFF になっているかを RA 2 のポートか ら読み込んで,赤外線出力を 38kHz で変調するか 56.9kHz で変調するかを判断しています.2 種類の 変調波を出力できるようにしてあるのは,それぞれの変調波の送受信機を使って,2 機のインドア・プ レーンが同時飛行できるようにするためです. 左右のジョイスティックには,それぞれに 2 個ずつ可変抵抗器がついていて,スティックを上下左右 に動かすことでそれぞれの抵抗値が変化します.抵抗値の変化をパルス幅の変化に置き換えるために, 60 PIC を使って A-D 変換 (アナログ-ディジタル変換)という手法を使っています. PIC のプログラムでは,約 20ms ごとに 4 チャネル分のシリアル・パルスを繰り返して送り出します が,タイマ割り込みを利用して約 20ms の時間を作り出しています. 基本的なプログラミングについては,付録 D の「初めての PIC プログラミング」を参照してくださ い.ここでは,プログラム・ソース ir3857tx4.asm から抜粋して,今回のプログラムで特徴的な ところを説明しています. ● 4MHz の発振回路設定 _ _CONFIG _HS_OSC & _PWRTE_ON & _CP_OFF & _WDT_OFF コンフィギュレーション・ビットの発振回路の設定が _HS_OSC となっています.PIC16F84A には 内部発振回路が存在しません.今回は外部発振回路に 4MHz のセラミック・レゾネータ(セラロック) を使っています.PIC16F84A のデータシートでは 3.5MHz 以上の発振回路を使用する場合に HS モー ドを推奨しています. HS モードより低い発振回路の設定に XT モードと,さらに低い発振周波数の設定に LP モードがあり ます. ● 割り込みの実行番地 ORG GOTO 0 MAIN ; プログラムはここからスタートする ORG BCF 4 INTCON, T0IF ; ; ; ; ; GOTO INTPROC 割り込みがあると,ここからスタートする INTCON レジスタの T0IF ビットをクリアして、 割り込み要因を取りのぞき、再度割り込みができる ようにする.割り込みルーチンの入り口. 割り込みルーチンの実行 今回のプログラムでは,PIC に内蔵されているタイマを使い,タイマ割り込みという方法で,約 20ms の周期を作り出しています.割り込みが発生すると,プログラムは 4h 番地にジャンプします. TMR 0 がカウントしていって,オーバフローする(8 ビットのカウンタなので FFh を超える)と割り込 みがかかり,INTCON レジスタの T0IF ビットに 1 がセットされるので,この T0IF ビットをクリア してから割り込みルーチン INTPROC にジャンプします. ● 割り込み発生時の処理 INTPROC MOVLW MOVWF CALL CALL CALL CALL 0B4H TMR0 ADCNV1 ADCNV2 ADCNV3 ADCNV4 ; オーバフローするまでの時間を約 20ms に設定 ; 各チャネルの VR の値を読むための A-D 変換ルーチンを呼ぶ TMR 0 は 8 ビットなので 0 ∼ 255 までのカウントができます.4MHz の発振回路では 1μs ステップと なるので,そのままでは 20ms のカウントができません. そこでプリスケーラ(割り算器)を使います. 61 第 3 章 PS コントローラを使った赤外線送信機の製作 ● TMR 0 の初期設定 MOVLW B'10000111' MOVWF OPTION_REG ; ; ; ; bit7:プルアップを使用しない bit5:内部命令サイクル・クロックを使用 bit3:プリスケーラは TMR 0 に割り当て bit2-0:1:256 TMR 0 レート プリスケーラを TMR 0 に割り当て 1:256 のレート,つまり 256μs ごとに TMR 0 がカウント・アップ するように設定しています.TMR 0 に 0B4h をセットしていますが, 0FFh − 0B4h = 4Bh となり,10 進数で 75 になります.TMR 0 が 75 カウントでオーバフローするわけです.1 カウントに 256μs かかるので 75 × 256μs = 19200μs,つまり 19.2ms 後に割り込みがかかるというわけです. 一般的にラジコンの送信機ではパルスの送出周期が 15ms から 25ms ほどで,4 チャネル以下の比較 的チャネル数の少ない送信機では 15ms ほどの周期に設定されています.それ以上のチャネル数をもつ 送信機では 20ms 前後の周期で送り出されています.チャネル数が多いほど送り出し周期も長くなって います.19.2ms の周期設定は十分その範囲内にあります. ● A-D 変換(1) ; CH 1 の A-D 変換 ADCNV1 LP11 LP12 CLRF BCF BTFSS GOTO NOP INCFSZ GOTO MOVLW MOVWF BSF RETURN WIDTH1 PORTB, 0 PORTB, 7 LP12 ; カウント用変数 WIDTH1 をクリア ; RB 0 を Low ; RB 7 が High なら次をスキップ ; 時間調整 ; RB 7 が Low になるまでカウント・アップ WIDTH1, F LP11 b'11111111' WIDTH1 PORTB, 0 ch1 ; RB 0 High(充電開始) 6 7 8 9 RB0 RB7 RB1 RB6 RB2 RB5 RB3 RB4 13 12 11 10 PIC16F84A R 11 R 16 図 3.2 チャネル 1 の結線図 62 C4