Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

ArduinoでAD9834DDSその6

$
0
0
 
 AD9834DDSの初期バージョンが一応できました。
 
 AD9834で希望周波数を発生し、周波数は、I2C LCD AQM0802に表示します。
 
 周波数ステップは、以前にPICで製作したAD9850DDS SGと同じように、STEPボタンを押すたびに
 
 1MHz→100KHz→10KHz→1KHz→100Hz→10Hz→1MHzと循環するようにしました。
 
 ロータリーエンコーダーを右(時計回り CW)に回すとステップ周波数の値だけ周波数が上がり、左(反時計回り CCW)に回すと周波数が下がります。
 
 回路図です。
 
イメージ 1
 
 Arduino UNOとブレッドボー上の配線の様子です。
 
イメージ 2
 
スケッチの一部を紹介します。(JA2GQP局のスケッチを使わせていただいています)
 
//Main Program
void loop() {
  if(digitalRead(SW_STEP) == LOW){
    Fnc_Stp();
  }
  Fnc_Dds(FREQ);
  Fnc_Lcd();
  delay(100);
}
 
//割り込みサービスルーチン
ISR(PCINT2_vect){
  unsigned char result = r.process();
  if(result){
    if(result == DIR_CW){
      FREQ = FREQ + STEP;
    }
    else{
      FREQ = FREQ - STEP;
    } 
    }
  }
 
//STEPボタンが押された時の処理
void Fnc_Stp(){
  if(STEP == 10){
    STEP = 1000000;
  }
  else{
    STEP= STEP / 10;
  }
  delay(250);
  Fnc_Step_Disp();
  while(digitalRead(SW_STEP) == LOW){
    delay(250);
  }
}
 
 これで、任意の周波数を発生できるようになりました。
 
 発生できる周波数の上限を測定すると約23.6MHzでした。マスタークロックの半分まではいきません。
 
 将来7MHz CWトランシーバーのVFOとして使いたいと考えています。その場合は、16MHz台を発生させる予定なので、このAD9834DDSで大丈夫だと思っています。
 
 なお、ここまでのArduinoでAD9834DDSの記事をまとめてJH7UBCホームページに掲載します。

Viewing all articles
Browse latest Browse all 440

Trending Articles