2015年4月24日金曜日

矩形波だけのファンクションジェネレータ 機能仕様

あらかた実験してみたので「矩形波だけのファンクションジェネレータ」の機能仕様をまとめた

「機能仕様」という言葉をなんとなく思いついたが、調べたら普通にある言葉のようです

書いたことないので適当です

機能仕様


1.ロータリーエンコーダー

プッシュで波形を切り替える。波形は「矩形波」「インパルス関数」「ステップ関数」

1.1. 「矩形波」の場合、回して周波数を切り替える。周波数は1、2、5ステップで20Hz~1MHz
「2.可変抵抗」でデューティー比を可変する。デューティー比は0~100%

1.2. 「インパルス関数」の場合、回すとクリックごとに波形を生成する。

1.3. 「ステップ関数」の場合、回すとH/Lを切り替える

2. 可変抵抗

「矩形波」の時だけデューティー比設定用に使用

3. 電源SW

電源のON/OFFを切り替える

4. 出力ジャック

ステレオミニジャックとし、Lは出力波形、Rは仮想GND(VCC/2)、GNDはGND(0V)を出力する

5. 出力VOL

出力波形のレベルを調整する

6. LCD

出力波形、周波数、デューティー比を表示する


入出力デバイス

ケース内のスペースを空けるために最初考えてたよりPOTの数を1個減らした

うまくやれば「2.可変抵抗」も削れそうだが、使いやすさとかLCDの画面遷移の設計のめんどくささを考えて1個は残した

出力レベルはデジタル制御ではなくてアナログ的に減衰させるつもりだ

出力の仮想GND(波形の中点)は抵抗分圧で作ってボルテージフォロワーでバッファリングする

GND(0V)と仮想GND(VCC/2)を出しっぱなしにするという作戦だ

ちゃんとできるかもうちょっと実験しないとだめかな?

「2.可変抵抗」が矩形波のデューティー比の設定だけにしか使わなくてもったいないが
何かうまい手を思いついたらファームウェアで対応する予定

LCDがバックライト付なのでパイロットランプはつけなくていいかな

出力周波数

出力周波数はHz刻みではなくて20Hz, 50Hz, 100Hz, 200Hz ... みたいなとびとびの値にすることにした

まだちゃんと確認してないが、PWMのcount/秒を1MHzとすると


出力周波数(kHz) Hz count
1000 1000000 1
500 500000 2
200 200000 5
100 100000 10
50 50000 20
20 20000 50
10 10000 100
5 5000 200
2 2000 500
1 1000 1000
0.5 500 2000
0.2 200 5000
0.1 100 10000
0.05 50 20000
0.02 20 50000

となってちょうどいい

インパルス関数とステップ関数

これも結構悩んだが、ロータリーエンコーダーをカチッと回すと波形が出る、みたいな感じが使いやすいかなと思った

波形は連続出力するには矩形波出力の周波数をプリスケーラーを使って拡張すればできるかな?

この辺はプログラミングの問題なので必要ならあとで考えることにしてもうちょっと実験する予定