マイコンに接続する有線センサの断線検知

2023/12/17

製作 設計


Team 'F'で製作中の速度世界記録挑戦用の人力プロペラ機(3号機と呼称)に搭載するアビオニクスを作製中です. 
速度日本記録を樹立したNextzのアビオニクスは,複数のセンサならびにパイロットディスプレイを1つのマイコンで処理する構成でしたが,センサ数の増加に伴い複数のマイコンを使わないとリソースが不足するようになってきました. 

今回の記事は,人力飛行機でよく使われる回転数計・超音波距離計・操舵角計等のセンサデータを処理しCANバスに流す基板(センサハブボードと呼称)の話です. 
センサデータの処理自体はPSoC 5LPFreeRTOSを動かし行う単純なものですが,PSoC 5LPの余ったリソースを使ってセンサの断線検知などを実装したので,どのような方法で行っているかを解説します.
作製したセンサハブボード.右端のピンヘッダに接続した最大8個のセンサのデータを処理し,左端のCANコネクタに出力する.ピンヘッダに接続した各種センサの状態は上部のLEDに表示される.基板中央にはアラーム用に圧電ブザーも搭載している.50×25 mm, 7.4 g.
写真のとおり,作製した基板には電源・信号・グラウンドの3本の端子を持つセンサを接続します.
これら3本のうち1本または複数本に断線が起こる可能性がありますが,
  • 信号線(またはグラウンド)
  • 電源線(またはグラウンド)
に分けて断線検知を行います.

信号線の断線検知

信号線の断線検知は,センサがつながるマイコンのGPIOのモード(Strong Drive, Pullup, Pulldownなど)を切り替えて行います.
PSoC 5LPの各種GPIOモード.通常動作時は1の動作モードを,起動時はソフトウエア的に2, 3に切り替えて断線検知を行う.(PSoC 5LP CY8C58LPシリーズ データシートより引用)
この方法で断線検知が可能なセンサは,
  • CMOS出力等で出力インピーダンスが低く,センサが入力ポートの電位を強く固定するもの
  • デジタル出力センサ
に限られます.
このようなセンサの場合,常に出力がデジタルHighまたはLowに固定されます.
したがって,ポートをPullup, Pulldownモードにした場合にもマイコンに入力されるレベルはセンサ出力と同じになります.
一方,センサが断線している場合,ポートをPullupした場合はマイコンの入力はHighに,ポートをPulldownした場合はマイコンの入力はLowになり,センサが正しく接続された場合と異なる挙動を示します.
したがって,センサ出力が変化しないとみなせる程度の短い時間の間にポートのPullup, Pulldownを切り替え,
  • ポートのモード設定によらず入力の値が変わらない場合,断線なし
  • ポートをPullupにした場合に入力がHigh,かつPulldownにした場合に入力がLowになった場合,断線あり
という条件で断線の有無を検知することができます.
許容されるセンサの出力インピーダンスは,Pullup, Pulldown抵抗の値によって変わりますが,使用しているPSoC 5LPの場合,内蔵のPullup, Pulldown抵抗の典型値は5.6 kOhmなので,その1/10程度以下のものであれば余裕をもって断線検知が行えるのではないかと思います.

アナログ出力センサなど,その他のセンサの場合,この方法では信号線の断線検知は行えません.
その場合,センサの出力を2つのポートにつなぎ,片側のポートを一時的にStrong Driveに設定,デジタルHighまたはLowを出力し,信号線を流れる電流を測定すれば断線が検知できるかと思いますが,今回の基板ではポート数の不足からこの方法は実装していません.

電源線の断線検知

電源線の断線検知はセンサに流れる電流を測定することで行います.
下図のとおり,電流測定は基板上の3.3V電源とセンサがつながるコネクタの間に小さな抵抗を入れ,その両端の電圧を差動測定することで行いました.
電源線が断線した場合,抵抗の両端の電圧がゼロになるので,ADCで測定した電圧が適当な閾値を超えた場合に電源線がつながっている,そうでない場合に断線していると判断することができます.

電流検出抵抗の両端に生じる電圧は小さいので,ADCとの間に差動増幅器をはさむべきですが,PSoC 5LPのPGAの同相入力範囲の制限により直結しています.
今回用いたSAR ADCは12ビットの垂直分解能があるので,電流検出には十分な精度が得られました.
センサの電源端子に流れる電流を検出する回路.青線がマイコン外部の回路.各センサには22 Ohmの抵抗を通して電圧を印加する.0 Ohmの抵抗は取り外すことでマイコンからセンサの電源をON/OFFすることができる.マイコンのCurrent_[i∈{0~7}][P(ositive)/N(egative)]ポートにつながる100 Ohm抵抗は保護用.入力コネクタ付近にはTVSダイオードを入れて静電気その他の過渡電圧対策を行った.
この基板では,手持ち部品の都合で挿入する抵抗は22 Ohmとしましたが,センサの種類等により必要に応じて調整します.
また,ポテンショメータに直列に抵抗を挿入する場合,AD変換出力がわずかに変化するので,場合によっては補正が必要です.

