Generatore di frequenza Si5351 e Arduino

CIao a tutti!

in questo post vi parlerò del modulo Si5351,
modulo in grado di generare segnali ad onda quadra ad alta frequenza.

Il produttore parla di un range di frequenza tra gli 8 kHz e i 160 MHz,
con un'ampiezza di segnale di 3.3vpp.





Per prima cosa vi indico dove procurarvi questo modulo,
ad esempio lo trovare su Amazon fornito da HiLetgo.

Ecco lo schema per il collegamento al nostro Arduino



Dopo aver collegato il modulo passiamo alla parte software,
per semplificarci la vita scarichiamo ed installiamo la libreria Si5351Arduino

Ora avviamo il nostro IDE Arduino e apriamo questo esempio:

File -> Esempi -> Etherkit Si5351 -> si5351_example

  1. /*
  2.  * si5351_example.ino - Simple example of using Si5351Arduino library
  3.  *
  4.  * Copyright (C) 2015 - 2016 Jason Milldrum <milldrum@gmail.com>
  5.  *
  6.  * This program is free software: you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation, either version 3 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  */
  19. #include "si5351.h"
  20. #include "Wire.h"
  21. Si5351 si5351;
  22. void setup()
  23. {
  24.   bool i2c_found;
  25.   // Start serial and initialize the Si5351
  26.   Serial.begin(57600);
  27.   i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
  28.   if(!i2c_found)
  29.   {
  30.     Serial.println("Device not found on I2C bus!");
  31.   }
  32.   // Set CLK0 to output 14 MHz
  33.   si5351.set_freq(1400000000ULL, SI5351_CLK0);
  34.   // Set CLK1 to output 175 MHz
  35.   si5351.set_ms_source(SI5351_CLK1, SI5351_PLLB);
  36.   si5351.set_freq_manual(17500000000ULL, 70000000000ULL, SI5351_CLK1);
  37.   // Query a status update and wait a bit to let the Si5351 populate the
  38.   // status flags correctly.
  39.   si5351.update_status();
  40.   delay(500);
  41. }
  42. void loop()
  43. {
  44.   // Read the Status Register and print it every 10 seconds
  45.   si5351.update_status();
  46.   Serial.print("SYS_INIT: ");
  47.   Serial.print(si5351.dev_status.SYS_INIT);
  48.   Serial.print("  LOL_A: ");
  49.   Serial.print(si5351.dev_status.LOL_A);
  50.   Serial.print("  LOL_B: ");
  51.   Serial.print(si5351.dev_status.LOL_B);
  52.   Serial.print("  LOS: ");
  53.   Serial.print(si5351.dev_status.LOS);
  54.   Serial.print("  REVID: ");
  55.   Serial.println(si5351.dev_status.REVID);
  56.   delay(10000);
  57. }


Modificando la riga 38 è possibile modificare la frequenza generata sul canale 0.
Ecco 2 prove che ho fatto (a vuoto) con un oscilloscopio, nella prima immagine vedete un segnale con frequenza 10 MHz, nella seconda un'onda con frequenza 100 kHz








Questo è tutto,
per qualsiasi domanda lascia pure un commento.

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

3 commenti:

  1. Daniele buonasera
    Premetto che non sono capace a programmare e se ho realizzato qualche progetto con Arduino l'ho fatto solo per aver scopiazzato qua e là sul web. Detto ciò volevo realizzare un piccolo beacon hf, sono un radioamatore, e quindi avevo bisogno di un oscillatore molto stabile. Ho realizzato il tuo progettino cambiando la frequenza é devo dire che al momento funziona.
    Se volessi visualizzare la frequenza su un lcd?
    Oppure se volessi cambiarla tramite un piccolo encoder?
    Puoi aiutarmi con lo schema, e la programmazione?
    Mi accontento anche solo dell'inserimento dell Lcd.
    Ti ringrazio

    RispondiElimina
  2. Daniele buonasera
    Premetto che non sono capace a programmare e se ho realizzato qualche progetto con Arduino l'ho fatto solo per aver scopiazzato qua e là sul web. Detto ciò volevo realizzare un piccolo beacon hf, sono un radioamatore, e quindi avevo bisogno di un oscillatore molto stabile. Ho realizzato il tuo progettino cambiando la frequenza é devo dire che al momento funziona.
    Se volessi visualizzare la frequenza su un lcd?
    Oppure se volessi cambiarla tramite un piccolo encoder?
    Puoi aiutarmi con lo schema, e la programmazione?
    Mi accontento anche solo dell'inserimento dell Lcd.
    Ti ringrazio

    RispondiElimina
    Risposte
    1. Non so se hai risolto. Le tue richieste non sono difficili da esaudire. Unica nota: perchè usare si5153 per le hf ? Meglio (e più puro come segnale) un DDS AD9850. Fino ai 12 mhz un AD9833. Semmai scrivimi. Ciao I3GNQ

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post