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



なんだか凄くSF映画チック。

実写です。念のため。写真の一部を切り取り。

なんか凄い兵器とかの実験みたい。恐ろしい。
自然に比べれば人間(以下略)

ちなみに光ってるのは多分栃木県付近。レーダーで
見てみると真っ赤っか。

稲妻が写ってるのも何枚かあった。シメシメ。

ホントはもうちょっと大写しで稲妻が写ると良いんだけど、
手前の雲に遮られて「光ってる雲」ばっかだったな。
それだけが残念。



コメント ( 0 )




色々情報をむさぼる。

http://headlines.yahoo.co.jp/hl?a=20100714-00000518-san-soci
まずはアジサイ。色が付かずに緑のままのアジサイは
病原となる細菌が引き起こしてて、それを虫が媒介
するらしい。ふぅーん。で、おいら的に気を引いたのは
ヨコバイ。このヨコバイって、何? なんとなく子供の
頃に見て以来気になってたあの虫に似てる…

wikipediaで調べてみた。
http://ja.wikipedia.org/wiki/%E3%83%A8%E3%82%B3%E3%83%90%E3%82%A4
おぉ、カメムシ目セミ型下目で、かなり蝉に近い種族。

そうか。やっぱアレは幻ではなかったんだな。
子供の頃に旅行先で見たあの虫。体長1cmくらいの蝉
(にソックリな虫)を捕まえたんだけど、知人の
誰に話してもそんな小さい蝉は居ない!と…
みんなに一蹴されてあれは幻なのかもと思っていたら
実在してたんだな。なんか、一つ憑き物が落ちた。

さて、エレウケのチョーキングに使うUIのパーツを
改めて考えてみる。大きくは2つの方法。一つはデジタル
入力パーツを使ってソフト処理でアナログ的に味付け。
もう一つはアナログ入力パーツを使う方法。

後者のほうが楽器的には面白いんだけど、想像して
いるようなパーツが無いなぁ…って思ってたら、
よく考えたらアナログジョイスティックでもいいな。
https://www.marutsu.co.jp/user/shohin.php?p=18602
これとか
https://www.marutsu.co.jp/user/shohin.php?p=18603
これとか
http://parts.digikey.jp/1/1/118861-pot-joystick-10k-ohm-252a103b60na.html
これとか。
そこまで考えたところで、ふと思い出した。
http://eleshop.jp/shop/g/g72G311/
以前こんなの買ったままハヤニエになってたんだ。
これはokだな。

問題はADCのチャンネル数。弦からの信号は当初4本の
入力だったはずなんだけど、1本の弦を高周波側/
低周波側に分け無いとFFTで信号取り出すまでに
結構なタイムラグが生じることが判っちゃったので、
4弦×上下の2chで計8chのADCが必要。
これだとMEGA644あたりでは弦の入力だけで
埋まっちゃう。
うーん。外付けにSPI接続のADCでもつけるか?
それともやっぱデジタル入力に逃げるか…


そもそも64サンプルや128サンプルでFFTを掛けるなら、
SRAMはもっと小さくても…2KBでも…間に合うって
ことが判った。8ch入力しても8ビットでSRAMに並べて
置くなら128×8ch=1024B。それにFFTで
512B+α。あと500Bくらい自由に使える…と。

ってことは手持ちのMEGA328でも事足りるのか…
と思ってデータシートを眺めると…DIPはADCが6本
しか出てない…(TへT)
同じMEGA328でもTQFPなら8ch全部出てる
んだけどね。それでもチョーキング用のi/fをどうするか。
そこは相変わらず問題。ADCを外部ICでマルチプレクサ
できればいいのかもしれないけど、サンプリングタイミング
にズレを生じさせる恐れも無くは無いかな…

うーん、まずはやっぱMEGA644にして、チョーキング
はデジタル入力っていうのがグッチョイだろうな。


amazon君で頼んでおいた本が一気に届く。
まだ全然開いてないけど一番の楽しみははじめて見る
オペアンプの本
。おいらみたいに、オペアンプは押並べて
理想状態で動作してくれると信じて疑わない初心者
には良さそうかな、と。
それ以外はマイコンとは関係ない本ばかり。
いずれにしても今すぐ読んでる暇はないな…


とまぁ、色々情報を貪っているとこんなのが。
http://labaq.com/archives/51479016.html

