2025年1月18日土曜日

【回路】複素サンプルで包絡線計算(DC offsetがある場合)

みなさーん、回路設計してますかー?
回路というよりか信号処理の重箱の隅な話題です.

↓こうゆう波形の包絡線を求めたい事がしばしばあります。
↓赤が包絡線です。包絡線のpeak値でAGCしたりするです。

ーーーー
包絡線計算のやり方.(複素数演算)
1)信号正弦波を同期2倍オーバーサンプルする
赤がサンプル点.同期は必須だが位相はピッタンコでなくてもよいのがミソ.
2)サンプルデータを2ケ採用、2ケ破棄する
3)採用した2ケを複素数の実数部Reと虚数部Imとする(順序は不問)
2倍オーバーサンプルした隣同士は位相90度のsin/cosの関係なので実数部と虚数部と見なせるのが理屈。あるいはヒルベルト変換すれば実数部から虚数部を生成する事も出来ます。
4)包絡線=√(Re*Re+Im*Im)
丸が計算された包絡線.赤線みたく滑らかな包絡線を得たければ8倍オーバーサンプルとかにすればいい.NTSCのカラー信号のdigital処理はこんなことやってたわけです.

余談ですが、、、複素数って何?とか数学の意味を深追いするのって無駄だと思う.実利の無い数学は忘れ去られてしまって、現世ご利益のある数学だけが生き残って、簡素化されて工学分野に引用されているのが歴史です.だから「便利ならなんでもいいや」と思って使ってりゃいいんじゃね? そもそもV=IRなんか元を辿れば電磁気学でポテンシャルを経路積分する面倒くさい行為なのだけど、抵抗というポテンシャル喰いと導線という経路を設定することで「ただの掛け算」にまで簡素化してくれた名も知れぬ先人の知恵なわけですから.マクスウェル方程式をLCRと導線で簡素化して回路という縮退物に落とし込んだ人はマジ偉いわ.

ーーーー
それでもって、STM32に包絡線計算を実装したのですが、ズレてしまってぜーんぜん上手く動いてくれない。なんじゃぁこりゃぁ。。。。
原因は、DC offsetがあると包絡線計算が上手く動かないのでした。この波形は+0.5ズレています.

対策のためDC canselせないけません。ただしあからさまにHPFを使うのは禁止。

それで2倍オーバーサンプルの波形を見ていて、思いつきました。
2つ過去の値と現在値の中点=DC offsetになっている
つまり緑丸の電圧がDC offsetです.
なので、逐次DC offsetを引き算してやってから包絡線を計算すればOK。

上手く動きました。めでたしめでたし。

ーーーー
この件まだ続きます.
実をいうとわたしがやりたいのは同期検波なんです.同期検波をこの包絡線検出でやるというのが目的でした.でも問題があってダメでした.あとで追記します.

かしこ

