先日作った 「
27MHz~2.4GHz対応RFチェッカー(ラジコン電波検知器)」 は、オシロに繋いでラジコン電波の包絡線波形を観測することを意図して開発した。すると、「オシロが無いと使えないの?」と言う反響が多かった。
そこで、第2弾として、RFチェッカー(ラジコン電波検知器)の表示部を作った。これなら小型軽量で持ち運びに便利だ。しかし、ラジコンに限らず、電子系を診るおもちゃドクターが丸腰では困る。小振りでもよいので、オシロは持ち歩いた方がよいと思うのだが。。。

平均値とピーク値を10セグメントのバーLEDで表示するだけのもので、大層な仕掛けではない。

【設計事項】
・制御用のPICはコストパフォーマンスに優れた16F1705(@100円2017年秋月)を採用する。16F1503(@80円秋月)の方が廉価なのだが、1503はADCのVref+にFVRを内部で繋げない(ホンマに使えへん仕様やで)ので、1705を採用した。
・1705にはオペアンプが内蔵されているので、使わなソンソン(♪♪おどるあほうに・・・)。RFチェッカー出力のボルテージフォロワとして利用する。このバッファ出力をRC2に出して、これをオシロに繋いだり、ミニアンプに繋いで電波(の包絡線)を音として聞く。
・バッファ出力をADCに内部接続してデジタル値に変換した後、バーLEDの10個のセグメントに対応付ける。対応付けはテーブル化して、チューニングが容易に行えるようにした。
・RFチェッカーで使っている LT5534 は入力されたRFパワーに応じて 0.2~2.1V の電圧が出力される。ADCのVref+にはFVRの2.048Vを与えるので、2.048~2.1Vは最大値の1023に変換されるが、入力を分圧するのもメンドイので無視する。
・RFチェッカーが AD8314 の場合は入力されたRFパワーに応じて 0.01~1.2V の電圧が出力される。ADCのVref+にはFVRの1.024Vを与えるので、1.024~1.2Vは最大値の1023に変換されるが、入力を分圧するのもメンドイので無視する。
・ADCは実測11usで実行され、メインループの周期は12usだった。アクイジションタイムは1usしか確保されないが、ADC入力チャネルが固定しているので、サンプリングを重ねることでセトリングされていく。
・RFチェッカーの出力から平均値とピーク値を評価する。平均値は直近の256サンプル分から求める。時間にして 12us×256=3ms になる。ピーク値の保持時間は512サンプル分、時間にして 12us×512=6ms とした。これらのサンプル数は、バトロボーグの間欠送信間隔がペアリング時200ms 通常の操作時10ms程度であることから決めた。他のラジコンではどうなのか判らないので、実際に使ってみてチューニングしていく。容易に変更が可能なコーディングにしている。
・蛇足機能として、オートパワーオフ機能を持たせている。現在の設定は210秒でオートパワーオフする。RFチェッカーの電源制御を行うには、この表示部から出力する電源オン信号をLT5534のENピンへ接続して、LT5534を省電力設定にする必要がある。そうしない場合は表示部だけオートパワーオフしても意味が無いので、オートパワーオフ機能はオプション化している。
【回路図】


【動作動画】
バトロボーグの電波をチェックしているところ
観られない場合はダウンロードファイル中の .AVIファイルをご覧下さい。
【おまけ機能】

上図には2つのピーク値が表示されている。一番レベルの高いところにあるのがコントローラからの電波だ。中程にあるのはロボットからの電波で、このように複数の電波のピーク値が表示されている。
これは設計時には意図していなかった動作で、ピーク値の保持時間を制限していることでそれぞれのピーク値を別々に表示する仕掛けができていたと言うことだ。上記の 【動作動画】 で実際の表示状況が観られる。
【ファームウェア】
設計資料とファームウェアの開発プロジェクトは
ここから ダウンロードできる。
プロジェクト名は以下のとおり。
LT5534用(VFR=2.048V) は RFchecker_FVR2_1705
AD8314用(VFR=1.024V) は RFchecker_FVR1_1705
このファームウェアはアセンブラで書かれているのだが、Cで書いてくれ、との要望をよく聞く。開発生産性や品質の面から僕もCで書きたいと思っている。しかし、性能クリチカルなものはCでは無理なのだ。このファームウェアも最初はCで書き始めたのだが、途中で性能評価したらメインループに100us以上掛かっていた。これではRFチェッカーの出力を取りこぼしてしまう。
コンパイルリストをチェックしたら性能の悪い理由が判った。一つだけ挙げると、平均化処理で256の除算がなんとビットシフトを8回繰返していた。いくら無償版でも酷過ぎるじゃないか。上位バイトを持ってくるようにインラインアセンブラで行こうかと思ったが、いたるところに手入れが必要で、そうすると体裁はCだが中身はアセンブラになってしまって、逆に読み辛くなってしまう。それで今回もアセンブラで書いたら、メインループは12usになって、メデタシメデタシ。
- 関連記事
-
スポンサーサイト
- 2017/07/18(火) 14:43:24|
- 2.4GHzラジコン
-
-
| コメント:0