※この記事は2008年時点のものなので、2018年現在ではより適切なマイコンが存在していると思われます。



週末になると風邪引いてる気がする。
ツーリングとか遊び誘われても風邪で行けないってことがしばしば。
ここ2ヶ月で3、4回あったような…。
明日もダメそうだな~。
気持ちは元気なんだけど 笑



ということで、パワーは内なることにぶつけ今日はまたマニアックな日記を書きまくりたいと思います。



この前日記に書いたPICによるLEDの制御計画が着々と進行中です。
この前実験に使っていたのは、「PIC16F84」という、最も使いやすく入門的と言われているPICでした。


12962922_429984142

「PIC16F84」



PICにはビット数というものがあって、「PIC16F84」のビット数は8ビット。
ビットは2進数なので、0から数えていくと、

0、1、10、11、100、101…

と、各桁が0、1とカウントした後に繰り上がっていくわけですが、8ビットの場合だと二進数の8桁なので、
00000000~11111111の256通り(2の8乗)のパターンを作り出せます。

各パターンの順番とか、速さをC言語などでプログラミングして信号を操作するのがPICによる制御というわけです。



今回目標としているLEDの制御の場合だと
0をLEDオフ、1をLEDオンとするならば

<左ウィンカー>
11110000 と 00000000 の繰り返し

<右ウィンカー>
00001111 と 00000000 の繰り返し

(※左四桁を左ウィンカー、右四桁を右ウィンカーに割り当てた場合)

ということになるんだけど、これじゃあ普通のウィンカーと変わらないので、

<左ウィンカー'>
00000000 ↓
00010000 ↓
00110000 ↓
01110000 ↓
11110000 ↓
       (また上から繰り返し)  

のような感じにプログラムすればモーションが付けられます。

ちなみにこの前の実験の動画ではオン、オフ(2通り)するLEDを4つ(4乗)使用していたので、実質4ビット分しか使ってませんでした。
0000~1111(2進数)の16パターン(2の4乗)を、C言語によって順番や速度などを制御してたわけです。





規則的なパターンから不規則なパターンまで、ある程度思いついたパターンをC言語で作れそうになったので、あとは左右各ウィンカー、ハザード、ブレーキランプ、ポジションランプ、ウェイクアップモーションについてひたすらイマジネーション…。
もちろんキップが切られない程度も見極めないと 笑


次は実装の方法について調べる必要があります。


●実装にあたっての4つのポイント

①12V→5Vへ
まずPICが動作する電圧は5Vくらいなのに対して、バイクの電圧は12V。
5Vを生成する必要があります。

色々方法はあるみたいだけど、三端子レギュレータを使って変換しようと思います。
ただこの場合、入出力間の電位差はそのまま熱にして捨ててしまう方式なので、放熱板が必要になってくるらしい。
発振防止の電解コンデンサも必要になる。


②増幅回路
PICが操れる電流の許容値はせいぜい数mA~数十mAなので、これではPICの足一つにつきLED1つくらいしか付けることができない。
そのままだと8ビットのマイコンで、左4個、右4個のLEDしか制御できないということになるので、いくらなんでもそれは寂しすぎる。

そこで、もっと大きい電流を制御できるようにするためにトランジスタによる増幅回路を使います。
これによって、PICの微弱な電流で何倍もの電流が制御できるようになって、LEDもたくさん使える。計算が必要だ~;
トランジスタと聞いて真っ先に思い浮かんだのはトランジスタラジオだったけど、これもトランジスタによって低消費電力化したものだったようです。


③ウィンカー点滅の入力信号
左右各ウィンカーの配線から点滅時の入力信号を取ってPICに入力した場合に、ちゃんと動作するのかがわからない。
要は一定でないオン、オフを繰り返す信号を受け取った時に、PICのプログラムはどうなるかってことなんだけど、プログラム側の点滅周期はリレーのそれとは同じではないから不規則になったりしないかを心配してます。

ウィンカーポジションの電源がオフになったらウィンカープログラムが動くようにする手もあるけど、わざわざフロントからテールに配線伸ばすのも面倒。
プログラム側で、チャタリング処理(短時間でのON/OFFは処理しないようにする方法)とかを使うのか、それとも他にいい方法があるのか色々調整してみる必要がありそうです。
 

④16ビットマイコンの使用
PIC16F84みたいな8ビットマイコンだと、同時に処理できるのは8つの信号にとどまる。
さっき描いたウィンカーの点灯パターンだと左4セクター、右4セクター分しか制御できないことになる。モーションをつけるにしても、各4セクターじゃあカクカクしてしまうような気が…。

左右を1つのマイコンで制御しようとしないで、左右各1つずつ使えば
右8セクター、左8セクターってこともできるけど、左右が連携する動き(左から右へ入るモーション等)をする場合にPIC同士を同期させる方法を知らないし、あるのかもわからない。

そこで、16ビットマイコンである「PIC24F」の導入を考えています。


12962922_525996170

「PIC24F」


16ビットなので、二進数で16桁の信号の制御が可能。
0000000000000000~1111111111111111
の65536通り(2の16乗)のパターンを制御できるので、左8セクター、右8セクターと割り振れる。
かなりモーションの幅も広がりそうです。
PIC16とそんなに使い方変わらなそうだし、グレードアップするには丁度よさそう。

ただ自分が今もってるPICライターだとパソコンからPIC24Fへ書き込めないので対応してるやつ買わないと。



ということで現時点ではこんな感じ。
なんとなく見えてきたかな?
色々調べまくってやっと計画が固まってきたので部品調達します。

PICってのは面白いもんで、LEDだけじゃなくてモーターとかスピーカーとか色んなもの制御できます。
またさらにやりたいことが増えてますます。体が足りなくなるような予感
楽しいからいいけどね。


取りあえず風邪治さないとな~。