あれは、いつのことだったか... K田氏より
「センターコンソールレスにしてP/Wスイッチが付けられないので、代わりにオーディオスペースに埋めこむスイッチを作って」
とのリクエストメールが届きました。
基本的にDCモーターの正・逆転制御なので、ちょっと探せば引っ張ってくる回路も見つかるだろうし、簡単な筈。
部品さえ揃えば、正味4〜5日もあれば出来そう。
自分でも面白いお題だと思ったので(←これが重要)、か〜るい気持ちで引き受けました。
提示された仕様は以下の通り。 ...っていうか、何も言われなくてもこちらでも同じ仕様が浮かんでましたから、「提示された」って程のモンじゃないですけど。
ワンタッチ機構を付けるので、マイコン制御とします。
DCモーターは負荷が重くなると電流が増えますので、負荷電流を監視すれば上がりきり・下がりきりのモーター停止が検出できます。
その為に、ADC内蔵のワンチップマイコン PIC16C711 を使うことにしました。
DCモーターをドライブするのは、メカニカルリレーでは大きくなるので、POWER MOS-FETを使うことにします。 幸い、全く同じドライブ回路の例がトランジスタ技術1999年5月号に、ラジコンカーのサーボアンプとして掲載されていましたので、基本的にそれを真似します。 ←実はこれが落とし穴だったりする。
基本回路図:PWcont-cir.pdf
上半分がマイコンによる制御回路で、下半分がトラ技からパクったモーターの駆動回路(笑)。
赤で描いたデバイスは、トラ技からコピーした当初の回路には無かったモノですが、それが無いと具合が悪いということが判明して後で追加したモノです。
それから、各部品の具体的な定数は... 忘れました (^^;)。
マイコンによる制御は当初、1個のマイコンでL/R両方を面倒見るつもりでしたが、プログラムサイズが大きくなり過ぎたので、2個使いに変更しました。 工夫すれば1個でもできると思いますけど、格好良さに何ら貢献しないので、やるだけムダです(笑)。
以下に簡単な説明を... 回路屋さん以外は読み飛ばすように(^^;)
アナログポートAN0でスイッチの状態を読みます。
中立で1/2 Vcc、UPでVcc、DOWNでGNDになるというアナログ値でスイッチの3ポジションを判別します。
もう一つのアナログポートAN1では、0.1Ωのシャント抵抗によって、I-V変換されたモーターの駆動電流を読みます。
RB0-RB7は出力ポートで、RB0とRB1でMOS-FETのON/OFFをコントロール。
RB0がHiでUP、RB1がHiでDOWN。
RB0とRB1が同時にHiになってしまうと、短絡電流が流れてヒューズが飛んでしまうので、ソフト側ではそのパターンは出力しないようにしますが、保険としてハード側でも両方がHiになっても片側しか効かないようにしておきます。
RB4-RB7は、2kHzぐらいのパルスを常時出力して、+12V側のMOS-FETをONするのに必要なBATT電圧+4V程度の電圧をチャージポンプで昇圧させて作り出します。
単純にスイッチの状態を読んでMOS-FETをコントロールするだけならば簡単ですが、ワンタッチ機構が要るので、ちょっと複雑です。
通常はスイッチのUP/DOWNをそのままMOS-FETのON/OFFに反映させます。
それで、スイッチを同じ方向に素早く2回倒したら(マウスのダブルクリックの要領)、ホールドとし、モーターが停止するか、スイッチを逆方向に1回倒したら解除とします。
だから、「ワンタッチ機構」ではなくて、ダブルアクションによる「ホールド機構」ね。
とまあ、コレだけ書くと簡単なことの様に見えるんですが、具体的に制御アルゴリズムを考え出すと、「どうしたものか」と暫く考え込んでしまいました。
コーディングに取り掛かる前に、状態遷移図を描いて制御ロジックを整理せねばなりません。
もっと単純な、回転計だとか温度計だとかならば、いきなりコーディングに突っ走れるんですけど、こう場合分けが複雑になると全然ダメ。(笑)
ところで、プログラマの素養って「短期の記憶力」がキモだとか。
例えば、数字の羅列を何桁まで覚えられるか(短時間だけで良い)、みたいな。
要するに「どの変数に何が入っているのか」が沢山アタマに入っている程、ソースやらドキュメントをあっちこっち参照する頻度が少ないので、コーディングが早いっちうことらしいです。
そういえば、アルペンスキー競技やジムカーナなんかもそうですね。
その点ボクは全然ダメ。
トランプゲームで一番苦手なのが、神経衰弱ですから。(笑)
閑話休題。
考えた状態遷移図がコレ。
多分こうするのが、操作する人間の感性にマッチする一番自然な動作になると思うんですが... どうでしょう?
ポイントは、
兎に角、動きゃいいということで、ソースコードの美しさなんか無視で、Cで書きました。
使ったコンパイラは秋月で数千円で売っているPIC用のコンパイラですが、どういう訳か条件判定が多くなると、文法的に間違っていないしプログラムサイズもオーバーしていないハズなのに、コンパイルができなくなってしまうバグがあって、難儀しました。
ソースコードは公開するには恥ずかしいのでヒミツです。(笑)
回路を全部組んでマイコンを実装していきなりデバッグしようとしても、回路のバグとソフトのバグだらけで、何が原因で動かないのかさっぱり判らなくなってハマりますので、最初にソフトの基本動作デバッグ用のチェック回路を用意しました。
適当に「うりゃあっ」とバラックで作ったので、回路図はありません。(笑)
本チャンの回路からモーター駆動部分を除いて、その代わりに状態遷移図のイメージそのままに、今どのSTATEにあるのかを表示するLEDを並べたモノを作りました。
「どういう動作をするべきか」がはっきりしているので、この辺の作業はすんなり行きました。
状態遷移図を考えるのが7でコーディング&デバッグが3ぐらいかな。
ソフトの方が大体OKとなれば、次は本チャン回路を作って、モーター駆動回路を含めてのデバッグに移ります。 但し、まだ実際にはモーターは駆動しません。
さて、いざモーター駆動回路を足してみると、チェック回路で完璧に動作していたマイコンがぱたりと動作をやめてしまいました。
予想どおり(笑)。
「回路はトラ技記事からのコピーだから、細かい定数以外は間違ってはいないだろう。」ということで、配線ミスを疑っていろいろ当たってみるも、原因不明。
1発目が作り方がごちゃごちゃしていたので、「見切れていないところでショートでもしているのだろう。」と思って、もう一台奇麗に作りなおすも、全く同じ状態。(^^;)
結局、トラ技の回路が間違っていたのでした。(笑)
ちゃんと動かない回路をあちこち調べて行くと、ある条件あるタイミングでショート電流が流れて、電源が過電流保護でシャットダウンされていることが判明。
トラ技の記事は、ラジコンカーのアンプだったのですが、電源がパワーのあるNiCdバッテリーの為に、ちょっとぐらいショート電流が流れようが外見的には影響の現れない構成だったのです。
「どこかが間違っている」という前提で回路図を眺めて改めて検討すると、なるほど「これじゃダメじゃん(^^;)」という箇所が見つかりました。
そこに(赤で描いた)抵抗を幾つか追加して、無事所望の動作をしてくれるようになりました。(^^)
よくよく件の記事を読み返すと、記事の筆者はエキスパートではあるけれども、所謂「趣味の電子工作」レベルの様子なんですね。
やっぱり、出版物だからといって鵜呑みにしてはいけません。(^^;)
いよいよ最終段階。
純正P/Wスイッチと同じコネクタでハーネスを作って、実車に搭載して動作テストです。
果たして... 単純なUP/DOWNは効くのですが、ダブルクリックによるホールドが掛かりません。 予想どおり。(笑)
机上の実験回路と条件が異なるのは、主にノイズですね。
ナビシートにオシロを載っけて、怪しい所を片端から当たりました。
ディジタルストレージオシロが欲しい。(^^;)
んで、判ったことは、
もうこうなると、考えつく対策を1つ1つ入れていって、実験していくしかありません。
最後のダイオードがビンゴ。(笑)
モーターのラッシュカレントによって、瞬間的に12Vがドロップした時に、マイコン周りの5Vがドロップしていました。
もうひとつの重要課題、光るスイッチ。
今回必要なスイッチは、
(1)[0N]-[OFF]-[ON]の3ポジで、
(2)レバーがセンターにバネで戻るモーメンタリータイプで、
(3)レバー先端が発光するモノです。
金属軸のトグルスイッチに先っちょが発光するモノがありますけど、恰好がいまいちなので、パス。
しかし、分厚いカタログで探しても、適当なデザインで、上記の条件を満たすモノは存在しないコトが判明。
しかし、同一シリーズで、(A)発光しないけどモーメンタリーのモノと、(B)発光するけど非モーメンタリーのモノが日本開閉器のMシリーズにありました。
そこで、(A)と(B)を掛け合わせて所望の仕様のスイッチを作っちゃうことにします。
バネ兼用の接点を摘出。
レバーが倒れっぱなしになる通常動作か、自動的にレバーがセンターに戻るモーメンタリ動作かの違いは、このバネの形状だけで作られていました。
左側が通常タイプで、右側がレバーをセンターに押し戻すモーメンタリータイプ。
あれ?逆だったかな? ま、いいか。(^^;)
モーメンタリー用の接点を、照光タイプの方に移植して、見事 3ポジ モーメンタリー 照光タイプのスイッチが完成... の筈でした。
んが、いざ配線して電源を入れても点灯しない。
レバーを押し上げる... 光った。
放す... 消えた。
レバーを押し下げる... 光った。
また放す... 消えた。
ぢつは、LEDの接点とスイッチの接点とが連動していて、センターではLEDも切れる仕様でした。(笑)
とゆことで、ボツ。
かなりイケてると思ったんだけどなぁ... (^^;)
気を取り直して、次のターゲットは同じく日本開閉器のPシリーズ。
実は、デザイン的にはこっちの方が洗練されていて好きなので、始めからこれを使いたかったのですが、このシリーズには照光タイプが元々存在しません。
レバーがグリーンですけど、これは撮影用で、実際に使ったのはブラック。
このPシリーズは、レバーの形状や色のバリエーションがたくさんあって、交換も容易にできるように考えられているのか、レバーが簡単に脱着できます。
そして、外して見る。
![[レバーを外すと]](switch-4.jpg)
何故か中央に穴が空いてます。
単に射出成形の都合だとか、樹脂の嵩を減らす為に空いているのだと思いますが、
「ほうら、ここにLEDを仕込めば照光タイプに改造できるじゃん。ねっ?(^^)」
と語り掛けられているようなモンです。
これは、やるしかないでしょう。(笑)
LEDを仕込んで光らせるには、配線をなんとかしてそこまで持って行かねばなりません。
可動部分ですから、いい加減に線を這わせたのでは、いずれ断線してしまいます。
そこで、レバーを倒しても動かない一点=支点に配線を通すことにします。
通したリード線の先に 3.0φのLEDをハンダ付けして、穴の中に埋めこんで接着固定。
ちょっと光らせてみました。
少しでも発光面が明るくなるように、アルミテープを貼ってあります。
← 気休め (^^;)
お次ぎは、先端を光らせる為のレバーの加工。
レバーの先端を切断します。
![[レバーの先っちょを切断]](switch-9.jpg)
すると、中は空洞なので、幅1mm程の隙間が現れます。
そこへ、ぴったりのサイズになるように加工した透明のプラスチックを埋めこみます。
導光板にする訳です。
最初に考えていたよりも大変でしたねー。
何作ってもそうですけど。
←単に見通しが甘いだけか
大電流の流れるパワーデバイス周りの配線が、狭い所で太い導線を半田付けせねばならないので、結構大変でした。
マイコン周りなんて極端なことを言えば繋がりゃいいので、ユニバーサル基板でも配線は楽な方です。
多分訊かれると思うので...
量産の予定は今のところ無いです。(笑)
10セット以上需要があるようならば、ちゃんと基板を設計して作らなくもないですけど、ROMチェンジャーVer.2が片づいてからですね。