ブザーの音量調整(発振回路内臓 HDB06LFPNの音量調整)

HDB06LFPN ブザー

秋月電子で購入できる発振回路内臓のブザーHDB06LFPNは外形寸法:φ15mm×13mm、低価格で電子工作では良く使われているパーツです。5Vを印加すると音がでます。ただ、音量が可変できない、音があまり良くないといわれたりします。
このブザーをPWMで駆動することによって、音量を可変することが可能です。下の回路図で、SG1はブザーHDB06LFPNで2SC1815でスイッチングします。2SC1815のベースの先には、PICのCCPに接続されています。

ブザー駆動回路

以下のようなプログラムで確認しました。

////////////////////////////////////////////////////////////////////////////////
CCPR1L = 0;
while(1){
 if (Ps2_Key_Read(&KeyValue, &KeySpecial, &KeyPressed)) {
  Lcd_Cmd(LCD_CLEAR);
  Lcd_Cmd(LCD_RETURN_HOME);
  Lcd_Chr_Cp(KeyValue);
  if(KeyPressed==1){
   if(CCPR1L < 245 ){
    CCPR1L = CCPR1L + 1;
   }else {
    CCPR1L = 0;
   }
   ByteToStr(CCPR1L,CCPR1LStr);
   Lcd_Out_Cp(CCPR1LStr);
   LCd_Out_Cp(":");
   ByteToStr((CCP1CON & 0b00110000),CCP1CONStr);
   Lcd_Out_Cp(CCP1CONStr);
  }else{
   ByteToStr(CCPR1L,CCPR1LStr);
   Lcd_Out_Cp(CCPR1LStr);
   LCd_Out_Cp(":");
   ByteToStr((CCP1CON & 0b00110000),CCP1CONStr);
   Lcd_Out_Cp(CCP1CONStr);
  }

 }

}// end of while
////////////////////////////////////////////////////////////////////////////////

Pwm1_Change_Duty()の引数は、0−255であるのでこの関数では256段階にしかDUTYを変更できません。
この関数を使うとCCP1CONにも値がセットされますが、256段階しか変更できないのでCCP1CONのDUTYに
相当する部分は0をセットしておいてCCPR1Lだけを直接変更してもDUTYを変更することができます。

上のプログラムでCCPR1Lを0から1づつ上昇していくとある程度数値に比例して音量が増加します。ただ数値がある値
以上(50−100)になると音量的にあまり変化なく、音はひずんだようになっていきます。
255まで増加させるとDUTYは100%で、直流で駆動した場合と同じ音になります。直流で駆動した場合はあまり評判の
良くないひずんだような音です。
DUTY比で0から40程度までの値でブザーを駆動すると比較的澄んだきれいな音で音量変化させることができます。

PWMのDUTYの変更は、Pwm1_Change_Dutyを使うよりはCCPR1Lの値を直接変更したほうが実行ファイルが小さく
なるのと、メインルーチンと割り込みルーチンの両方で使ってもmikroCからコンパイル時に文句を言われなくなります。

戻る
TOPへ