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



FM音源をソフトウェアで作れないかというお話
の続き。

あれもこれもと盛り込むと大変なことになっちゃう
ので、ひとまず最低限のスペックでプロトタイプを
作ってみたいと思います。

で、電卓弾きながら紙にメモをざっくりと書き出して
みました。仕様的にはこんな感じ。

・AVRのアセンブラで作る
・PWM使って、頑張って40000Hzを出してみる
・オペレータは2個だけ(1個はキャリア、1個は
 モジュレータ)で、単音発声とする
・LFO、エンベロープはひとまず見送り
・内部のsin関数テーブルは8ビット精度とする
・メロディーデータ(楽譜)は固定決め打ちで
 ドレミド(4つ目のドは1オクターブ上)の4音とする
・キャリアとモジュレータの周波数比はプロコンで
 指定しておくことにして、プログラム修正にて
 1:1から1:7で可変とする
・変調の度合い(キャリアのノコギリ波に加算する
 モジュレータの振幅)もプロコンで指定
・音程は、少し周波数が不正確になっても処理が
 簡単に済むように、40000Hzの割り込み
 タイミングに合わせた長さで丸める
・その他出来るだけ手を抜きつつ、上記で面倒な
 ものがあれば更に手を抜く…音を出すことが
 最優先

といった感じ。
ちなみにドレミドの各音を周波数にすると、

(通常) 262Hz 330Hz 392Hz 523Hz
(試作) 261Hz 331Hz 392Hz 526Hz
         (四捨五入値)

といった具合に数Hzずれます。まぁ、このくらいは
いいことにします。

MEGA8が手元にいっぱいあるのでMEGA8を使いたいと
思うのですが、そうするとクロックは16MHz。
割り込み1回につき400クロックに相当。

MEGA48なら20MHzが使えるから、500
クロック使えるんですが、この間作ったシリアル版の
arduinoボード(MEGA8登載)を流用しちゃえば
はんだ付けもブレッドボードも不要になるので、
流用してしまおうかと思ってます。
(この場合もちろんarduinoのIDEもブートローダー
 も使えませんが)

このくらいに機能を削れば、ひとまず作れないって事は
なさそう。まずは少しずつ進めて、音を出してみようと
思います。



コメント ( 0 )




http://jp.makezine.com/blog/2008/09/balance_a_ball_on_servo_c.html

例によってmakeブログです。

このムービー見てると、機械が
  「おーーーーとっとっと…」
  「お、やべっ」
とか言いながらバランス取ってる声が聞こえて
きそうで、妙な生き物感が伝わってきます。

タッチセンサでボールの位置をセンシングし、
ボールを転がす方向を計算しながら
アクチュエータで角度を制御しているみたいです。

見事です…。

PID制御なんか使ってるんだろうなぁ。きっと。



コメント ( 0 )




昨日あれこれ考えていた、ネコロジーをオシロ化する
上での入力回路周りについてです。ちょっと進みました。

ADコンバーターを壊さないために、ADコンに掛かる
電圧を-0.5V~4Vの間に絶対収めるというお話。

オペアンプの電源電圧を±3V(もしくは3.3V程度)
にすれば、+側は3Vまでしか掛からないことは
昨日のとおり。

もう一方の、負電圧時に0Vまでで食い止めるという
のが残った課題でした。

例によって私のオペアンプのバイブルを引っ張り出して
読み直してみます。理想ダイオード回路のところです。

理想ダイオード回路は、普通のシリコンダイオード
等と違って順方向電圧降下が無い(Vf=0)という
綺麗な動作をする回路です。

回路で言うとこんな感じ。


例の本にはR1から右側の部分しか載ってないのですが、
これだけだと反転出力(R1に0~3Vを入力すると
0~-3Vが出力)になってしまうので、その前段に
反転増幅回路を設けました。これによって、
反転+反転=非反転というわけです。これなら
増幅率(入力レンジの設定)の設計自由度も高いし。

この図中のダイオードを両方ともショットキバリアに
すれば、考えられる範囲で最速の動作をしてくれる
はずなんですけどね。


それにしても高ーーーーい高速オペアンプを2個も
使うのはいかがなものかと思って、いろいろ検索
してみました。

なひたふさんのこのページに、ボルテージフォロアを
使った理想ダイオード回路がありました。↓
http://www.nahitech.com/nahitafu/mame/mame3/ideald.html


こんな回路。

この回路、よく出来てるなぁ…。D2の使い方が
かなり絶妙。非反転の1倍出力です。

さらにこの回路をボルテージフォロアではなく、
非反転増幅を応用すれば適当な増幅率が設定出来る
んですが、非反転なので増幅率は1倍以上にしか
設定できません。
(AD9631は元々1倍以上にしか設定できませんが)


オペアンプのオフセット電圧(誤差)とか、
入力電圧のレンジ設定の設計自由度とか、そういうこと
を考えるとオペアンプ2個で反転+反転にしたほうが
有利なんだよなぁ…。

まぁ、いずれにしてもまずは簡単に、安く、そこそこ
安定して動作してくれればいいってことで、後者を
使うのがベストチョイスかな。AC100V測りたい
とか考えてないので。


これらの回路、本当はショットバリアダイオードでも
スイッチングの時間はゼロじゃないので、極々わずかな
時間だけ負電圧が出力される瞬間があるはずだし、
オペアンプのオーバーシュート等も考慮すると、
本当にADコンバーターに負電圧が掛からないのか
という点で懸念はあるのですが、そもそも
私の頭ではこれ以上は無理です。

これで壊れちゃったらそれはそれということで…。

ま、ちょっとだけ前進。



コメント ( 0 )