IK0WRB Keyer



(小弟有自行繪製可洗電路板的線路圖,所有相關檔案都可在 本頁最下面 下載)

IK0WRB Keyer version 2.2

Released June 30, 2001

General description

To know what is a keyer and what it's supposed to do, and also for a general description of the circuit I designed, please read the page about version 1.0 of the keyer.

Version 2.2 uses the same circuit of version 2.1, with the possibility to use a rotary switch either binary (16 positions numbered 0 to F) or BCD (10 positions numbered 0 to 9).

Moreover you can install either a 2 MHz or a 4 MHz crystal, depending on availability and price (I was very surprised to find that in my town 2 MHz crystals cost often three times a 4 MHz piece and are far less common).

I changed also many other things in the program, as described below.

The circuit

What follows is the circuit of the IK0WRB Keyer version 2.2

If you need this drawing at a higher resolution, press here.

The components list

    • a Microchip PIC 16F84, in the 18 pins package

    • a 2 MHz or 4 MHz quarz crystal, parallel resonance

    • 2 capacitors of 22 pF, 15 V

    • 2 resistors of 270 Ohm, 0.25 W

    • a resistor of 100 kOhm, 0.25 W

    • 2 resistors of 10 kOhm, 0.25 W

    • a 2-colors LED, common cathod, red and green

    • a button, normally open

    • 2 jack sockets, 3 poles (stereo)

    • a loudspeaker, 4 - 8 Ohm 150 mW

    • a BC108 transistor, or similar

  • a 4-bits rotary switch (contraves) either binary (0-F) or BCD (0-9)

The program

You can download here the hex module you need to program the Microchip PIC 16F84 you need for keyer. This is the software for version 2.2 of the keyer. New versions of the circuit (and related software) may be released in the future.


The zip archive contains the circuit drawing, this page and the hex module.

How to use the keyer

The use of the keyer is basically identical to version 2.1 of the keyer, but I totally rewrote the manipulation (iambic) routine, after some very high speed CW enthusiasts criticised a bit my keyer. I think now iambic is ok even for these strange chaps :-)

Due to difficulties to find 4-bits (thus 5 pins) 16-positions binary rotary switches, I mapped the positions A through E also on positions 5 to 9, that were unused before. So now, for example, to set audio on/off you can rotate the switch to 5 or to A, at your choice. This means that you can now also install a 4-bits (5 pins) 10-positions BCD switch, witch is more easy to find.

For the same market reason, I decided to support both 2 and 4 MHz quarz crystals, but for this you must tell the chip in some way (no, wispering doesn't work...) what crystal you are using. Since I got 2 unused pins, one of them is used now for this purpose. So, leaving pin 13 of the 16F84 free (logic 1) tells the chip that you are using a 2 MHz crystal (this is compatible with previous versions of the circuit), while connecting pin 13 to ground (logic 0) tells the chip that you are using a 4 MHz crystal.

All these changes were possibile because I changed the way to compute delays for each transmitting speed. Up to version 2.1 I used a pre-computed table stored in program memory, but now I execute a division routine and the space occupied by the table is now used for real istructions.

Thus I could add also a new feature to direct mode: pressing the button will trasmit a 5 seconds carrier, very useful for tuning.

I prolongued also the timeout for sleep mode, from the very short 33 seconds to a more normal 2'45". This doesn't affect the way you use the keyer, it's only a psycological trick: the keyer doesn't look dead while listening in a CW QSO.

Finally, I measured the actual trasmitted speed of the keyer and found it was about 9.8% slower than it should have been. Not a real problem, but I tuned delay constants anyway.

The following table shows how to operate the keyer version 2.2.

Operating version 2.2 of the IK0WRB Keyer


Changes from version 2.1 to 2.2 are in bold.

    • Speed can be changed with a 1 wpm step, from 1 to 98 wpm.

    • Weighting can be set from 2 to 5, with a step of 0.5

    • CQ message stored in the memory can be 236 symbols long, where a symbol can be a dot, a dash or an inter-character space. Inter-word space is coded as two consecutive inter-character spaces. If the memory is full while storing, the keyer stops storing, retaining the message stored up to that point. The message is in the EEPROM, so it's never lost, unless you decide to store another one.

    • CQ mode: you can send a single CQ by pressing the SET button in the Ready state or start a continuous CQ sequence by pressing left paddle or SET button in the CQ mode. RX period is fixed at 10 seconds, but you can momentarily reduce or prolongue it buy using the paddle keys. See table for details.

    • Beacon mode works as CQ mode, but with a 20 seconds pause with carrier ON. You can modify the pause periode as in CQ mode.

    • There is no on/off switch, because the keyer goes into sleep mode after about 2'45" of inactivity. A pression of one of the paddles or the SET button, awakes the chip and the keyer continues its activity, as if it had been always on. In sleep mode the circuit drains less than 10 microamperes, comparable to the auto-discharge of batteries.

    • Sleep mode locks all commands and is thus useful when carrying the keyer or to avoid unwanted transmissions while setting up the rig etc.

    • Direct mode emulates a vertical key (and you can actually connect one of them to the keyer, either on dot or dash contact). Pressing the button with transmit a 5 seconds carrier, useful for tuning.

    • Crystal: you can use 2 or 4 MHz crystals. For 2 MHz leave pin 13 free, for 4 MHz connect pin 13 to ground.

    • Switch: you can use either a binary 0-F rotary switch or a BCD 0-9 switch. Both have 5 pins (or more), one common and 4 for output.

    • Iambic: totally rewritten iambic routine.

    • Speed: tuned to match selected wpm values.