電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

発振器を作る

発振器を作る

はてなグループの終了日を2020年1月31日(金)に決定しました - はてなグループ日記 - 機能変更、お知らせなど でまず発振器を作ろう、作ろう、ぜひ作ろうということにした(決定)。

実はかなり前(10年ぐらい前かも)に 404 Not Found の発振器を作って、携帯ゲーム機のワンダースワンをプラットフォームに合体基板アダプタを作って制御ソフトを載せて使っていたことがある。ワンダースワン側のプログラムが飛んで再書き込みが面倒くさくなってそのまま放置しているうちに処分してしまったのだけれど。

もう一度作るのでもいいが、Jesperのは出力レートが発振周波数によって変化するタイプのもの。今回は音声帯域に特化して、位相アキュームレータで回すDDS方式にしようと考えた。以前にこんなことこんなことをしていたので、技術的にはそれの流用で。

その1

先日100個買って今は手元に50数個になってしまった8pin AVRのATtiny85がある。システムクロックとは非同期に、内蔵PLLの64MHz クロックでカウンタを回してPWMを生成できる。20MHzを256ステップでタイマ割込みすれば78.125kHzのレートで出力可能。プログラム領域が8KByteあり、そのうち4KByteを 4096word×8bit で正弦波 2πぶんのテーブルにして使う案。

400/1k/10kのスポットで良いと言われつつ、I2Cで出力周波数を可変できるようにしておきたいところ。使える機能は使いたい(ぜんぜん仕様を絞り込んでいないぞ)。

その2

秋月でひとつ100円のATtiny2313を使う案。トラ技2005年7月号にあった、

PWM出力とR-2Rを組み合わせた16ビットD-Aコンバータ

という技を試してみたいかも。8bitのラダー抵抗DACPWM

プログラム領域が2KByte(1Kword)しかないが、1Kbyteを 512word×16bit で正弦波1/2πのテーブルにする。ざっくりとシミュレーションしたところでは、位相の計算をしてテーブル4つ折りを戻しながら出力するのは256ステップに入らなさそうだった。78.125kHzの出力レートは諦めてその半分にするかも。

I2Cのポートは潰れるので周波数可変はUARTでやる or 諦めてスポットにする。

その1、その2 の両方やるかも。後者はほんとにスポット切り替えで良さげ。

(つづく)