Raspberry PiでハードウェアPWMができることが分かったところで、本格的に昇圧ドライブの実験をする事にします。今回の主役はこちら。千石電商で買ったチョークコイル達です。50mHでそれなりの音量が得られたので、ここは他のインダクタンスの実験をしたいと思います。防犯ブザーを買ってきて中のコイルを引っこ抜く方が安いと思いますが、インダクタンスが分からないので、ここは素直に購入しました。先日の回路を使い、それぞれのチョークコイルに差し替えて、音量、消費電流を測定します。音量測定に使用したのはiPhoneのアプリ。正確では無いと思いますが、そもそもそれほどの正確性が必要な訳では無いので、これでよしとします。測定条件を揃えるため、iPhoneの裏にペンを貼り付けてスピーカーとマイクの距離を揃えました。測定の結果は以下の通り。50mH 26.5mA/440Hz 61.4mA/880Hz 80-84db100mH 19.1mA/440Hz 27.1mA/880Hz 82db200mH 7.2mA/440Hz 9.9mA/880Hz 77-78db500mH 1.9mA/440Hz 8.8mA/880Hz 69-74db意外ですがインダクタンスが低い方が音量が大きいという結果になりました。磁力を蓄積できる量よりも、電流量の影響が大きいということでしょうか。そういえばラジコンのモーターもターン数が小さい方がパワーが出ますね。この結果からすると100mHが電流と出力とのバランスが良いので、これを使うことにします。次はパルス幅を変えて実験します。ハードウェアPWMなので細かく設定できるのが良いです。コードはこちら。
#include#include #include #include void setSignal(int p_signame);void signalHandler(int p_signame);int main(void){ setSignal(SIGINT); wiringPiSetup(); pinMode(1,PWM_OUTPUT); // pwmSetMode (PWM_MODE_BAL); pwmSetMode (PWM_MODE_MS); pwmSetRange(100);//百分率がわかりやすいので100 int i = 0; pwmSetClock(436);//Rangeが100の場合、192,000÷目標の周波数 while(1){ for(i=1;i<=9;i++){ pwmWrite(1,i*10); printf(""now %d%%\n"",i*10); usleep(3000000); } }}//シグナルの設定void setSignal(int p_signame){ if (signal(p_signame, signalHandler) == SIG_ERR) { //エラー printf(""Could not set signal handler\n""); exit(1); } return;}//シグナル受信/処理void signalHandler(int p_signame){ printf(""I got signal. Number is %d.\n"", p_signame); pinMode(1,INPUT); exit(0);}
10%ずつパルス幅を大きくしていって、何処が一番音量が大きくなるかを確かめます。ちなみに耳が痛いのでスピーカーの穴にはセロテープを貼っています。汚い部屋が見えていますがそこはご愛敬ということで。Macの画面が見えていませんが、音が鳴り出した最初が10%、そこから10%ずつ増えていきます。最初は電流の増加に応じて音量が上がりますが、60%のところで音量は頭打ちになりました。43mA以上は流しても無駄ですね。ちなみにこのコイルの仕様は以下の通り。仕様ぎりぎりまでまだ余裕があります。オーバードライブしていると、ピエゾはそれほどダメージは大きくなさそうなのですが、コイルが結構熱を持つので気を遣います。別に実験したのですが、パルス幅は1%だと側でも聞いていられる程度の音量になりました。なので1%、10%、60%とソフトウェアからパルス幅を操作して音量を操作できるようになりました。実装部品を増やさずに音量調整ができるのは良いことだと思います。 """