www.viniciocoletti.it > Projects > CW Keyer > v2.2 in italiano

Sito di Vinicio Coletti IK0WRB - Progetti PIC

IK0WRB CW Keyer

v2.2 - 30 giugno 2001

Descrizione generale

Da quando ho iniziato a fare il radioamatore, alcuni anni fa, ho sempre desiderato costruirmi un keyer, pur non utilizzando la telegrafia molto di frequente. Di circuiti adatti allo scopo ne esistono molti e basta andare a spulciare il Radio Amateur's Handbook o gli altri manuali che tutti conosciamo. Tuttavia molti di questi circuiti prevedono l'utilizzo di chip dedicati, relativamente costosi e non sempre reperibili con facilità, e non sono in genere privi di una certa complessità circuitale.
Seguendo la tendenza odierna, per cui i circuiti, l'hardware, tendono sempre più ad essere sostituiti dai programmi, mi sono chiesto se non si potesse realizzare un keyer semplice ed economico, in cui tutte le funzioni fossero svolte dal software.
Il problema poteva essere risolto solo utilizzando un microprocessore di basso costo, capce tuttavia di ospitare un programma non banalissimo e di gestire un certo numero di porte di input/output. La scelta è quindi caduta sul "meraviglioso" Microchip PIC 16F84, che è in pratica un computer completo, sia pure ridotto ai minimi termini. Ospita infatti una memoria di programma su Flash Ram, una memoria dati (Ram) e persino una piccola Eeprom dove memorizzare dati non volatili.
Oltre a questo ha due oscillatori interni (per quello principale serve un quarzo esterno), possibilità di gestire interrupt interni ed esterni e 13 porte di input/output, capaci di gestire carichi di circa 25 mA ognuna. Ecco dunque che con una manciata di componenti ero finalmente in grado di affrontare il progetto del keyer.
Devo confessare a questo punto che la cosa che mi ha divertito di più, visto che faccio il programmatore come lavoro, è stata l'attività di apprendimento delle caratteristiche del PIC e del relativo linguaggio assembler. Le informazioni a questo proposito sono facilmente reperibili sul sito Internet del produttore (www.microchip.com) insieme agli strumenti di sviluppo necessari, tutti gratuiti (compilatore, debugger ecc.).
Qualche giorno di lavoro, poi una bella pausa per fare altro, poi un'altra tornata di lavoro intenso per ottimizzare il tutto ed ecco pronto il keyer.
Penso di essere riuscito a rendere l'uso molto semplice ed intuitivo, ma naturalmente sono sempre pronto a ricevere consigli di qualsiasi genere da parte di chi vorrà utilizzarlo, specie naturalmente dagli appassionati del CW, che sono per fortuna ancora molti.
Alla fine della pagina ci sono i collegamenti alle versioni precedenti del programma, mentre qui è descritta l'ultima realizzata, la 2.2. Essa è simile alla 2.1, con la differenza che ora si può utilizzare indifferentemente un commutatore binario a 16 posizioni (0-F), oppure BCD a 10 posizioni (0-9). È anche possibile usare un quarzo da 2 MHz, come nelle versioni precedenti, oppure da 4 MHz. Sembra strano, ma ho notato che i quarzi da 2 MHz sono più difficili da trovare. Ho cambiato anche molte altre cose, come descritto nel seguito.

Il circuito

Ecco lo schema del Keyer IK0WRB versione 2.2

Per questo stesso schema a risoluzione più elevata, clicca qui.

Lista dei componenti

Il programma

Si può prelevare qui il modulo HEX da inserire nel PIC16F84, per la versione 2.2 del keyer.
Download: wrbk22i.zip
Il file zip contiene le immagini dello schema, questa pagina ed anche il modulo .HEX

Uso del keyer v2.2

