Darkside(https対応しました)

<< 前のページ

2021年10月25日(月) 20:59

dsPIC ピンアサイン

 本当に dsPIC だけでピンが足りるのか、MCC上で実際に割り当てして確認する。
 dsPIC33EV256GM102 において重大な制約条件が、まずはADCである。ADCに使えるGPIOは意外に少ないだけでなく、スキャン入力可能なものは更にその一部に限定されるのだ。DMA転送によりCPUを消費せず一括して値を読めるのはスキャン入力可能なピンだけなので、ここをまず抑える。
 スキャン入力できるピンは8本だけなので、最初に最優先その8本をADC用に割り当てる。

 2本のアナログスティックを読むのに4本。デジタルキーを読むのに2本。トリガーを読むのに1本。そしてバッテリー電圧を取得するのに1本。これで、8本綺麗に使い尽くされてしまう。中華設計の強欲なデジタルキー入力回路が無ければ、ピンが足りなくなっていたところだ。

 ソフトウェアI2Cはどの2本を使ってもいいが、慣例でRB5とRB6を使う。すると、無線モジュールとの通信に使うUARTのTXは、RB4しか選択の余地がない。残りの機能も選択の余地は少ないので、順当に決まる。

 それ以外に必要な一般機能を、通常のGPIOに割り当てて行く。

・電源ボタンの状態を取得する(RA2)。
・電源をON/OFFする(RB10)。
・電源LEDをON/OFFする(RB11)。
・ブザーを鳴らす(RB12)。

 これでGPIOが最後に1本だけ余るので(RB14)、入力ボタン増設用にキープしておく。アナログ入力は埋まっているので、増設できるボタンは1つだけだ。
 ただしそのボタンは、他のボタンの状態と無関係に独立して状態を取得できる。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年10月24日(日) 21:33

回路に中華パワーを見た

 次に、ボタンの配線を調査する。正面パネルの基板には、プッシュボタンが4隅に付いている。しかしこれ、かなり単純な構造である。本丸は、リボンケーブルの先にあるメイン基板のようだ。

 そこでボタン配線を中心にメイン基板を調べるが、どんどん雲行きが怪しくなる。回路が想定外で、恐ろしいことが行われているのが分かって来る。

 最終的に、とんでもない回路図が判明した。何と、デジタルボタン7個の入力を1本のGPIOで受けているのだ。電源ボタンを除いた14個のデジタルボタン入力を、たった2本のピンで読んでいる。確かにアナログ入力を活用した複数ボタン同時読み込みは威力ある手法だが、さすがにコレはやり過ぎ。事実上、複数ボタンの同時押しを判別できない。
 7個あるボタンのうち1個しか押されないのであれば、ADC値で押されたボタンを判別できる。しかし、複数同時に押されれば、誤判定続出は避けられない。

 とは言え考えてみれば、同時押しは発生しないとみなしても大きな問題ではない。2本のスティック入力さえ確実に読めていれば、デジタルボタンは操縦に本質的に関わるものではない。それでも、ドローンという操縦ミスが致命的なアプリにおいて、ここまで割り切った設計を行う度胸は、中華ならではだろう。日本メーカーには、作れない回路図ではなかろうか。

 日本の製造業が国際競争に負けた理由の1つとして、過剰品質が語られる。
 中国や韓国は、合格点ギリギリまで品質を落としてコストダウンすることに長けている。しかし日本は、過剰過ぎる品質でコスト競争に勝てないと。
 まさに、その実例が目の前にある。、

 実用上は恐らく問題が生じないこの割り切った設計により、間違いなくコストダウンできる。このまま乗っ取れば、キー入力を受けるためにPICを別途用意することなく、dsPIC が1個だけで処理できるだろう。
 左右両肩のボタンだけは、取り外して予定回路通りに自前で処理し、同時押しなども確実に判定できるようにする。そして、誤動作が致命的となるトリガーを処理する。それ以外の12個のデジタルボタンは、中華回路そのまま活用してGPIOを2本だけ使って状態を読む。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年10月23日(土) 21:11

電源周りの解析

 各種スイッチに直接配線をハンダ付けするのは容易だが、そもそも元から付いていたマイコンは足が少な過ぎる。ボタン入力を受け付けるには、足の数が足りない。そうすると、自分がやっていたのと同じで、複数のボタンを抵抗分圧で1つのアナログ入力にまとめている可能性が高い。実際、トリムボタンはチップ抵抗に接続されているっぽい。
 そうなると、基板に実装済みのチップ抵抗がそのまま使える場合は、そのまま活用した方がパーツ点数を減らせる。空間割り当てが、楽になる。
 そこで、基板の調査を進める。

 まずは、電源関係。
 テスターを使い、バッテリーの+と−に短絡している場所を探る。オレンジの丸が+と短絡し、水色の丸がーと短絡している。+は安定化されていないバッテリーなので、どこかで安定化されているはずだ。そして、安定化後の電源がアナログボリュームの+側に接続されている可能性が高い。そこで、スティックのGNDと逆側の端子を安定化VCCと想定し、そこに短絡している場所をテスターで探したのが黄色の丸である。

 ここでまず浮上したパーツが、赤い←で示した3つ足チップである。
 刻印を元に調べると、XC6206という三端子レギュレーターの可能性が高い。しかしXC6206だとすると、残った頭の端子がVINのはずで、ここがオレンジの丸であれば完全に納得できるところ。いや、そうじゃない。オレンジの丸だったら、電源ボタンと無関係にVCCを供給してしまう。
 電源スイッチ(それも、ソフトウェアスイッチだ)がONになって初めて、XC6206にVINが入る。よし、この流れで、次は電源スイッチ周りの解析だ。

 中央部分の拡大画像に、調査結果を書き込んでみる。3本足のSOT23パッケージが多いが、左上の A1sHB と記載されているのが恐らくP-NOSFET の Si2301DS である。ON抵抗は0.1〜0.15Ωなので、このまま使っても電圧降下は0.05V以下に収まりそうである。しかし、J607なら0.01V以下になる。
 5Vを挟んで昇圧も降圧も兼用できるDCDCコンバーターは、幾ら探しても入力電圧の最小は4.5Vのものしかない。もっと低い電圧からOKなものが欲しいが、無い。エネループ4本を使い、消費電流次第で電圧降下があることも考慮すると、ほんとうにギリギリであり0.01Vと0.05Vの差は無視できない。これは、引っ剥がしてJ607に交換すべきだろう。

 その右隣りは、恐らくショットキーバリアダイオード2本内蔵の BAT54CFILM だ。
 下のJ3Yと記載されているのは、トランジスター MMBT3904 で間違いないだろう。

 元から付いていた20ピンのマイコンは、12番ピン(紫)から電源プッシュボタンの状態を取得できる。13番ピン(青)にHを出力すると、電源をONにできる。そして、ここでは書いていないが11番ピンにHを出力すると、ブザーを鳴らせるはずだ。
 LEDは黄色の配線であり、電源が入ると連動して光るようになっている。FETは剥がせば回路が切れるので、PICから点灯するようにしても良いだろう。取り敢えず、電源周りの改造ポイントは、把握した。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年10月22日(金) 23:11