アレだな。マズローの欲求階層説で有名なピラミッド。

一番下…すなわち生理的欲求は、ネットで言うと「ネコ」
ってところは非常に納得。これは間違いない。その昔、
偉い学者さんがそう言ってた。間違いない。(ウソ)
その上数段はまぁ色々意見はあるにしても、生産性を
実現するまでに満たさないといけない欲求がたくさん
あるってことはよく解った。

アレだな。ネットに繋がる機器の数にモロモロの欲求が
比例して、よって所有する機器が増えると生産性は
上がらない。そういうことだな。きっと。

まぁ、このネコ(=生理的欲求)だけで時間を取られない
ように注意しながら、ちゃんと手を進めていこう。
ヨコバイでもジョイスティックでもMEGA328でもいい
んだけど、ちゃんと音が鳴らないと意味無いからな。
アウトプットだ。



コメント ( 0 )




FFT計算をEXCELでやっちまおうっていうお話しの続き。
ようやく思ったとおりの結果が出るように。( ̄ー ̄)

fft_dif_excel.xls
(↑このブログサービス、画像以外のファイルも色々貼れる
 ようになったみたいなので、早速ペタリ)

内容的には、8サンプルの周波数間引きFFTを計算するもの。


入力は左側の赤で囲った2箇所。一つはサンプリングレート。
この例では1000sps…ADCを毎秒1000回行ったと仮定。
もう一つは入力信号としてS0~S7の8つ。基本的には
実数部だけ入力して使うんだけど、虚数も入力可。
そこだけ入力すればあとは自動計算&グラフも自動描画。

出力的には、G0~G7の8個で、そのうちG0~G4が
各周波数成分として利用する部分。G0が直流成分。
ちなみにビット入れ替えの処理も済ませてあるので、
上から順にG0~G7の順で読めばOK。
まぁ、それよりもグラフに自動反映されるので、グラフを
見るのが一番解りやすいかな…。

例の本読んで理解できたことをそのままワークシート
に落としただけなんだけど、単に計算式をワークシートに
落としただけじゃなくて、リクツを元に計算式を作り直して、
それを実際に動かしてみたら理論通り動いたってところが
ミソ。
しかも、このセルに埋め込んである計算式は、理論上
サンプル数を幾ら増やしても対応できる仕組み。

そう。これを思い切り拡張して、アセンブラでフルクラッチ
する目論見なのだ。これでとりあえず目処は付いたかな…

そう。ただ周波数成分を計算するところでちょっと…。
実数成分と虚数成分それぞれの2乗の和の平方根を
求めないといけないんだけど、アセンブラで平方根がなぁ…

ってことで、とりあえずニュートン法を適用したらどんな
風になるかな…ってことで試算を。

ニュートン法は漸化式で誤差を詰めていく方法だから、
初期条件の与え方が肝になるわけだけど、例によって
表計算のワークシートを旨く利用して試算してみた…。

処理上現実的な方法ってことで初期条件の与え方を
考えてみてから、それを元に誤差およそ2~3%程度
まで近づけるには漸化式を2回計算するだけで十分っぽい。
スバラシイ。
3回も計算すればもはや1%未満になるみたい。うーん、
現実レベルと考えて良さそう。
あとはそれをアセンブラで高速に処理させることができる
かどうか…だな。

だいぶ見えてきたので、手が空いてきたら徐々に
プログラムに落とし込んでいきたいところだな。

32点とするか、64点とするか、128点とするか…
そこが最大の課題になりそうだから、一度ウクレレ弦
を実際に使ってみて、pico scopeでFFTを掛けてみて、
それでどんな風かを眺めておきたいところだな…



コメント ( 0 )




今日も例によってやり直しのための信号数学を元に
表計算ソフトで8点FFT計算のワークシートの手を
進めてみる。

とりあえず、落書き帳で最小単位のバタフライ演算の式
(2入力)を「複素数ベクトル表示」→「実数部+虚数部」
に分解してみる。
ポイントになるのは回転因子のk乗の展開。算数苦手な
おいらは、これをワークシート上に落とし込むところで
しばしぼう然。
オイラーの公式を漠然と覚えてるだけじゃダメなんだな…

回転といえばこのオイラーの公式を回転因子に変形して、
それの階乗(k乗)を掛けてあげればいいわけ。
  e^(jθ)=(cosθ+jsinθ)
