Projekt:Nano-Langwellensender

Aus Schaffenburg
Zur Navigation springen Zur Suche springen
Crystal Clear app error.png
Arduino Langwellensender

Status: unstable

WhatsApp Image 2017-05-05 at 21.32.15.jpeg
Beschreibung Amateurfunk-Morsebake aus Arduino Nano
Ansprechpartner Hendi


Übersicht

Achtung!

  1. Projekt ist noch TBD
  2. Sendebetrieb nur lizenzierten Funkamateuren erlaubt

Verwendung eines handelsüblichen Arduino Nano als Langwellenbake niedriger Leistung für Amateurfunk.

Mit den Arduinos kann man relativ hochfrequente Signale erzeugen und damit Sender bauen. Die Modulationssignale kann er dank timern auch kontrollieren, z.B. für Morsetelegraphie das Signal tasten. Dieses Beispiel arbeitet im 137 kHz Amateurfunkband.

Verantwortlicher

Hendi, dg3hda

Details

Aufgrund meiner Bequemlichkeit wird der Träger in den Pausen nicht abgestellt sondern nur die Pulsweite auf Minimalwert gestellt. Bei Aussendung mit "vollem Pegel" steht die Pulsweite bei 50%. Vor Einsatz an effektiven Antennen sollte man einen Tief- oder Bandpassfilter zwischenschalten um das Rechteckspektrum auf möglichst die eine, erwünschte Linie zurechtzuknüppeln.


Empfangsprobe

Das Signal wurde in etwa 1/2 m Entfernung mit einem Kenwood TH-F7E an dessen interner Ferritstabantenne empfangen und ein kleines Video aufgenommen

Code

Der folgende Code codiert ein N in Morsetelegraphie, bitte an eigenes Rufzeichen und Message anpassen!

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
//Ausgang konfigurieren
pinMode(3, OUTPUT);
//Timer 2 modus zurechtbitteln
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS20);
//Timer 2 einen maximalen Zählwert vorgeben, bestimmt Frequenz
OCR2A = 117;

//sorry
while (1)
{
//Pause von 10 Sekunden
OCR2B = 0;Minimale Pulsbreite. Träger wird also nicht ganz abgeschaltet aber reduziert.   
_delay_ms(10000); //sag nix!
OCR2B = 59;     //Tastung - 50% Tastverhältnis der PWM
_delay_ms(300);  //Dauer eines bequemen DAH oder Interzeichenpause
OCR2B = 0;      //Aus
_delay_ms(100);  //Intersymbolpause oder ein DIT
OCR2B = 59;     //Und Träger wieder her
_delay_ms(100);  //Dauer eines bequemen Dah
OCR2B = 0;      //Träger wieder weg
}
}

Referenzen