Ho totalmente riscritto la routine di manipolazione iambic inclusa nel keyer, dopo qualche osservazione fatta da appassionati del CW a velocità estremamente alta. Ora anche questi strani tizi, che trasmettono in baudot a mano libera... dovrebbero essere soddisfatti (almeno spero).
Visto che molti hanno trovato qualche difficoltà nel reperire il commutatore binario a 16 posizioni (numerate da 0 ad F), ho mappato le funzioni dalla A alla E anche sulle posizioni da 5 a 9, prima inutilizzate. In questo modo si può installare, senza modifiche al programma, anche un commutatore BCD a 10 posizioni (da 0 a 9), che è più facile da trovare.
Stesso problema, anche se minore, per i quarzi da 2 MHz. Ho deciso di supportare anche i quarzi da 4 MHz, più diffusi.
Naturalmente ci deve essere un modo per dire al PIC quale quarzo si sta usando (dirglielo a voce non è una soluzione...), per cui, avendo un paio di porte I/O ancora libere, ne ho utilizzata una a questo scopo. Bisogna quindi lasciare il pin 13 del PIC scollegato (livello logico 1), se si usa il quarzo da 2 MHz, mentre se si installa il quarzo da 4 MHz, il pin 13 va collegato a massa.
Queste modifiche sono state possibili perché ho cambiato il modo di calcolare i ritardi per le varie velocità di trasmissione. Fino alla versione 2.1 avevo utilizzato una tabella precalcolata e memorizzata nel programma. Ora invece utilizzo una routine di divisione e questo mi ha permesso di liberare un pò di spazio per le nuove funzioni.
Ho prolungato il timeout che fa "addormentare" il chip da 33" a 2'45", un tempo probabilmente più normale. Ciò comunque non modifica il funzionamento del keyer, sempre pronto anche quando è in stato di sleep, ma almeno il keyer sembra attivo anche durante l'ascolto del corrispondente, in una conversazione CW.
Infine, ho ritoccato i tempi per far coincidere la velocità annunciata con quella effettiva, visto che il keyer era in ritardo di circa il 9,8%.

Uso del Keyer IK0WRB versione 2.2
Posizione
commutatore
Stato Colore LED Paletta sinistra Paletta destra Pulsante
0 Sleep Spento Nessun effetto Nessun effetto Nessun effetto
1 Ready Verde in ricezione.
Rosso in trasmissione.
Giallo se esercizio.
Punto Linea Trasmette singolo CQ
2 Velocità Giallo Diminuisce velocità Aumenta velocità Suona velocità attuale
(Snn)
3 Peso Giallo Deminuisce peso Aumenta peso Suona peso attuale
(Wn or Wn.5)
4 TX Verde se disabilitato.
Giallo se abilitato.
Abilita trasmettitoreDisabilita trasmettitore Suona stato attuale
(TY o TN)
5 o A Audio Verde se disabilitato.
Giallo se abilitato.
Abilita monitor audio Disabilita monitor audio Suona stato attuale
(AY or AN)
6 o B Beacon Verde se c'è un messaggio.
Spento se memoria vuota.
Inizia sequenza Beacon.
Durante portante: chiamata immediata.
Durante chiamata: pausa con portante.
Durante portante: prolunga portante.
Inizia o termina sequenza Beacon.
All'accensione inizio automatico sequenza Beacon
7 o C CQ Verde se c'è un messaggio.
Spento se memoria vuota.
Inizia sequenza di CQ.
Durante pausa: CQ immediato.
Durante CQ: pausa.
Durante pausa: prolunga pausa.
Inizia o termina sequenza CQ
8 o D Direct Verde.
Rosso o giallo in tx.
Emette portante finché premuta Emette portante finché premuta Portante per 5 secondi
9 o E Enter Giallo all'inizio
poi verde
Memorizza un punto Memorizza una linea Premuto una volta: inserisce una pausa tra parole.
2 pressioni consecutive: cancella ultimo carattere.
Memorizza una pausa tra caratteri, quando ci si ferma per 0,25 sec.
F Sleep Spento Nessun effetto Nessun effetto Nessun effetto

Note

Collegamenti

Questa pagina è disponibile anche in lingua inglese (in English).
Versioni precedenti: v1.0 - v2.0 - v2.1