15 件のコメント:

  1. >ポテンシャルを経路積分
    「二極管の I - V 特性」とか、これで、
    ・I = GV^(3/2)
    (いわゆる、3/2乗則、ラングミュアの法則)
    が、求まったりしますが。
    ※学生時代に、微分方程式から解いたことがあるが、もうとっくの昔に解き方なんか忘れてしまいました。

    >2倍オーバーサンプルした隣同士は位相90度のsin/cosの関係なので実数部と虚数部と見なせる
    こんなのに、すぐ気づく人はどうかしてますね。
    (私は、今これを見てやっと気づきました。)
    >ヒルベルト変換すれば実数部から虚数部を生成する事も出来ます
    「位相が90度進む(あるいは、遅れる)」と、
    ・(リアルなのに)別世界に行っちゃう
    のは理論的には知ってましたが、「こういう応用(包絡線検波、要するに「AM復調」ですね)」があるのは知りませんでした。

    ※なんか、まるで、
    ・異世界おじさん
    みたいだな、と思った。異世界に行って仕事して、それを現実世界に持ち帰る。「現実世界では困難」な仕事も、異世界では「簡単に出来ちゃう」から(笑)

    返信削除
    返信
    1. 真空管は習ったことないわー
      中学の技術科室にAMラジオの残骸の真空管とかバリコンが多数あったけど、自分の授業はTRラジオになっちまってました.

      2倍サンプルとヒルベルトとどっちが多用されるのかはよく知らんとこです.ヒルベルトは演算量が増えるのが少し嫌かなとは思ふ.

      削除
    2. >真空管は習ったことない
      私は、高専の時に、実習で、
      ・二極管の特性
      ・三極管の特性
      とか、測定させられましたが。光学実験とかいって、
      ・光電管
      も、出てきました。
      ※勿論、「トランジスタの特性」もやったハズ。
      あんまり覚えてないけど。

      削除
    3. 真空管の授業はイイ
      真空管を自作する授業だったらもっとイイ

      削除
    4. >2倍オーバーサンプルした隣同士は位相90度のsin/cosの関係
      んーなるほどです。感服いたしました。
      インパルスでPAMできそうです。超音波で1Mbpsいけるのでは(全然計算してませんけど)?

      削除
    5. excelでごにょごにょとsimってみるとグラフでかくにんできます
      上のグラフもexcelですし
      そういえばexcelで複素数計算ってできるのかな?

      削除
    6. >そういえばexcelで複素数計算ってできるのかな?
      できます。結構便利です。

      削除
    7. そうですか、できるですか
      それはらくちん!

      削除
  2. 複素数の世界を群論でちゃんととらえていれば,虚数って何?ってそんなに悩まなくてよかったような気がします。そういう自分は群を理解する前の環の手前で挫折しました。

    返信削除
    返信
    1. 群環を詳しくは知りませんけど、わたしも群という物があると知った時でしたかね、虚数ゆうても負数みたく便利だから拡張しただけじゃんと悟ったのは。

      宇宙論でホーキングさんが虚数時間と言ってて、虚数の実在はチト飛躍し過ぎじゃないかと思うのですが、作用反作用的に時間逆行宇宙は無くちゃおかしいだろと思わんでもなく。。。

      削除
    2. ↑にも書きましたが、
      ・90度位相がずれると、「別世界」に行ってしまう
      のですが、ソレの数学的表現が、
      ・虚数と言われるもの
      と言うだけのことだと思います。
      ※そういう意味では「虚」でも何でも無いんだが。違った言い方をすれば、「別次元の存在」のことを言ってるダケ。
      この世界が「三次元」とすれば、「四次元以上」の世界は「虚数」で表せる。「虚数時間」すなわち「あの世の時間」と言うことかも知れない。

      >ヒルベルト変換すれば実数部から虚数部を生成する事も出来ます
      現実の時間を「ヒルベルト変換」すれば、「虚数時間」に、なったりして。(良く分って無いので、適当言ってます(笑)

      削除
    3. 以前も言ったと思いますが、「四元数」を使えば、
      ・3次元CG
      が、上手く動かせる(ジンバルロックとか、発生しない)ので、実は、この世界は「3次元」ではなくて、
      ・四元数次元(うまい日本語が出て来ない・・・)
      なのではないか?と言う説があります。例えば、
      「1[cm] x 2[cm] x 3 [cm] の、直方体」は、ホントは、
      「1i[cm] x 2j[cm] x 3k [cm] の、直方体」である、と言う話。
      ※i, j, k, は、四元数の虚数単位
      そう言う意味では、この世界には「実数」は無い。すべて「虚数」

      長さも、全部虚数。なので、
      ・私の身長は、150i[cm] です
      とかになる(笑)
      ※工学的には、こっちのが便利だよな・・・・

      削除
    4. 四元数なんか利便性無くて消えたと思ってたけど、ひょんなところで生きてるもんですねぇ
      割り算の演算規則めんどくさそーw

      マクスウェル方程式は最初の論文では四元数で書かれてたと聞いたことがあります ホントかどうかはしらねー

      削除
  3. murasaki
    波形を見て解決策を探す行為とプロジェクトの有り様を見て解決策を探すのは楽しいですね。自分は抽象論になると全然頭が働かないです。

    返信削除
    返信
    1. こんなの正月明けの第1週目で終わるだろと軽く考えていたのですが、
      イザやってみたら、振幅+位相+DCの3次元制御が必要じゃん、デリケート過ぎてヤバいぞこのloopと判って来ました。
      こんなもんを実装しようとする物好きは他に居なかろう。ラボで味見する趣味人ぐらいなら居るだろうけど。

      3次元制御をやる/やらないでアーキテクチャがかなり変わるので結論を出さなきゃいけません、プロジェクト的に。

      と言いつつ今日は埼玉リフォーム

      削除