...

PSコントローラを使った 赤外線送信機の製作

by user

on
Category: Documents
15

views

Report

Comments

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
Fly UP