LoRaWAN Packet Coder
26.01.2025
Elektronik | Funk | Software
Der Technik-Blog
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.
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.
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.
//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); }
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.
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.
*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 |
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
WeiterlesenDer PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino
WeiterlesenAEQ-WEB © 2015-2025 All Right Reserved