このような方法を取る場合には,センサの消費電流の時間変化に気を配る必要があります.
たとえば,超音波距離計Maxbotix MB7070-400では,超音波トランスデューサを励起する瞬間に大きな電流が流れ,それ以外の時間帯はマイコンとオペアンプを駆動する小さな電流が流れるという挙動を示しました.
超音波距離計動作時の消費電流の時間変化.繰り返し周期は5 Hz程度
他の例では,回転数計に使用している磁気スイッチABLIC S-5715DCDL1-M3T1Uは,繰り返し周期の1 kHzごとに大きな電流が流れ,それ以外の時間帯にはほとんど電流が流れないという挙動を示しました.
磁気スイッチ動作時の消費電流の時間変化.消費電流が0になり,断線と区別できない時間帯があることに注意.
したがって,ADCのサンプリングレートが高く(または積算時間が短く),1点のみで電流を測定する場合,電流が流れない瞬間の値を拾ってしまうと実際にはセンサが正しく接続されているにもかかわらず誤って断線と判断してしまうことがあります.
対策としては,
  • 電流検出抵抗とADCの間にLPFを挿入しアナログ回路で電流を平均化する
  • センサの電流が変化する周期よりも長い時間ADCで電流を測定し続け,センサの駆動電流の波形を取得する
の2つが考えられます.
両方の対策方法を試しましたが,後者の方法ではセンサの駆動電流波形からセンサの種類が判別できるという副次的なメリットが得られることがわかったので,作製したセンサハブボードにはこの方法を実装しました.

さらに,PSoC 5LPのPLDブロックを用いれば,センサの種類を判別した後に,接続するモジュール(UART, カウンタなど)をマイコン内部で切り替えることも可能です.
これにより,センサの誤接続を自動で修正することができます.
センサの種類判定に合わせて接続先を変更するブロック.判定結果に合わせてソフトウエアからコントロールレジスタの値を変更する.

実装

ここまで説明した信号線・電源線の断線検知機能を作製したセンサハブボードに実装しました.
断線の有無はLEDで表示しています.
センサハブボードのLED制御ブロック.起動直後はLED用のコントロールレジスタを通して点灯を制御する.通常動作時はLEDをセンサ,またはPWMに接続し,動作状態をモニタする.
接続するセンサは,
  • ポート0: ラダー操舵角計
  • ポート1: エレベータ操舵角計
  • ポート2: エルロン操舵角計
  • ポート3: なし
  • ポート4: 回転数計
  • ポート5: なし
  • ポート6: なし
  • ポート7: 超音波距離計
を想定しています.(写真,動画の手前側がポート0,奥がポート7)
検出できる誤接続は,
  • ポート0から2に舵角計以外がつながる(未接続も検知)
  • 接続なしのポートにセンサがつながる
  • ポート4に回転数計以外がつながる(未接続も検知)
  • ポート7に超音波距離計以外がつながる(未接続も検知)
のパターンで,回転数計と超音波距離計を逆に接続した場合はマイコン内部の接続を自動で修正します.
下記の動画が動作の例です.


電源ON時の動作を時系列順に整理すると,
  • ステップ1 電源ON直後: LEDの正常動作を確認するため,すべてのLEDを点灯します.
  • ステップ2 ビープ音1回の後: 信号線の断線検知を行います.断線時はLEDが消灯します(今回はLED3, 5, 6).アナログセンサを接続することを想定したポート(0~2)は断線検知が行えないので,実際の断線の有無にかかわらずLEDは点灯します.
  • ステップ3 ビープ音2回の後: 電源線の断線検知を行います.未接続,断線,または誤ったセンサを接続した場合はLEDが消灯します(今回はLED1, 2).このタイミングでセンサの誤接続が判定できるので,可能な範囲で内部接続を切り替えセンサの接続を正しく修正します.
  • ステップ4 ビープ音3回の後: センサの動作状況を表示します.デジタルセンサ[回転数計, LED4 (0:13-0:17)・超音波距離計,LED7]は出力をそのままLEDに表示します.操舵角計はAD変換値に大きな変化があった場合(0:19-0:27)にLEDが点滅します(今回はLED0).操舵角計のポートが未接続の場合,ノイズによるAD変換値の変化がランダムなLEDの点滅として表示される(LED1, 2,0:27-)ので,信号線の断線が検知できます.(センサを接続する予定がないポートに対応するLED5, 6はCANの送受信をモニタしているため点灯しています)
となります.

信号線・電源線の断線検知は基板の電源ON時に1回だけ行い,その後はセンサの消費電流をログに残すようにしています.

コネクタまわりの工夫

基板の写真のとおり,センサの接続には3×8ピンのライトアングルピンヘッダを用いていますが,以下のようにセンサの逆接・誤接続防止のためいくつか工夫をしています.
  • ライトアングルピンヘッダをFutabaタイプのサーボコネクタとともに用いることで,基板とサーボコネクタの突起が干渉し,物理的に逆接できないようにする.
  • ハーネスの両端にセンサ名を書いたラベルを貼りつける.
  • 未使用ポートにケーブルを接続しないブランクのQIコネクタ(ケーブルを圧着していないコンタクトを挿入)を装着し,誤ったポートに物理的に接続できないようにする.
手前のポートがFutabaコネクタによる逆接防止の例.クランク回転数用のケーブルにはシール印刷したラベルを貼りつけ,熱収縮チューブで保護している.ケーブルが出ていないコネクタは未接続ポートの誤接続防止用.
ピンヘッダをセンサ接続端子として採用したのは,Team 'F'のメンバにはラジコンに慣れた人が多いので,電装担当以外もラジコン受信機の感覚で取り扱いが行えるのではと想定したためです.
基板のサイズやコネクタの配置もできる限りラジコン受信機に寄せています.

断線検知も含め,Team ’F'の3号機に搭載するセンサハブボードがおおむね完成しました.
実際に機体に搭載するのはまだ先になりそうですが,ほどこした各種の工夫で電装担当以外にも運用しやすいものになっていることを期待します.