SØ6
Ortsverband Dresden-Land
  • FUNKEN
  • WAS WIR SONST  MACHEN
  • ÜBEN
  •    EXPERIMENTIEREN
  •    BEWAHREN
  •    ERLEBEN
  • KONZENTRIEREN
  •    ENTWICKELN
  •    MESSEN
  •    NEUE WEGE SUCHEN
  •    ERKUNDEN
  •    VERSUCHEN
  •   FASZINIERT WERDEN
  •    GEMEINSAM ZIELE ERREICHEN
  •    KONSTRUIEREN
  • NATUR ERFAHREN
  •  SINNE ERWEITERN

Ein klitzekleiner Keyer für QRP und Eigenbau

 
 

Vor zwei Jahren organisierte unser OV einen Feldtag. Da ich zu diesem Zeitpunkt keinen für den Portabelbetrieb geeigneten Transceiver besaß, bestellte ich mir bei QRP-Project den Bausatz "Mrs. Mosquita"- ein 40m Monobander, und einen SMD-Messkopf zur SWR-Erfassung. Als das kleine Ding als Platine auf dem Shacktisch seine ersten QSO absolviert hatte, bestellte ich das Gehäuse dazu eine Nummer größer und begann ergänzend mit dem Bau einer Displayanzeige für SWR, Betriebsspannung und Frequenz. Auch ein Keyer sollte integriert werden. Da der Trx aus einem Bausatz entstanden war, beschloss ich, wenigstens die Ergänzungen selbst aufzubauen und auf ATMEL-Basis zu programmieren. Ich begann mit einem Breakout-Board, bestückt mit einem ATMEGA368, 20-MHz-Quarz und ISP-Wannenbuchse, das sich im Bastelvorrat fand. Nachdem Frequenzzähler, SWR-Anzeige und Betriebsspannungsanzeige funktionierten, merkte ich, dass ich den Keyer nicht ohne weiteres noch auf dem ATMEGA368 unterbringen konnte. Die Timer des ATMEGA368 waren vom Frequenzzähler okkupiert. Der Code würde unübersichtlich und damit fehleranfällig werden. Daher lagerte ich den Keyer auf einen ATTINY13 aus. Dieser "8-Pin-Riese" hat nur 1024 Byte für das Programm und 64 Byte RAM für Daten und Stack sowie 64 Byte EEPROM. Es war daher spannend und eine "sportliche" Herausforderung, was man daraus machen kann. Das Endergebnis stelle ich hier vor.

 

 

Schaltung des ATTINY-Keyers

 

Bild 1 gibt die Schaltung "im Endzustand" wieder.

 

   
     
 

Bild 1: Schaltplan des ATTINY13-Keyers

 

 

 

 

Von den 8-Pin des ATTINY13 werden die Anschlüsse PB0-PB4 wie folgt genutzt:

 

 Pin Funktion
 PB0 Paddle - Striche
 PB1 Paddle - Punkte

PB2

und

PB3

Steuersignale vom ATMEGA368 für den Betriebsmodus des Keyers
 PB4 PTT - Ausgang

 

 

 

 

 

 

 

 

 

 

 

 

PB5 wird nicht genutzt. Um ihn zu nutzen, müsste ein Fusebit geändert werden, und durch den Verlust der RESET-Funktion an diesem PIN wäre eine Programmierung nicht mehr möglich. Die Beschaltung außer Q1, R2 und R6 wurde während des Aufbaus hinzugefügt. Q1 und R2 ziehen den Tastenanschluss an Mrs. Mosquita auf Masse, wenn PB4 auf "High" geschaltet ist. R6 ist die notwendige Standardbeschaltung des RESET-Pins.

 

  • R1, R3, D1, JP1 und JP2 sichern, dass der aufgebaute Keyer über den ISP-Wannenstecker programmiert werden kann. D1 verhindert, dass die Spannungsversorgung des Programmiergeräts auch Display und ATMEGA368 versorgen muss. Der ATTINY13 kommt mit den verbleibenden 4,4 V gut aus. R1 und R2 "isolieren" ATMEGA368 und ATTINY13, so dass bei unterschiedlichen Schaltzuständen der verbundenen PINs während des Programmierens kein Problem auftritt. Die beiden Jumper JP1 und JP2 müssen beim Programmmieren gezogen werden, da die Beschaltung mit C1 und C2 den Programmiervorgang hindert. Ich habe die Tiefpässe C1/R5 und C2/R4 direkt auf die Stereo-Klinkerbuchse für die Taste gelötet, und der Steckverbinder zwischen Frontplatte und Ergänzungsplatine erfüllt dann die Trennfunktion. Nach dem Hinzufügen dieser Beschaltung war das Flashen via Wannenstecker mit einem USBTiny-Programmierer nutzbar.
    Wenn man einen ATTINY13 im 8-PDIP-Gehäuse mit Fassung verwendet und ihn extern programmiert, kann man auf den Wannenstecker, D1,JP1 und JP2 verzichten, muss man bei Programmänderungen den Prozessor aber jedes mal ziehen und nach dem Aufbringen des Programms wieder einbauen. Das ist bei einem 8-PIN Schaltkreis tragbar, wenn man den Keyer nicht gerade neu entwickelt und häufig flashen muss.

  • Die Tiefpässe C1/R5 und C2/R4 habe ich vorgesehen, da im Betriebsmodus "Handtaste" die Tastung mit einem Bug bei schnellen Punktefolgen nicht sauber an den Trx durchgereicht wurde. Der Punktkontakt eines Bug prellt aufgrund des federnden Kontakts viel länger als gute mechanische Paddles und Handtasten, so dass mit den beiden Tiefpässen hier eine Entprellen erfolgt. Wenn man nur mechanisch gut gebaute Paddles oder Handtasten verwendet, benötigt man die Tiefpässe nicht. Die Kombination 100n /10k in Verbindung mit dem Pullup-Widerstand im Prozessor von ca. 50k ist ein guter Kompromiss. Die erreichten Restprellzeiten liegen damit um 5ms.

 

