KEYER PER CW CON PIC
Giovanni Lorenzi, IT9TZZ
Il microchip PIC 16F84 è stato progettato come
microcontroller a memoria flash per programmare servomeccanismi e piccoli robot.
Tuttavia, negli ultimi anni, ha avuto anche un impiego illegale, facilmente
intuibile, che esula dalla presente trattazione.
Trovare una utilizzazione per scopi radioamatoriali del suddetto chip è stato
sempre un aspetto oscuro per me fino a quando ho scoperto un progettino di
EI9GQ, al secolo E. Skelton, pubblicato sul suo sito (www.homepage.tinet.ie/ei9gq).
Quello che mancava, forse perché ritenuto ovvio ai più, era la procedura di
programmazione del chip in questione. Con il mio articolo ho voluto colmare
questa lacuna.
Al progetto ho apportato delle semplici modifiche per adattarlo anche alla
telegrafia con il tasto verticale tradizionale e dotarlo di un elementare
sidetone composto da un buzzer a 12 V, sempre utile per ascoltare la propria
manipolazione. Ovviamente ho provveduto a ridisegnare il circuito stampato per
ridurre le dimensioni in modo da poter inserire il keyer nei ricetrasmettitori
homebrew.
Lo schema si commenta facilmente perché tutto è configurato attorno al chip dove
sono montati pochissimi componenti. In particolare il condensatore C3 provvede a
generare la base dei tempi e P1 regola la velocità di manipolazione. La
generazione della sequenza dei punti e delle linee avviene con un paddle (nella
foto uno autocostruito donatomi da IW9ATY, Roberto).
Dal piedino 6 del chip il segnale commuta in conduzione Q1 che aziona il PTT del
trasmettitore. Tramite il tasto telegrafico e la resistenza R8 la tensione manda
in conduzione il transistor permettendo di comandare il TX. Il diodo D1 evita un
ritorno di tensione che potrebbe danneggiare il 16F84.
Il circuito stampato è molto semplice e il progetto si appronta in poco tempo.
Seguire la disposizione dei componenti.
La sezione software dedicata a questo progetto in apparenza sembrerà complicata
ma vi assicuro che, una volta compreso il meccanismo, sarete in grado di
risolvere il problema.
Preciso che le operazioni che andrete ad eseguire non hanno niente di illegale
per cui potete stare tranquilli.
Innanzitutto occorre procurarsi i necessari programmi, tutti scaricabili dalla
rete usando un qualsiasi motore di ricerca. Personalmente, oltre ad un normale
word processor ( Word, Wordpad ecc ), ho usato i seguenti programmi:
- MPASM v. 01.50 scaricabile gratuitamente dal sito
www.microchip.com
- PIC 24C13 v. 1.10
Preciso che quest’ultimo software lavora in DOS e non gira con il sistema
operativo Windows XP per il quale è consigliabile usare il PICPROG che si
presenta con una diversa interfaccia ma con le stesse peculiarità.
Inoltre è necessario l’uso di un programmatore di chip. Io ho realizzato un
programmatore chiamato Ludipipo il cui progetto si trova facilmente in rete.
Ecco la sequenza da seguire per la programmazione:
1. Create e date un nome (es. KEYER) a una nuova cartella sul vostro computer;
2. Copiate i due software (MPASM e PIC 24C13) nella cartella KEYER;
3. Trascrivete, con il programma di word processing il listato della figura 2
facendo attenzione a non modificare le istruzioni o sbagliare qualche carattere
e salvatelo in formato testo (.txt), con un nome a vostro piacimento ( es.
jambic ), nella cartella precedentemente creata;
4. Lanciate il programma MPASM e aprite il file jambic.txt. Cliccare su ASSEMBLE:
il programma genererà quattro file: jambic.cod, jambic.lst, jambic.err e
jambic.hex che si trascriveranno in modo automatico nella cartella;
5. Inserire il chip PIC16F84 nel programmatore prestando attenzione alla
piedinatura e lanciare il programma PIC 24C13;
6. Settare il programma selezionando, in OPTIONS il tipo di programmatore (Ludipipo),
la porta COM (COM1, COM2 ecc) sulla quale è inserito e verificare (TESTHARDWARE)
che tutto sia “ visto “ dal computer;
7. Selezionare DEVICE e successivamente, nella finestra, PIC16F84;
8. Selezionare FILE e nella finestra LOADHEX il file jambic.hex;
9. Selezionare ACTION e poi PROGRAM;
A questo punto si aprirà una finestra nella quale un cursore indicherà lo stato
di avanzamento della programmazione alla fine della quale potrete estrarre il
chip e inserirlo nello zoccolo del circuito stampato del keyer.
Per testare il corretto funzionamento del keyer, prima di collegarlo al
trasmettitore, occorre inserire un buzzer a 12 V (lo stesso che si utilizzerà
successivamente per il sidetone) così come indicato dalla parte tratteggiata
dello schema in figura 1. Manipolare il paddle e controllare che la durata dei
caratteri e delle sequenze sia corretta. Con l’interruttore S2 si potrà
escludere il buzzer del sidetone. Se il lavoro è stato compiuto bene si avrà a
disposizione un preciso ed economico keyer.
G.Lorenzi