で右辺は実数項と虚数項に分かれてて処理上都合いいので、
このθに-2π/Nを代入してから右辺まるごとk乗すれば
いいのかな、と思ったんだけど…しばし思考停止。

このままk乗しちゃうと、二項定理で愚直に展開しなきゃ
いけなくなっちゃう。それじゃぁ単純なロジックで
処理できないし、できたとしても時間が掛かりすぎ。
ってことはこれはハズレだな。


うーん…、と改めてオイラーの公式を眺めなおす。
おぉ。左辺だ! 左辺をk乗すれば…
  (e^(-j2π/N))^k = e^(-j2πk/N)
ってなって、その結果右辺は…
    = cos(2πk/N)-jsin(2πk/N)
ってことになるのか。これなら二項定理は不要だな。よし。

改めて、2入力のDFT計算を落書き帳で筆算してみる。
…式はできた。あとはこれを愚直にワークシートに展開。
8入力の周波数間引きFFT処理として式を設定。

とりあえず完成したので、適当に入力データを設定してみる。


…うーん、出力がなんだか微妙におかしい…。
全セルを見直してみる。設計通りだ。なんだろう?

しばし悩む。うーん、どこかおかしいところがあるはずだ。
もう1回やり直しのための信号数学をパラパラ読み直す。


あ、ベクトル表記の式自体が間違えたまま筆算してた!
しくしく…。(TへT)設計不良。
下側は、足してから回転因子(ベクトル)を掛けるんだな。
ここが間違えてたよ。

またあとで落書き帳に向かって、筆算からやり直し。
そこだけやり直せば、まぁ今度は動くだろう…。
とりあえず半歩前進…と前向きに考えておこう。



コメント ( 0 )




明日は7/13。(っつーか日付変わってもう7/13)
windows2000のサポート切れの日。最後の晩餐なのだ。

相変わらずwindows7機への移行がちょっとずつ
しか進まないので(いろいろ物理的、時空的制約があって…)、
最悪の事態になったらロールバックができる最低限の環境
と言う意味で、windows2000にsp4を適用した
ブータブルディスクと、sp4に対するhotfixを収めた
CD-ROMを作成しておくことに。

モロモロありつつも、とりあえずそれなりのものができたみたい。

一つには、最悪の事態に再度環境構築を行うためのツール
として控えておくってことと、もう一つはもはやネットに
接続させない古いノートPC用のHDDがクラッシュしたら、
その環境の再構築にも使えるように。やっぱノートPCの
方はどうしても捨てられない16ビット/32ビットの
旧環境があるのだ。これは残さざるを得ないな、と。

とりあえずwindows2000を最低限復元する道具はできた
ので、あとは可能な範囲でぼちぼち進めていこう…。
明日も打ち合わせの後は多分呑み会だからな…しかも
宿題持ち帰りになりそう。ぼちぼちでいいや。

何しろ残作業がいっぱい。XPモードのインストールした上で、
64ビットネイティブモードで動くものとXPモードでしか
動かないものと、やっぱ動かないものとに1個1個切り分け
していかないといけないのだ。ある程度かたがついてから
じゃないと2000の環境はまだ捨てられない…


windows環境のことばかり考えていると気が滅入る
ので、せめてマイコン関係の課題をちょっとずつ進める
ことに。

例によってやり直しのための信号数学の話。
途中ページに載っている「excelによるFFT、IFFTの
計算プログラム」をそのまま打ち込んでみて、4点、8点
のFFTを計算させてみる。このexcelシートはどうやら
時間間引方式だな。

…うーん、動かしてみると、4点はともかく8点のほうは
計算が合わない…
打ち間違えが無いか確認してみるも、やっぱり計算が合わない。

セルの中身を色々調べてみると、どうやら計算式が間違えて
いるっぽいな。

さて、計算式にあわせてこのシートを書き直してもいい
んだけど、どうせだから自分でゼロから作ってしまうことに。
しかも、後々アセンブラでフルスクラッチで書くことを
念頭に、周波数間引で考えてみることに。

とりあえず書き出してみるものの途中で手が止まって、
改めて落書き帳で手計算からやり直し。

うーん、コンピュータって、なんでこんなに複素数の扱い
がメンドウなんだろう?



コメント ( 0 )



« 前ページ 次ページ »