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.
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
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
END