JH7UBCブログ

アマチュア無線、マイコンなど趣味のブログです。

Arduino

[ リスト | 詳細 ]

記事検索
検索

全15ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]

 Arduino Di5351A 7MHz VFOの実験を進めるのにあたり、簡単な筐体にセットしてみました。

 うまくいけば、無線機にと考えていますので、もう顔つきは無線機です。Hi

イメージ 1

パネルの裏面です。部品の取り付けの様子がわかります。

イメージ 2

 スペアナを持っていないので、無線機でSi5351Aの信号を見てみました。

 CLK0の出力を1KΩのボリュームに入れ、ボリューム最小の位置で信号を無線機IC-756PROのアンテナ端子に入力しました。

 CWモードで受信するとSメータは、9+20dBまで振りました。

イメージ 3

 周波数のずれは、あまり感じられません。

 第2高調波14MHzを見ます。

イメージ 4

あれ!、小さな音は聞こえますが、Sメータはほとんど振れません。

第3高調波21MHzを見ます。

イメージ 5

 本家の信号とほとんど変わらない強度で9+18dB程度でしょうか。

 第4高調波28MHzを見ます。

イメージ 6

 これは、ほとんどSメータが振れません。この以上の周波数も同様に偶数の高調波は、小さく、奇数の高調波は、大きくSメータが振れます。

 もうわかりましたね。Si5351Aの出力は、矩形波です。この場合奇数倍の高調波が強く発生します。

 ですから、この信号を送信機に使う場合は、LPFを通して高調波を減少させなければなりません。

 受信機に使う場合は、どうでしょう。これから実験します。

 なお、Si53551Aの出力は、CLK0で、レジスタ16を8mAにセットした場合、13.6dBm=22.9mW の出力が出ます。

 けっこうパワフルです。

 VFOモジュールには、5Vを供給し、消費電流は40mAでした。

Arduino Si5351A 7MHz VFO

 Arduinoと3チャンネル クロックジェネレータSi5351Aを使った7MHz VFOは昨年の12月に試作しました。

 記事は、こちら

 このVFOを使って7Mhzのトランシーバーを作ってみようと思います。

 ユニバーサル基板を使って、プロトタイプの7MHz VFOを作ったみました。

 回路とスケッチは、前の記事とほぼ同じですが、うまくいけば、このまま組み込みますので、Arduinoは、aitendoの「あちゃんでいいの」を使い、USBシリアル変換FT232RLを使ってスケッチを書き込みます。

 また、I2Cレベル変換モジュールPCA6306を「あちゃんでいいの」とSi5351Aの間に入れています。

 ディスプレイは、NOKIA5110を使い、「あちゃんでいいの」との間には、レベル変換を行う74HC4050を入れました。

 回路図です。
イメージ 1

VFOユニットです。

イメージ 2

 ロータリーエンコーダ、スイッチ、ディスプレイを接続してVFOの動作をチェック

 スケッチは、JH7UBCホームページの記事に掲載しています。(ただし、NOKIA5110の接続が、9,10,11,12,13から、8,9,10,11,12に変更しました)

イメージ 3

 表示周波数より若干低い周波数を発振します。ソフトで修正したいと思います。

 
 次は、ダイレクトコンバージョン受信機にこのVFOを接続して、受信テストをしてみます。


 秋が日に日に深まっています。家の中にいる時間が増えてきました。

 久しぶりにArduino UNOを引っ張り出してきて、実験を始めました。

 まず、昨年12月にやっていた3チャンネルクロックジェネレータSi5351Aの実験の続きです。

 出力の位相を制御する実験です。昨年は、これがあまりよく分からなかったのですが、JA2GQP局のブログとそこで紹介されているTj Labのサイトを見て、ようやく理解できました。

 Si5351Aの位相制御(遅延制御)は、レジスタ」165(CLK0),166(CLK1),167(CLK2)のbit4〜bit0の値で行います。

 その値は、次の式で与えられます。(マニュアルAN619 p10より)

 CLKx_PHOFF[4:0] = Round(Desired Offset (sec) × 4 × Fvco)  (FvcoはPLLの周波数)

 設定値をN,遅延時間をtdと書くと

 N = td * 4 * Fvco ・・・(1) ( 0<= N <=127 )となります。

 CLK1をCLK0に対して位相を90度遅らせる実験を行います。

 位相を90度遅らせるということは、出力信号の周期をTとするとT/4遅らせることです。

 出力の周波数をFoutとするとT=1/Foutですから

 td = 1/(4*Fout) ・・・(2)

 (2)を(1)に代入すると

 N = 1/(4*Fout) * 4 Fvco = Fvco/Fout となります。

 つまり、Fvco/Foutの値をレジスタ165〜167にセットすれば良いことになります。

 具体的に実験します。

 当ブログのSi5351その9(マルチチャンネル化の実験)のプログラムを利用します。

 Fvco=PLL周波数は900MHzとし、Fout=10MHzとするとN=900/10 = 90 となります。

 スケッチの中では、dividerの値になります。

まず、
#define CLK0_PHOFF 165
#define CLK1_PHOFF 166
を加えて、setup()を次のように書き換えます。

