Events

23.05.2022: Tiefpassfilter

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    YouTube

    Werbung:


    Neue Artikel


    Events

    Der Technik-Blog

    Arduino SI5351 Taktgenerator und Frequenzgenerator

    Arduino Frequenzgenerator

    Alex @ AEQ-WEB

    HF-Frequenzgeneratoren werden benötigt, um beispielsweise Empfänger oder Signalanzeigen überprüfen zu können. In diesem Artikel zeigen wir, wie man einen Takt-Generator mit dem Arduino baut und damit die Testsignale und Testfrequenzen generiert. Als Hardware wird der SI5351A Taktgenerator verwendet, der über die I2C Schnittstelle mit dem Arduino kommuniziert. Der Taktgenerator arbeitet laut Herstellerangaben im Frequenzbereich zwischen 8 KHz und 160 MHz. Der Takt-Generator verfügt über drei Kanäle, die jeweils unterschiedliche Frequenzen zugleich ausgeben können.

    Verdrahtung mit dem Arduino

    Der Frequenzgenerator Arbeit mit 3.3 und 5 Volt. Der Datenaustausch erfolgt über I2C. Der SI5351 wird in der regel zerlegt geliefert, was bedeutet, dass man die Stiftleiste und die drei SMA-Buchsen erst an die Platine löten muss. Neben SCL und SDA wird lediglich noch die Stromversorgung (+5V & GND) benötigt.

    Werbung:

    Die Library

    Adafruit stellt für den Modulator eine Library bereit, die den SI5351 unterstützt. Im Beispiel-Code werden alle drei Kanäle mit jeweils einer unterschiedlichen Variante programmiert. Um bestimmte Frequenzen und Eigenschaften generieren zu können, muss man sich für eine dieser Varianten entscheiden. Der unten angeführte Code stammt teilweise vom Beispielcode und wurde etwas vereinfacht. Mit diesem Code ist es Möglich, alle Frequenzen von der unten angeführten Tabelle zu generieren.


    Quellcode

    //Source: https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/overview
    #include <Wire.h>
    #include <Adafruit_SI5351.h>
    
    int plla = 36; //Define factor for frequency (1-50)
    
    Adafruit_SI5351 clockgen = Adafruit_SI5351();
    
    void setup() 
    {
      Serial.begin(9600);
      Serial.println("Si5351 Clockgen Test"); 
      Serial.println("");
      if (clockgen.begin() != ERROR_NONE)
      {
        Serial.print("No Si5351 detected ... Check your wiring or I2C ADDR!");
        while(1);
      }
      Serial.println("System running...");
      float freq = plla*25/8.0;
      clockgen.setupPLLInt(SI5351_PLL_A, plla);
      Serial.println(freq, 3);  
      clockgen.setupMultisynthInt(0, SI5351_PLL_A, SI5351_MULTISYNTH_DIV_8);
      
    }
    
    void loop() 
    {  
      clockgen.enableOutputs(true);
      delayMicroseconds(500);
      clockgen.enableOutputs(false);
      delayMicroseconds(500);
    }

    Der Quellcode

    Mit dem oben angeführten Quellcode können über 50 verschiedene Frequenzen generiert werden. Die Ausgabefrequenz errechnet sich aus der Formel plla-wert*25Mhz/8 oder plla-wert*25Mhz/6. "plla" ist ein Wert zwischen 1 und 50, der am Beginn vom Programm definiert wird. Die Tabelle zeigt, was die Ausgabefrequenz beim jeweiligen plla-Wert in Abhängigkeit vom Divisionsfaktor (8 oder 6) ist.

    Töne generieren

    Normalerweise wird nur ein leerer Träger ohne Modulation erzeugt. Gerade um z.B. analoge Empfänger die keine Signalstärke anzeigen, testen zu können, wird ein Test-Ton benötigt. Unser Beispielcode macht dies bereits, indem er ständig im Mikrosekunden-Bereich den Sender Ein- und Ausschaltet. Durch den schnellen Wechsel vom Zustand des Senders erreicht man, dass aus den Empfängern ein Ton hörbar wird. Durch die Änderung vom Delay kann die Tonhöhe angepasst werden. Achtung: Es handelt sich dabei um keinen echten Tongenerator, der als Referenzfrequenz genutzt werden kann.

    Werbung:

    Frequenztabelle

    *Hellgrüne Felder sind Frequenzen im Amateurfunkband

    PLLA Faktor 8 Faktor 6 PLLA Faktor 8 Faktor 6
    1 3.125 MHz 4.167 MHz 27 84.375 MHz 112.500 MHz
    2 6.250 MHz 8.333 MHz 28 87.500 MHz 116.667 MHz
    3 9.375 MHz 12.500 MHz 29 90.625 MHz 120.833 MHz
    4 12.500 MHz 16.667 MHz 30 93.750 MHz 125.000 MHz
    5 15.625 MHz 20.833 MHz 31 96.875 MHz 129.167 MHz
    6 18.750 MHz 25.000 MHz 32 100.000 MHz 133.333 MHz
    7 21.875 MHz 29.167 MHz 33 103.125 MHz 137.500 MHz
    8 25.000 MHz 33.333 MHz 34 106.250 MHz 141.667 MHz
    9 28.125 MHz 37.500 MHz 35 109.375 MHz 145.833 MHz
    10 31.250 MHz 41.667 MHz 36 112.500 MHz 150.000 MHz
    11 34.375 MHz 45.833 MHz 37 115.625 MHz 154.167 MHz
    12 37.500 MHz 50.000 MHz 38 118.750 MHz 158.333 MHz
    13 40.625 MHz 54.167 MHz 39 121.875 MHz
    14 43.750 MHz 58.333 MHz 40 125.000 MHz
    15 46.875 MHz 62.500 MHz 41 128.125 MHz
    16 50.000 MHz 66.667 MHz 42 131.250 MHz
    17 53.125 MHz 70.833 MHz 43 134.375 MHz
    18 56.250 MHz 75.000 MHz 44 137.500 MHz
    19 59.375 MHz 79.167 MHz 45 140.625 MHz
    20 62.500 MHz 83.333 MHz 46 143.750 MHz
    21 65.625 MHz 87.500 MHz 47 146.875 MHz
    22 68.750 MHz 91.667 MHz 48 150.000 MHz
    23 71.875 MHz 95.833 MHz 49 153.125 MHz
    24 75.000 MHz 100.000 MHz 50 156.250 MHz
    25 78.125 MHz 104.167 MHz 51 159.375 MHz
    26 81.250 MHz 108.333 MHz


    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    Arduino Smartmeter S0 Watt Counter

    Arduino Smartmeter

    • Video

    In diesem Artikel zeigen wir, wie aus einem einfachen Stromzähler und einem Arduino ein Smartmeter gebaut wird, das den Zählerstand im EEPROM speichern kann

    Weiterlesen
    Arduino Anemometer Wind Sensor

    Arduino Anemometer Schaltung

    • Video
    • DE/EN

    Mit einem Mikrocontroller wie dem Arduino, einer kleinen Schaltung und entsprechender Software kann die Windgeschwindigkeit über ein Anemometer gemessen werden

    Weiterlesen

    Social Media

    YouTube

    Werbung:


    Neue Artikel


    Events