ソフトウェアスイッチ

 暫定送信機が電源スイッチの腐食や接触不良のトラブルに見舞われたので、本番送信機ではオリジナルのようにソフトウェア電源スイッチにしよう。

 構想としては、Q1を主電源スイッチとして使う。
 Q1はゲート電位差4Vでスイッチング可能で、かつON抵抗も小さめということで自分的定番のJ607を使う。
 J607のスイッチを入れるのがQ2とQ3で、これもゲート電位差4Vで動作するFETが必要。ただしゲートドライブ用なので、Q1のようにON抵抗が小さな必要はない。これまた自分的定番のK1593にする。

 Q2とQ3は並列接続であり、どちらがONになってもQ1がONになる。

 見た目上の電源ボタンであるプッシュスイッチが押されると、Q2がONになって電源が入る。それにより起動したPICでLEDを光らせることにより、電源ボタンが発光して電源が入ったことが分かる。なお、LED発光部分は回路図には書いていない。
 PICはLEDを発光させると同時に、Q3をONにする。これにより、プッシュスイッチが離されてもQ1はONのままとなる。

 プッシュスイッチの状態は独立してPICで読み取れるので、電源ON後に長押しされればPICで検出してQ3をOFFにし、LEDも消す。その後プッシュスイッチから指を離せば、電源が落ちる。

 次は、左右の肩に付いているトリガー用ボタン。

 セイフティースイッチとして使う2Pスイッチを回路に挟むことで、PICのGPIOを消費する必要がなくなる。2PスイッチがOFFになっていると、左右のボタンの状態と無関係にPICにはVCCが入力される。つまり、トリガーは無効になる。

 2PスイッチがONの場合、左だけ押されている場合と、右だけ押されている場合と、左右同時に押されている場合でPICの入力電圧が変わる。
 PICがアナログ入力で受け取ることにより、GPIOを1本しか消費せずに「セイフティー」「セミ」「バースト」「フル」の区別が付けられる。

 最後に、2つのプッシュボタンを方向キー的に使う場合(これが多い)。

 単純な分圧構成で、やはりアナログ入力を使うことによりGPIOの使用本数を抑えられる。
 左だけ押した場合と、左右同時に押した場合の区別は付かないが、それで問題がない用途に使う。

 デジタルボタンをアナログ入力で受ける、というのはPICのGPIOを節約する強力な手法である。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年10月21日(木) 22:58

流用し易そう

 予想外にも、トリムボタンはシーソーキーになっていた。

 しっかりとした普通のプッシュボタンが2つずつ並び、シーソーキーで押下される単純な構造。押し込めば、2つのボタンが同時に押される。これなら、ボタンの耐久性に問題は無さそうだ。
 シーソーキーを外して普通のプッシュボタンとしてアクセスできるように改造した方が、圧倒的に使い勝手は向上しそうである。ただしその工作は、少し面倒かもしれない。

 また、この筐体は暫定送信機に負けず劣らずの埃っぽい環境に保管していたのだが、内部の汚れは圧倒的に少ない。これは、プラス点だ。

 電源ボタンまで、プッシュスイッチだったのには少し参る。これは、少し捻らないと乗っ取れない。

 物凄く単純な基板なので、キー入力の乗っ取りに問題は無いと思われる。取り急ぎ、マイコンと電波送信系のチップを剥がしておく。

 アナログ入力4系統、デジタル入力15系統。他に、増設予定の2Pスイッチがデジタル。更に、ブザーも流用したい。

 更に、振動モーターのためにPWMを2系統確保したい。
 通信モジュールや液晶ディスプレイを扱うことも考えると、やはりデジタルキー入力を受けるために、専用PICを1つ用意する必要がある。
 これは、暫定送信機でも使った PIC18346 の在庫があるので、使おう。

 送信機のメインには、dsPIC33EV256GM102 で決まり。もともと送信機用に調達済みである。いまSタンク車載で活躍している dsPIC の大容量メモリー版である。暫定送信機では、PICのプログラム容量不足で苦しんだからだ。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

<< 前のページ

Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4