void setup(){
  Wire.begin(); // Arduino is Master
  Si5351_init(); //Si5351 initialize
 
//PLLAのセット 900MHz,CLK0=10MHz
  frequency = 10000000;
  divider = 900000000 / frequency;
  if (divider % 2) divider--;
  PLL_Set('A',frequency,divider);
//CLK0の設定
  Si5351_write(CLK0_CTRL,0x4C); //CLK0 Sorce PLLA
  MS_Set(0,divider);
  Si5351_write(CLK0_PHOFF,0);//CLK0 delay 0
 
//CLK1の設定
  Si5351_write(CLK1_CTRL,0x4C); //CLK1 Sorce PLLA
  MS_Set(1,divider);
  Si5351_write(CLK1_PHOFF,divider);//CLK1 delay T/4 (90degree)
 
  Si5351_write(PLL_RESET,0xA0); //Reset PLLA and PLLB
}

 最初、PLL Resetをしないで実験をしたら、位相が変わりませんでした。
 CLK0,CLK1の設定の後、PLLをリセットしたら、位相が変わりました。

 CLK0(青)とCLK1(赤)の出力波形です。

イメージ 1

 確かに、90度(4分の1周期)ずれています。ただ、矩形波が出力されるはずなのですが、私のpico scopeが上限10MHzですので、波形がなまっているかもしれません。

 回路図です。5Vを3端子レギュレータで3.3Vに落としていますが、Si5351Aだけなら3.3Vに直接接続してもOKです。

 秋月のI2Cレベル変換モジュールPCA9306をArduino UNOとSi5351Aの間に入れました。(入れなくとも動作しますが、安全のために入れました。2017.10.16追記)

イメージ 3


 ブレッドボードです。
イメージ 2


 なお、以上をまとめて、JH7UBCホームページに掲載しています。


 

Arduino I2C LCD1602

 先日、Raspberry Piで、I2Cシリアルパラレル変換モジュール付のLCD1602の表示テストをして、うまくいきました。

 そこで、今回は、そのプログラムをArduino用に移植してみました。

 Arduinoでは、LCDの表示は、ライブラリーを使いますが、今回のテストでは、ライブラリーを使わないで、I2C LCD1602に文字を表示することができました。

イメージ 1

 ArdinoとI2C LCDとの接続は
 Arduino  LCD
 GND     GND
 5V        Vcc
 A4        SDA
 A5        SCL
です。

 テストしたスケッチは、次の通りです。

--------------------------------------------------------
/*
 * I2C LCD1602 Display test
 * 2017/6/20
 * JH7UBC Keiji Hata
 */
 #include <Wire.h>
 #define  addr  0x27
 #define  LCD_EN    0b00000100//Enable
 #define  LCD_BL    0b00001000//Back Light
 #define  LCD_CMD 0x00
 #define  LCD_CHR 0x01
 #define  LCD_LINE1 0x80
 #define  LCD_LINE2 0xC0
 
void setup() {
  Wire.begin();
  LCD_init();
  LCD_display();
}
void LCD_write(byte bits,byte mode){
  //High 4bits
  Write_data((bits & 0xF0) | mode);
  //Low 4bits
  Write_data(((bits << 4) & 0xF0) | mode);
}
void Write_data(byte data){
  Wire.beginTransmission(addr);
  Wire.write(data | LCD_EN | LCD_BL);
  Wire.write(data | LCD_BL);
  Wire.endTransmission();
  delayMicroseconds(100); 
}
void LCD_init(){
  LCD_write(0x33,LCD_CMD);
  LCD_write(0x32,LCD_CMD);
  LCD_write(0x06,LCD_CMD);
  LCD_write(0x0C,LCD_CMD);
  LCD_write(0x28,LCD_CMD);
  LCD_write(0x01,LCD_CMD);
  delay(1);
}
void LCD_clear(){
  LCD_write(0x01,LCD_CMD);
  delay(1);
}
void LCD_home(){
  LCD_write(0x02,LCD_CMD);
  delay(1);
}
void LCD_cursor(byte x,byte y){
  if (y == 0){
    LCD_write(LCD_LINE1+x,LCD_CMD);
  }
  if (y == 1){
    LCD_write(LCD_LINE2+x,LCD_CMD);
  }
}
void LCD_text(String s){
  for (int i=0; i< s.length(); i++){
    LCD_write(s.charAt(i),LCD_CHR);
  }
}
void LCD_display(){
  LCD_text("Hello World!");
  LCD_cursor(8,1);
  LCD_text("JH7UBC");
}

void loop() {
}
--------------------------------------------------------
以外に簡単なスケッチで、表示させることができます。
 先日試作したArduino レシプロカル式周波数カウンタをArduino NANOを使い基板に組みました。

 エレクトレットコンデンサマイクの出力をLM358オペアンプ(増幅率100倍)で増幅してArduinoに入力しています。

 電源は、006Pを使い、78L05で5Vに落としています。電流は約40mAです。

イメージ 1

回路図です。

イメージ 3


自作のファンクションジェネレータで約1000Hzを発生させてスピーカーから音を出し、マイクでひろってカウントしてみました。

イメージ 2

±1Hz程度で表示します。

 感度はそれほど高くありませんが、雑音に反応しないので、ちょうど良いかもしれません。

 スケッチは、前回の記事とほぼ同じです。

 周波数表示のレスポンスが良いので、受信時のCWのトーン周波数の測定などに、とりあえず使ってみましょう。

 基板は、アルミ板に固定しただけです。実際のケーシングは後ほど行います。

2017.5.18 追記

 ケースに入れました。ケースは、秋月電子のプラスチックケースSK-16です。

イメージ 4


全15ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]


.
JH7UBC
JH7UBC
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

よしもとブログランキング

もっと見る

[PR]お得情報

ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事