Das folgende Bild zeigt das Innenleben von Mrs. Mosquita. Der Keyer ist rot umrandet, ein Teil der Beschaltung befindet sich auf der Platinenunterseite und auf dem Stereo-Klinkenstecker für die Morsetaste.



   
     
 

Bild 2 - Keyeraufbau auf Lochraster

 

 

 

Betriebsmodi des ATTINY-Keyers

 



 

Der ATTINY-Keyer hat folgende Betriebsmodi, die durch die Pegel an PB2 und PB3 gesteuert werden.

 

 

PD3

     PD2

   

Betriebsmodus

 0

  0  

Paddlemodus - an P4 wird ein Paddle erwartet

0

  1  

CQ-Ruf, der Keyer gibt einen CQ-Ruf mit dem fest programmierten Call aus

1

  0  

Handtastenmodus - an P4 wird eine Handtaste angeschlossen

 1   1  

Geschwindigkeitseinstellung für den Paddlemodus

 

 

Die Signale für die beiden Ports liefert der "Hauptrechner" von Mrs. Mosquita, ein ATMEGA368, der auch dazu die entsprechende Anzeige am Display generiert .

 

   
     
 

Bild 3: Anzeige des Betriebsmodus im Display

 

 

 

Paddlemodus

 

Hier wird die übliche Keyerfunktionalität abgebildet, es werden Punkte, Striche und Strichpunktfolgen generiert. Der Keyer wertet während der Abarbeitung der auszugebenden Zeichen die Paddleeingänge aus und kann eine Statusänderung am Paddle "auf Vorrat" speichern, so dass ein flüssiges Geben möglich ist. Nach 15 aufeinanderfolgenden Punkten schaltet der Keyer auf Dauerton. Das ist als Abstimmhilfe beim Paddlebetrieb gedacht. Der Dauerton kann mit 1xStrich wieder abgeschaltet werden.

 

CQ-Ruf

 

Da man mit einem 5W Transceiver gelegentlich doch etwas länger rufen muss, habe ich mir einen Rufpapagei programmiert. Nach einer kleinen Pause von von 2,5 Sekunden ruft dieser "CQ CQ CQ DE DD7NT/QRP DD7NT/QRP DD7NT/QRP PSE K". Die kurze Pause am Anfang ist erforderlich, damit bei der Steuerung der Betriebsmodi per Drehgeber der Keyer nicht zu rufen beginnt, wenn der Betriebszustand "CQ-Ruf" beim Drehen nur kurz überfahren wird. Nach dem Ende einer Sequenz legt der Keyer eine Pause von 10 Sekunden ein, bevor der Ruf erneut gegeben wird.

 

Man kann das Rufen mittendrin mit "Punkt" oder mit der Handtaste abbrechen. Schaltet man während des Rufens aus dem CQ-Modus wieder in den Paddlemodus zurück, wird die Rufsequenz fertig gegeben, beginnt aber nicht von neuem. Die Rufsequenz ist im Keyer fest programmiert. Bei Änderung des Rufzeichens muss der Keyer neu programmiert werden. Im Kontest kann man auch mit Winkey + Kontestlogger im Handtastenmodus arbeiten.

 

Handtastenmodus

 

Damit die Frontplatte übersichtlich wird, gibt es nur eine Buchse für alle Arten von Morsetasten. Der Keyer startet (vom ATMEGA368 gesteuert) im Paddlemodus. Bevor man eine Handtaste oder einen Bug anschließt, muss man in den Handtastenmodus schalten. Dann repliziert der Keyer einfach den Status des PB1 auf den PTT-Ausgang PB4 in einer schnellen Schleife. Bei meinen Handtasten liegt der Mittelkontakt der 3,5-mm-Stecker auf Masse.

 

Geschwindigkeitseinstellung

 

