電音の工場ブログ

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

メモ CV発生冶具の修整

メモ CV発生冶具の修整

詳細はあとで書く

id:Chuck:20060102#p1 の修正

id:Chuck:20060102#p1 で披露したCV発生冶具だが、ゼロが綺麗に出ていないのが気になっていた。

よくよくAVRのデータシートを見直すと、9bit PWMで値ゼロというときには 1/512 のパルスが出ていることになっているようだった。これでは完全なゼロになっていない。

これを回避するにはPWMの反転出力を使えばよいとわかった。値ゼロを出したいときにはPWMの値に511を指定すれば、512/512 の波形の反転が出てゼロとなるというわけ。

さっそくプログラムを書き換えて、以下のような感じになった。

9-bit PWM
表示 電圧
0 -0.0023
1 1.0061
2 2.0020
3 3.0029
4 3.9990
5 5.0000

-0.0023V というのはPWM後フィルタのオペアンプのオフセットかな?

PWMは100ステップを1Vとして、値500が5Vになるようにしている。微妙なサジ加減の補正を加えたりしちゃったりなんかしていて、該当部分のテーブルは以下のような感じ。510をTOP値にしちゃってもいいかもしれない。いずれ実験してみよう*1。そのうちきちんとまとめてコード公開できるといいなぁ。

  struct {
    uint16_t pwm;
    uint8_t led;
  } tbl[] = {
    { 511 -   0    , 0x00 },
    { 511 - 100 + 0, 0x01 },
    { 511 - 200 + 1, 0x03 },
    { 511 - 300 + 1, 0x07 },
    { 511 - 400 + 1, 0x0f },
    { 511 - 500    , 0x1f },
  };

*1:実はきちんとISPまわりのハードを組んでいなかったことが発覚。当初ICEでいじっていたためと思われる。今回はいちいちATtiny2313をはずしてwriterに持っていって値の試行錯誤をしていた。