「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



今日はFFTからちょっと頭を切り替えて、オペアンプ
とモロモロで変調-復調の回路についてシミュレーション。
この間LTspiceの本を買ったときに試しに書いてみた
回路をさらに色々付け加えて、デジタル出力になる
ように作り変えてみることに。

カットアンドトライだから、スマートさはおろか正確性
も乏しい回路なんだけど、とりあえず考え方自体は
まぁ悪くないみたい。


組み込んだ機能としては、0.1Vppで0.1ms幅
のパルスを30個入力してみて(10Khzのパルス30個)、
この周波数のパルスを入力している時だけデジタル出力
をオン(もしくはオフ)とする回路を組みたいわけ。

簡単に言えば、AM変調とその復調。

この手の回路は、例えば赤外線なら38Khzで復調を
掛けてくれる部品があるので、そういうのを使うのが一番
簡単な訳だけど、使いたいのは可視光線(緑)で、変調用
の周波数も10Khzと今回のオリジナル。

使うのはたくさんのオペアンプ。BPFを通してから
ダイオードで検波し、そいつをシュミットトリガで
取り出すという感じ。

やってみた。



うん。まぁまぁ。

見づらいけど、2msの時点から出てる0.1Vppの黄緑色の
小さいパルスが入力信号。
そいつを10KhzのBPFに2度通し、ちょっと増幅掛けた
のが水色の波形。
コイツをダイオードとRC並列回路で検波したのが紫色。
さらに増幅掛けたのが白い波形。

白い波形にシュミットトリガ(ヒステリシスは5%ほど)
を掛けてデジタル出力にしたのが緑色の波形。信号の
入力が無い間は2.5V付近(多分LT1122の飽和出力)、
入力がある間は1.0V付近(これも多分飽和出力)。


LTspiceに標準で入ってたLT1122を
そのまま使って、しかも電源は±5V(一部は+5Vの
片電源)という条件で動かしてみたので、出力電圧が
LT1122に引っ張られるカタチになってるけど、若干の
定数を変えたり、オペアンプをR2Rタイプを使ったり
すればもうちょっとイイカンジになるはず。

大体イイカンジだな。

ちなみに、入力のパルス幅の周波数をちょっと弄って
9khzとか11khzとかにすると、出力はちゃんと
変化せず仕舞い。バッチリだ。BPFを2回通してる
からかな。結構狭い周波数幅で検知してくれる。


大体思ったとおりの動きをしてくれたんだけど、多分
無駄の多い、安定性もあまり考えてない回路かなぁ…と。

ってことで、汎用のR2Rオペアンプでそれなりに
動くような回路に育てたい。

オペアンプが現状で5個。もしかしたら入力電圧が
もっと小さいかも知れないから、初段にもう1個
必要かも知れない。その辺りも含めてどんな構成に
したらいいのか、もうちょっとシミュレーションして
みて考えたい。

それにしてもCircuit Makerに比べて解り易いな、
LTspiceは。楽しい…。( ̄ー ̄)



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




今日は食ったら歩くの法則にしたがって、街道沿いを
テクテク。本屋にたちよって物色。

例によって技術書系の本を探していると、イオンカード
を発見。名前見て思わず吹き出しそうになる。どうやら
ベッキーが「ンッンー」というあのイオンカードでは
ないみたい。さすが奥野かるた店。ナイスマニアック。

周囲には、更に分子模型の携帯用キーホルダーが置いて
あって、つい値段を調べて迷う。とりあえずお気に入りの
分子が見つからず、先送り。

分子模型のカタチ的には水分子、硫化水素分子、エタン
あたりがググっときて、特に硫化水素は色・カタチとも
goodだったんだけど、ちょっと物騒なのでパス。
エタンはちょっと嵩張るので邪魔になりそう。
水は…ありきたり。あまり高分子なのも邪魔になって
困るしな…


さらにウロウロしてHDL独習ソフトで学ぶCQ Endeavor VHDL
を発見。パラパラと眺めるとナカナカ解り易い。以前
オイラがゼロから勉強する時に使ったFPGAボードで学ぶ
論理回路設計
simさんから教えていただいた
VHDLによる論理合成の基礎の前に出合っていたら
よかったかもなぁ。

今オイラにとってのVHDLの課題は、もうちょっと大きな
プロジェクトファイルを扱う術なのだ。そこまでは
踏み込んでないみたい。基本的な考え方は事細かに
解説されているんだけどな…。

(C言語で言うと、各命令の解説と、それを組み合わせ
 て作る関数、その関数を使って何か動くものを作って
 みるというれべるか…ライブラリを自分で作ったり、
 それを複数組み合わせてデカいシステム作るという
 レベルではない感じ)


ホントは、FFT関係で面白そうなのを物色していた
んだけど、めぼしいものが見当たらず。dsPICの
本とかは有ったんだけど、オイラは機種依存の情報
よりもそもそもの「シクミ」を知りたいのだ。ちょっと違う。

例のやり直しのための信号数学を読めばDFTの
なんたるかは理解できるし、FFTの計算方法もわかる
んだけど、Z変換とかマクロ-リン展開とか差分方程式
とかの解説は入ってないので(他の本参照になっちゃってる)、
どうにも残尿管が残ってしまう。DCTなんかもあまり
よく理解できなかった。解ったら面白いんだろうけどな。

オイラが求めているのはあくまで工業数学であって
純粋数学の世界じゃぁないわけで、感覚的に解れば
いいレベルなんだよな。
ってことで信号解析のための数学あたりが当面の
ターゲットだろうか…。7月はまた読んでる時間
無さそうだなぁ…




コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




FFTばかりじゃなく、回路のほうもちゃんと実験
しておかないといけないなぁ。

以前の実験
http://brown.ap.teacup.com/nekosan0/713.html
からずっとほったらかしだったけど、今回はこれを
単にヘッドフォンで聴くんじゃなく、pico scope
でFFTを掛けてスペクトルを眺めてみたい…という
話し。

今回のコンセプトは、一つには1弦1弦完全に独立した
信号のセンスができるということと、それをFFT掛けて
1フレット単位で音量が拾えるということ。

1フレット単位で音量が拾えるためには、大事なのは
弦の振動波形にあまり倍音成分などが含まれていない
ということ。倍音成分があまり載っちゃってると、
FFTを掛けても1フレット単位でちゃんと分離
出来るのかが難しい…。

ってわけで、この間のビヨンビヨンの輪ゴムの音の
代わりに、あの1×2材で作ったソリッドウクレレ
http://brown.ap.teacup.com/nekosan0/730.html
の弦を弾いてみようという作戦。これでちゃんと
信号が拾えて、しかも倍音成分が少ない信号が
拾えていることを祈るばかり。まぁ、少しくらい
倍音成分が載っててもなんとかできる処理方法の
はずなんだけど。

とりあえずスペクトルとして見れればいいだけ。
感触が判れば十分。遅延時間とかは特に気にしない
ので、pico scopeで十分。

うーん、旨く鳴ってくれるといいな。

ピックアップ部分はエポキシパテを使ってすでに
ユニットかしてあるんだけど、それをドライブする
回路は都度ブレッドボードなのでちょっと手間。
まぁ、ちょっと気合入れて組んでみよう。

今日は昼間お出かけしちゃってwindows7マシン
組み立てる時間はなかったな…。明日以降だな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




もっと大きな問題があった…。忘れてた…。

256点サンプルでFFTを掛けると、単純計算なら
256個のサンプルを取り込むまでキチンと周波数の
解析が出来ないのでは?ということ。
言い換えると、256点取り込むのにどのくらいの
時間が掛かるのか… それが問題。

ナイキスト周波数を800Hzとするなら、サンプリング
周波数は1600Hz。ってことは、
(1÷1600Hz)×256点=0.16秒

弦を弾いてから256点取り込み終わるまで0.16秒
かかるということ。うーん。FFTをどれだけ早く
処理し終えても、その元ねたであるサンプリングが自体
が0.16秒遅延するのか…うーん。

256点サンプルとする時点で遅延の長さは避けられない
わけなんだなぁ。うーん。
SRAMが潤沢に使えるならアレコレ選択肢はあるけど、
4KBの制約は結構でかいなぁ。

もっと工夫が要るのかな?

1本の弦からの信号をさらに高音・低音に分けて
サンプリング、そいつらにそれぞれFFTを掛けるとか。

いや、もしかしたら128点や64点に減らすことで
パート毎のSRAM消費量は減らしつつ、周波数分解能
は据え置きで、遅延時間だけ短くすることもできる
のかなぁ?リクツから言えば…。

制御はやたらと面倒くさくなるだろうけど。1つの
弦から複数に分けて読み込むわけだから、各回路(LPF)
も、各ナイキスト周波数にあわせていっぱい用意する
必要ができちゃうからなぁ…ソフト的にもハード的にも
結構メンドウ。

ふと、クリップ式のクロマチックチューナーを探してみる。
こいつらも、結構細かい周波数分解能が必要なはず。
中身はデジタル回路のFFTだろうと。

大きさから考えると、かなり小さいマイコンで処理
してそうな感じ。なんか糸口がありそうな…

ただよく考えると、チューナーってそもそも遅延時間
は結構大きかったような。
うーん。256点どころではなく、もっとたくさんの
サンプルを取って、時間掛けて変換しても問題ない
製品だもんなぁ。目指す方向がちょっと違うかも。

ROLANDのGR-20GKのレビューも見てみる。
うーん、「微妙な遅延」かぁ。微妙な遅延があるっていう
のが製品レベルでも存在するってことか。

そう簡単には片付かないってことかもしれんなぁ…
頑張ろう。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




制約事項を色々とアタマに浮かべながら、さらに作戦
を練りつづけてみる。

256点サンプリングで単純に全レンジの周波数解析
を行うとすると、どうしても周波数分解能が物足りない…

かと言って、4KBのメモリでは4チャンネル別々の
周波数帯でFFT掛けるほどの余力もないだろうし、
ADCトリガの割込み制御も複雑になっちゃうし、
ADC取り込みのタイミングとFFT時の読み出し
タイミングの制御も難しくなるし…

512点に増やすのも無理。

と色々な制約事項を念頭に、表計算ソフト上で
あれこれシミュレーション。一つの案が出来た。

実数値の数値列2セットを一度にFFT掛けて分離、
それを2度行えば4系列のFFTが可能なので、
それぞれのナイキスト周波数をちょっとずらして
設定してしまえば、各弦用に必要な周波数分解能は
確保出来そうだと見えてきた。

低音側2弦のナイキスト周波数は800Hz程度に、
高音側2弦は1200Hz程度に。

その辺で設定すればまぁまぁなスペックが確保
できるんじゃないかなぁ?あとは4KBの
SRAMに入りきるか、処理が間に合うか、
その辺かな…

もうちょっと色々検討してみよう。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« 前ページ