Der Keyer startet mit der zuletzt eingestellten Geschwindigkeit. Wurde noch keine Geschwindigkeit eingestellt, startet er mit einer Punktlänge von 55ms, was ca. 110 BPM/22 WPM entspricht. Die Punktlänge kann in 20 Schritten zwischen 30 und 130 ms variiert werden. (ca. 10 - 40 WPM). Zum verändern der Geschwindigkeit wird im Modus Geschwindigkeitseinstellung für "Schneller" ein Punkt und für "langsamer" ein Strich gegeben. Der Keyer quittiert beim Loslassen des Tasthebels mit "v" in der neuen Geschwindigkeit. Wenn das obere oder untere Ende des Geschwindigkeitsbereiches erreicht ist, ändert sich die Geschwindigkeit nicht und es wird auch kein "v" mehr gegeben. Die veränderte Geschwindigkeit wird beim Verlassen des Modus "Geschwindigkeitseinstellung" im EEPROM des ATTINY13 gespeichert und ist beim nächsten Einschalten wieder verfügbar.

 

Programmierung der ATTINY-Keyers

 

Es bedurfte mehrerer Anläufe, um die gewünschte Funktionalität mit einem C-Programm in dem 1024 Byte großen Programmspeicher unterzubringen. Versuche mit den Timern des ATTINY waren nicht erfolgreich. Am wenigsten Speicher benötigte die Warteroutine _delay_ms, wenn sie mit einer Konstanten als Argument aufgerufen wird. Folglich wird die Punktlänge als Zyklus mit der Anweisung _delay_ms(1) und der gewünschten Punktlänge in Millisekunden als Abbruchkriterium verwendet. Darauf bauen dann Punkte, Striche und Pausen auf. Damit konnte die Basisfunktionalität des Keyers dank der sehr guten Optimierung durch den avr-gcc Compiler so implementiert werden, dass auch für die anderen Annehmlichkeiten noch Platz übrig war.

 

Für den CQ-Text musste ebenfalls ein platzsparender Kompromiss gefunden werden. Jeweils 2 Bit = 4 Kombinationen stehen für Punkt, Strich, Pause und Ende der Rufsequenz. In ein Byte passen dann 4 dieser Kombinationen. bei Punkt und Strich ist jeweils die Punktepause "inklusive", die Kombination "Pause" ist die Wortpause. Wiederholungen bei "CQ" und beim Call sind als Zyklen programmiert. Damit hat man nicht die Speicherfunktionalität moderner Keyer, aber für einen kleinen QRP-Transceiver genügt dies. Das Niederschreiben der Bitsequenzen ist erst mal ungewohnt, aber man arbeitet sich schnell ein.

 

Von den 1024 Byte Programmspeicher sind nun 1002 Byte belegt. Der Programmcode wird als Quellcode zur Verfügung gestellt und darf ausschließlich frei genutzt und angepasst werden.

 

Möglichkeiten zur Nachnutzung

 

Für die Nachnutzung benötigt man im Mindestfall den Paddlemodus. Man kann sich dazu im Programm die Vorzugsgeschwindigkeit fest wählen und legt dann nur noch PB2 und PB3 fest auf Masse. Möchte man nur Paddlemodus und Geschwindigkeitswahl nutzen, zieht man PB2 und PB3 mit je 10k gegen Masse (Paddlemodus) und verwendet einen einfachen Schalter um PB2 und PB3 gleichzeitig auf Betriebsspannung zu ziehen (Geschwindigkeitseinstellung). Für die Nutzung aller Modi kann man entsprechend PB2 und PB3 mit 2 Schaltern getrennt einstellen, muss sich aber die Schalterstellungen merken.

 

Ich tendiere dazu auch einem kleinen Eigenbau-Trx etwas Luxus zu gönnen - am besten ist sicherlich ein hübsches Display + Drehgeber, Frequenzzähler, Betriebsspannung und SWR-Anzeige.

 

Zwischen den beiden Extremen gibt es sicher auch andere Lösungen wie z.B.:

 

  • LED-Anzeige + noch ein ATTINY13 + Drucktaster. Die 5 nutzbaen Pins des ATTINY13 reichen genau für 4 LEDs und einen Taster.

  • LED-Anzeige + ATTINY2313 + Drucktaster. Das Keyer-Programm kann problemlos auf den ATTINY2313 oder auch AMTEGA8 portiert und ergänzt werden. Für die LEDs stehen dann genügend Anschlüsse zur Verfügung, und der Speicher reicht aus.

  • ATTINY2313 oder ATMEGA8 + Drucktaster und Piezopiepser zur akustischen "Ansage" des Betriebszustandes in C. Auch hierfür reicht ein zweiter ATTINY13.

 

Hier möge jeder selbst knobeln! Wichtig ist nur, dass an PB2 und PB3 stets ein definierter 0- oder 1-Pegel liegt. Die Ports dürfen keinesfalls offen bleiben.

 

 

73 de Matthias, DD7NT

- Website S06 | REDAXO 4.3.1 | Webmaster DL9NL