2012/02/25

学生向けPSoCワークショップ

2月14日に行われた学生向けPSoC3ワークショップに参加してきました。
無料配布の開発キットCY8CKIT-030も目的のひとつです。

ワークショップの内容は、PSoC3の基礎的な使い方で、
  • Lab1-1 PSoC Creatorの使い方
  • Lab1-2 PWM
  • Lab1-3 GPIO操作
  • Lab1-4 割り込み
  • Lab2    AD変換
という感じです。

開始時間が遅れたにもかかわらず、参加者の飲み込みが早いのか、1時間ほどメニューを早く消化してしまい、もともとあった自由時間は2時間になりました。

自由時間にはCapSenseの使い方の話と、(ET2011で話したらしい?)PSoC3/5の高精度アナログに関するクイズがありました。
アナログの話は、時間不足で最後まで説明が聞けなかった部分があるので、補足を兼ねてここに書いておこうと思います。

問題は以下のようなものです。
  • 「1KΩの負荷をつないだポートに1024mVを正確に出力せよ」
単純に考えれば、以下のようにPSoCのモジュールを配置すればよいはずです。
単純な回答例
うまくいかない例
実はこのときに出力される電圧は、使用するポートによって変わります。
特殊なポートを使わない限り、オペアンプの出力とVoutの間には、いくつかのアナログスイッチが入っていて、その抵抗は数100Ωになります。
そのため、Voutの電圧は1kΩとアナログスイッチの抵抗で分圧されたものになってしまい、500mV程度など、1024mVにはほど遠い値が出力されます。

解その1
こちらは単純です。
出力に使うオペアンプモジュールがアナログスイッチを介さず直接つながっているピンをデータシート、Technical Reference Manual等を参考に探し出し、そこにつないでしまえばおしまいです。
具体的にはP0.0, P0.1, P3.6, P3.7を使えばよいです。
これらの出力ピンを指定すると、4つあるオペアンプモジュールのうち適当なものをアナログルータは自動で選択してくれるようです。

解その2
こちらはPSoC3/5の内部をよく知らないとできない方法で、任意のピンに対して有効です。
最適なアナログ配線を手で行うのが肝になります。

PSoC CreatorにはManual Routingというモジュール群があります。
Manual Routingモジュール
今まで使う場面もなく、機能も把握していなかったのですが、機能は以下のようになっているようです。
  • Net Join: 2つの配線の相互接続
  • Resource Constraint: 使う内部配線の指定
  • Resource Reserve: 内部配線の予約(自動配線から除外)
  • Stay Awake: スリープ時にも生かしておく配線の指定
  • Terminal Reserve: モジュールの端子を予約(自動配線から除外)
上の2つは、アナログルータに望んだ配線をさせる、下の3つはアナログルータによる配線を禁止するなどして、レジスタから直接アナログ部にアクセスする場合に有用な機能です。

また、Design Wide ResourceのDirectivesを使うと、内部にいくつかある同じモジュールのうちどのモジュールを使うかを制限することができます。
PSoC Creatorのヘルプに詳しい使い方が書いてあります。

これらを使って、Voutになる端子とオペアンプの反転入力を直接つなぎ、きちんとフィードバックがかかるようにしたのが以下の図になります。

内部の配線を手動で指定
使うオペアンプモジュールを指定
手動で内部配線を指定することで、きちんとフィードバックがかかるようになり、1024mVが出力されるようになりました。

PSoC1と3/5とを比べると、アナログのパズル的な要素はだいぶ減った印象はありますが、内部にある大量のアナログスイッチとアナログルータのおかげで直接は目につかないだけで、性能を引き出そうとすると内部構造がどうなっているかをきちんと考えなくてはならないようです。

今回のセミナでは、長い自由時間に気になっていたことを質問できたり、何回か参加したPSoCセミナの中ではかなり満足できるものでした。
PSoC5で似たようなセミナが行われれば、ぜひ参加したいところです。

2012/02/09

GPS用Wilkinson Couplerの測定

以前シミュレーションを行ったGPS用Wilkinson Coupler基板が届いたので特性を測ってみました。
コネクタ・抵抗・コンデンサを取り付けケースに入れたWilkinson Coupler基板
レジストのネガポジがどこかで反転してしまったので、ハンダがのる部分のレジストはスクレーパで削り落としています。

測定結果に移る前に使用した部品のリストを書いておきます。
かっこ内は購入先です。
  • 入出力コネクタ:MCX・エッジマウントタイプ(DigiKey)
  • 抵抗:進工業 RR0816P-101-D 100Ω, 1/16W, 1608(RS)
  • コンデンサ:muRrata GRM1882C1H100JA01? 10pF, 50V, 1608(千石電商)
  • ケース:タカチ MB-S1(マルツ)
コンデンサは自己共振周波数以上ではインピーダンス特性がインダクタンス的になってしまうので、あらかじめメーカの設計支援サイトSimSurfingで特性を調べて使えそうなことを確認しておきました。
抵抗はあまりに誤差が大きくない限り使えると思います。

測定は2ポートのネットワークアナライザで行いました。
ネットワークアナライザにつながないポートは、ターミネータで終端させています。
自作のMCX用校正キットを使った校正しか行っていないので、結果には透過・反射強度で±1dB程度の誤差は含まれている思います。