Lista dei componenti
RESISTENZE
R1 = 1.2 kohm
R2 = 5.6 kohm
R3 = 100 kohm
R4 = 100 kohm
R5 = 4,7 kohm
R6 = 4.7 kohm
R7 = 4.7 kohm
R8 = 2,2 kohm
R9 = 2.2 kohm
P1 = 22 k kohm Potenziometro
CONDENSATORI
C1 = 100 mF Elettrolitico
C2 = 47 mF Elettrolitico
C3 = 470 pF Ceramico a disco
C4 = 10 nF Ceramico a disco
C5 = 10 nF Ceramico a disco
CIRCUITI INTEGRATI
IC1 = PIC 16F84
IC2 = 78L05 Regolatore di tensione
TRANSISTOR
Q1 = BC108
Q2 = BC108
VARIE
D1 = 1N4148
BUZZER 12 V



LIST P=16F84 __CONFIG 0x3FFB ;RC, NO WDT, PWR-UP, NO CP. RA EQU 05H ;PORT A RB EQU 06H ;PORT B COUNT1 EQU 0CH ;COUNT FOR DELAY LOOP COUNT2 EQU 0DH ; " FLAG EQU 0EH ;USER FLAGS DIT_FLG EQU 00H ;DOT FLAG DIT_SW EQU 00H ;DOT SWITCH (ON PADDLE KEY) DAH_SW EQU 01H ;DASH SWITCH (ON PADDLE KEY) KEY EQU 00H ;KEYING OUTPUT ORG 00H ;PROGRAM EXECUTION BEGINS FROM HERE GOTO START DAH MOVLW 0x1E ;MAIN DOT/DASH DELAY LOOP GOTO CONT DIT MOVLW 0x0A CONT MOVWF COUNT1 LP2 MOVLW 0x6E MOVWF COUNT2 LP1 DECFSZ COUNT2,1 GOTO LP1 DECFSZ COUNT1,1 GOTO LP2 RETLW 0 ;END OF DELAY START BSF 3,5 ;SWITCH TO F REGISTER PAGE 1 MOVLW 0FFH ;PORT A ALL INPUTS MOVWF RA MOVLW 00H ;PORT B ALL OUTPUTS MOVWF RB BCF 3,5 ;SWITCH TO F REGISTER PAGE 0 MOVLW 0 MOVWF RB ;MAKE SURE TX IS NOT KEYED ON POWER UP MOVWF FLAG ;CLEAR DOT AND DASH FLAGS NEXT BTFSS RA,DIT_SW ;IS THE DIT PADDLE PRESSED? GOTO DOT BTFSS RA,DAH_SW ;IS THE DAH PADDLE PRESSED GOTO DASH GOTO NEXT ;LOOP UNTIL NEXT PADDLE PRESS DOT BTFSS RA,DAH_SW ;ARE BOTH PADDLES PRESSED GOTO IAMBIC ;YES DOT2 BSF RB,KEY ;KEY TRANSMITTER CALL DIT ;DELAY FOR 1 DOT LENGTH BCF RB,KEY ;UNKEY TRANSMITTER CALL DIT ;DELAY FOR 1 DOT LENGTH BSF FLAG,DIT_FLG ;LAST MORSE ELEMENT SENT WAS A DOT (FOR IAMBIC ACTION) GOTO NEXT ;BACK AND WAIT UNTIL NEXT PADDLE PRESS DASH BTFSS RA,DIT_SW ;ARE BOTH PADDLES PRESSED GOTO IAMBIC ;YES DASH2 BSF RB,KEY ;KEY TRANSMITTER CALL DAH ;DELAY FOR 1 DASH LENGTH (3 DOT LENGTHS) BCF RB,KEY ;UNKEY TRANSMITTER CALL DIT ;DELAY FOR 1 DOT LENGTH BCF FLAG,DIT_FLG ;LAST MORSE ELEMENT SENT WAS A DASH (FOR IAMBIC ACTION) GOTO NEXT ;BACK AND WAIT UNTIL NEXT PADDLE PRESS IAMBIC BTFSC FLAG,DIT_FLG ;CHECK TO SEE IF LAST CHAR SENT WAS A DOT OR A DASH GOTO DASH2 ;IT WAS A DOT, SEND A DASH GOTO DOT2 ;IT WAS A DASH, SEND A DOT ENDBack