以下の結果では、ポート1をアンテナ入力、ポート2をDC透過の受信機出力、ポート3をDCカットの受信機出力としました。

透過・反射特性は以下のようになりました。
シミュレーション結果と測定した透過スペクトル・VSWRの比較
アンテナから受信機への透過は-3.4dB程度とシミュレーションとほぼ同等の値で、使用する帯域内ではほぼフラットな特性が得られています。
また、受信機間の透過は設計より大きな値を示していますが、使用する帯域内で-15dB以下とおおむね期待した性能が出ています。
VSWRは帯域全体で1.5以下、主に使用するであろうL1帯では1.2以下が得られていて、シミュレーションよりは大きな値ですが、十分実用に耐えうる値が出ています。

透過特性から2つの受信機ポートのバランス等、いくつかのパラメータを引き出してプロットしたのが下の図です。
シミュレーション結果と測定した挿入損失・ポート間バランスの比較
このあたりのパラメータは設計時にもあまり意識していなかったこともあり、そもそもシミュレーションの時点からあまりよい値を示していません。
左右のポートの透過強度・位相の差はデザインの対称性を崩すDCカット用に挿入したコンデンサとパターンのテーパ部によるものなので、そのあたりのパターンの修正でもっとよい値が得られるのではないかと思います。

さらに、きちんとDC透過・カットができているかを確認するために、テスタによる抵抗測定に加え、低周波側の透過スペクトルの測定も行いました。
低周波側の透過・反射スペクトル
期待した通り、測定できる最低周波数の9kHzでは、DC透過ポートではほぼ0dBの、DCカットポートでは-45dB以下の透過が得られていて、きちんとDC透過・カットが行えていることが確認できます。

以上の結果から、あまり性能にシビアではない用途には十分使えるWilkinson Couplerができたと言えます。
しかし、市販のGPS用スプリッタと比較すると、そもそもシミュレーション段階から特性が劣っています。
このあたりは設計のノウハウ不足が原因なのでしょうが、挿入損失がシミュレーション段階から0.4dB程度あるなど、マイクロ波回路に向いているとは言えないFR-4基板を使ったことからくる限界もあるのだと思います。

2012/02/05

対気速度計の校正2

大変遅くなりましたが前回の続きです。
今回は気速計の向きをサーボで変えながら測定した結果です。
試験の様子は下のビデオのようになります。



動特性の測定
10m/s程度に風速を固定し、気速計の向きをサーボで急激に変えることで動特性の測定を行いました。
測定結果は下の図のようになります。

サーボを使って気速計の向きを変えながら測定した気速計のカウント値。鋭い立ち上がりのデータを動特性の解析に、ゆっくりした立ち上がりのデータを迎え角依存の解析に使った。
最も鋭い立ち上がりを得られた12秒付近を拡大したもの
この図から、赤線のサーボ入力に対して、青線の気速計カウント値が立ち上がりでは0.2秒ほど遅れて反応していることがわかります。
サーボが動く時間(90°で0.15-0.45秒程度)の時間遅れを考えると、カウント値は風速に0.1秒以内で追従していると考えられます。
また、カウント値の上昇側と下降側では反応の遅れに違いがあり、下降側の反応が若干遅いことも見て取れます。
この結果は、
横井 信太郎, 風向風速計センサの特性比較, 気象大学校卒業論文 (1997)
で解析されている気象用の風速計と同じ傾向です。
今回の実験では対気速度を10spsで取得しましたが、サーボの応答遅れを考えればこの程度のサンプリング周期では測定値に実際の風速に対する遅れは見えず、ほぼ追従しているものと考えてよさそうです。

迎え角依存の測定
次にゆっくりサーボを動かし、迎え角に対してカウント値がどのように変化するかを測定してみました。
下の図が結果です。

気速計のカウント値の迎え角依存。実線は正弦曲線によるフィット
何度か角度のスイープを繰り返した中で最もきれいな結果を載せましたが、サーボの応答遅れに起因するヒステリシスが出ています。
期待していたのは風速のcos成分を拾う結果でしたが、カウント値が最大を示すのは-15°程度であり、迎え角に関して対称な結果になっていません。
測定の様子のビデオからわかる通り、今回の実験では気速計の向きをピッチ方向に変えていて、角度によってはサーボとの距離がかなり小さくなってしまっています。
そのため、この結果はサーボや気速計を設置している台による乱れの影響を含めたものなのだと思います。
迎え角依存性を明確にするためには、条件を整えた上で再実験の必要がありそうです。

実験の問題点
測定結果の項にも書きましたが、動特性・迎え角依存の測定には以下のような問題点がありました。
  1. 気速計の角度を直接測定しておらず、サーボの応答遅れを含めた結果である
  2. それに対応して、迎え角依存にヒステリシスがある
  3. 気速計とサーボ等の距離が近く、干渉の可能性がある
これらに対して、
  1. サーボ内部の可変抵抗から電圧測定用の端子を引き出し、サーボの切れ角を直接測定する
  2. 迎え角依存の測定では、様々な角度に対して十分な時間をかけてカウント値を取得するような測定プログラムを作る
  3. 気速計のアームを長くする/ヨー方向に気速計を動かす
等の対処が考えられます。
もう一度風洞試験を行なう機会があれば、これらの点に注意を払って追試を行ないたいところです。