Projects you can build - By: Mike Maynard, K4ICY
The K4ICY Minty-Kool Keyer - A 3-IC Fully-Iambic Electronic Keyer with Dot/Dash Memory and Progressive Weighting
As Presented in The Printed Circuit, Newsletter of the Tallahassee Amateur Radio Society (TARS):
February 2015 - Page 18 Click Here for an index of Electronics Projects
October 2015 -
Revised September 2015...
When I was a kid, integrated circuits (ICs) containing standard
"discrete" logic building-blocks were the rage. Logic, you
is the language of computers – “1’s” and “0’s.” My dad's
generation embraced transistors but the basic electronics we learned up
through the 1980’s were based on these primary components and practical
arrangements. Kids these days, and I mean kids, are using fancier
computer-like devices such as Arduinos and "shields" in their
classrooms. They are bypassing basic electronics training and focusing
more on programming and automation skills.
What happens to this perfect square wave signal? U1d is the lifeguard on a killer slide at a water park, so to speak. The guard allows each patron a specific instance to proceed so that each one makes it safely to the bottom with good timing. Pin 11 or U1d is essentially the output signal source of the entire circuit, so keep this one in mind. If pin 10, the output of U1c sits at any state for throughout time, when pin 12 of U1d receives the oscillator's "clock" signal, once checked against pin 13, pin 11 will either match or oppose the clock. The result, if continued, will be a series of "dits," alternating single units for marks and spaces at the output. U11's signal is ultimately routed through R14 to activate the two MOSFET solid-state switches (2N7000) which will complete the key circuit on your rig sending Morse code. More on U1c's role in a bit…
PDF Scematic Available: http://k4icy.com/Electronics/K4ICY_Minty-Kool_Keyer_02a.pdf
Well, let’s step back a bit. To tell U1a to allow for oscillation, otherwise it will stand still in waiting, we have to get a positive voltage signal through D1 and/or D2 – the paddle inputs. With either a dual-paddle or single-paddle keyer connected to J1, Q1 and/or Q2, any standard PNP transistor (you garden variety 2N3906,) will go into full saturation, shunting positive current through the emitter/base junction and through R3 (or R5) 56k resistors to ground via your key's contacts. Since it’s standard practice to wire keys with the common tied to ground, to get a high signal for our circuit to represent when a paddle is making contact, the PNP switch circuits essentially invert the key's ground potential. R2 and R6 allow the transistors to be completely "shut off" when not in use, and C3/C4 help to both "debounce" the key contacts as they may often make multiple mini-contacts as eventual closure is made at the microscopic level. Bouncing would introduce extra signals to the logic. The capacitors also help shunt away RF introduced by the rig.
Take a look at the Truth Table: When J is low and K is also low, then on a positive edge-trigger of the clock, nothing will happen to the current state of Q - it will just stay put with no change. The following looks straight forward if you think about it: If J is high and K is low, then at a clock signal Q will be high... obviously matching the input "J" to its left on the schematic diagram. When J is high and K is low, then Q is low (Not-Q) being the same as K. Seems redundant at first glance, but it does mean at least J and K, if made high and low respectively, or in the reverse arrangement, then the output at Q can be made high or low to reflect the choice. Finally, we call into play, the special feature of the Flip Flop, and that is, if we apply a high signal to BOTH J and K, whenever a positive-edge clock signal is applied, Q and Not-Q will swap states - or toggle!
Let's take a look at U3b. Pins 10 and 11 are tied to the paddle inputs and work independently representing any condition when one of the paddles on your key makes contact. We can use this information to tell the Not-Q or U3b, pin 14, to change states based on whether just the "dit" paddle is in contact (low) or the "dah" paddle is in contact (high.) The Flip Flop is at the same time told to change to the appropriate state because of a new clock signal sent from pin 11 of U1d which is itself initiated by the key signals to the oscillator. With both paddles contacting, causing the J and K inputs to go high, a constant clock signal will cause the Flip Flop U3b to switch Not-Q back and forth between high and low... Ah ha - iambic action!
So say the Not-Q of U3b is now at high because the "dah" paddle is
contacted (and the "dit" paddle is not.) Then the inputs of
are now "high, high." Shouldn't that cause a low signal to be
sent to pin 13 of U1d? Well, on the same clock instance, U3a
Flop has highs at both J and K and its Not-Q will toggle; sending a
low. The states on the inputs of U1c are now reversed, but
really doesn't mean much on the first clock pulse. The Morse
"Dah" by standard is three times the length of a "dit." If we
look at this one from a “logic” perspective, a "Dah" would be sent
sequentially as "1110." To contrast, two "Dits" in succession
would be "1010." Ah. So if the second mark was kept high and
four steps were allowed to be produced, we would have a perfect Morse
"Dah" element at the output of the keyer. Consequently, U3a
become a "divide by 2" logic component when the "Dah" signal (U3b
Not-Q) is active, so for every two clock signals of the oscillator
applied to U3a, a single clock signal is outputted at Not-Q at half the
Though convenient, this can get tricky. Most modern keyers,
whether on chip or featured on a rig, uses a more simplified form
simple known just as "Mode B." In the simplified Mode B, the
keyer simply polls the opposite paddle of the one the keyer is in the
middle of producing an element for basically to see if something is
being asked for while it’s busy. It then inserts the opposite
element after the current one is done - or just a basic memory
latch. I was really not happy with the Mode A keying the 2-IC
version of this circuit produced so I added an extra NAND gate and a
few steering diodes. I simply poll the outputs of the U3b
Flop and the incoming paddle contacts. With the U2b NAND, if
5 sees a high on the Q of U3b Flip Flop and pin 6 sees that the "Dah"
paddle is active, then it goes low at the U2b pin 4 output which is
inverted by U2a. This means that if the Flip Flop is
"dits" and a "dah" is asked for, then pin 3 of U2a is high.
high signal is sent to the oscillator clock to keep it going until its
associated counter element is completed. The high signal also
keeps a high on the "dah" line of the Flip Flop so that the circuit
essentially latches and all you have to do is quickly tap the "dah"
paddle to ask for a "dah" to be made after the keyer is finished making
a "dit." This is essentially a “bit” of memory. U2c
together do the same thing except for opposite conditions.
the addition of this feature, this "simple" keyer is now on par with
the basic function of commercial keyers!
Using a metal container is preferred to combat RF, but that still
doesn't mean that RF from an imperfect antenna system isn't going to
wreak havoc on your keyer or worse, cause damage to the
components. There are other solutions that can be employed
as key-line isolation or grounding and shielding with toroids but this
is out of the scope of this lessen, so let’s chalk up RF mitigation to
the trials of homebrewing. As you might be able to see in the
pic, I layer down a padding of electrical tape on the bottom to keep
the board traces from contacting the metal surface. I usually
place the nine-volt on one side and the connectors on the other, and in
this case I have left space available for a mini-panel-mount
potentiometer, which I'll have to special order. For now I
miniature 1M pot mounted to the board which I have to set with a
Room for improvement: A predecessor of this keyer has been coined "A Simple Keyer" because of its Spartan operation. It lacked basic features taken for granted on modern versions internal to modern rigs such as Dot/Dash Memory which allows for leeway from human error by making the timing of your finger movements less critical to keyer operation, and it lacked "weighting" (the relative timing between an element's mark and space) which is important to many hams dealing with older rigs as well as the increased need for more staccotic elements is crucial to faster sending speed. Yet, the original circuit core used three ICs as well! The simpler "Simple Keyer" iteration of this keyer's core design uses only two ICs - It's elegant, but you get what you pay for. Many hams have trouble sending in "Mode-A." There are countless keyer circuit devised over the years that employ memory for canned macros and allow for the adjustment of each elements as well as weighting. And some of these circuits use way more logic than is required to do the job. But with all that said, Amateur Radio homebrewing is all about improvising and innovation. Each ham is free to do what they desire in the name of fun and education. If I had any more improvements to make to this simple circuit it would be to add control for [full] element weighting, [SEE BELOW for implementation] element scaling (dot/dash ratio) and maybe an addition of couple of other modes such as "Ultimatic" and "Bug."
So there are 1-chip keyers out there to be had for a few bucks, why not just use one of those in your QRP rig? That's obvious to many hams! If you're going to homebrew your own QRP rig or build one from a kit, then why not homebrew your own accessories. How many hams can say that they built a functional "Mode B" iambic keyer from off-the-shelf components that just so happens to fit in an Altoids® mint tin? BOOM! A Minty-Kool Keyer. It's a 'work in progress' and I still have testing to do on different rigs, but at least I know I don't have to rely on one ordered online existing only as a program on some mystery chip.
Weight Control with the Mints Diet - Adding Element Weighting to the K4ICY Minty-Kool Keyer
A Forward to the Weekend Radio article printed in The Printed Circuit, February 2015 - Published October 2015
It never fails! The solution to a problem often only comes to mind AFTER you publish the article it was concerned with - oh well. The K4ICY Minty-Kool Keyer was my take at a 47 year old circuit, and though, many hams had tried their hands at it over the years, I not only wanted to perfect the keyer circuit but stuff it into a mint tin as well. There were always two features often noted as being left out when other hams built their versions; dot and dash memory and “weighting.” Dot and Dash memory was my first improvement, and now I provide a solution for element weighting. Confused? Just check out my previous article in the February 2015 Printed Circuit: http://k4tlh.net/wp-content/uploads/2011/11/TARS_Newsletter_2015_February.pdf#page=18
Weighting is the relationship in time-duration (or ratio) between a single Morse ‘dit’ element (called a “bit” or a “mark”) and its associated silence (called a “space”) following the element. This attribute can affect not only the way the code sounds but the ease at which it can be copied, as well as its performance as sent via transmitter. Well-sent code is said to have 1:1 weighting where each ‘dit’ is equal to 1 bit, each inter-element space is equal to 1 bit as well, a ‘dah’ holds out for three bits with three bits for inter-letter spacing and seven bits between words. The word “PARIS” is said to contain 50 bits and represents an “average” English word.
1:1 code sounds proper at slow speeds but ramp up the pace, to say, over 40 WPM and (most) human ears begin to have trouble deciphering code. It would then not be surprising to know that many seasoned CW ops prefer a “light” code weight where the marks are shorter than the spaces yielding a staccato quality to the sound, making fast code actually easier to copy. To learn more about code weighting, check out this YouTube video: https://www.youtube.com/watch?v=oidlVnChVAQ Take note that ‘light’-weighted slow-code doesn’t sound particularly very well to most ears – a reprieve to a limitation we’ll discuss later.
An issue that also arises with faster code has to do with the way that a transmitter sends the code itself. If you cut a CW transmitter on and off instantly according to when your key contacts close, you would most likely be producing a lot of clipped and hard-terminated waves, or essentially square waves. Square waves contain harmonics of course and a CW transmission sent in this manner would splatter all up and down the band, producing clicks and pops too. To avoid this, your transmitter eases the CW signal up and down in power-amplitude making sure that only pure sine waves are produced completely. So this ‘envelope’ encapsulating the CW signal has pre-determined rise and decay ramps taking a certain amount of time to complete. As the sender’s code speed increases, the decay time may reach and surpass the amount of space time left in between elements until ultimately, the code becomes muddled. Shortening the code element mark time gives more leeway to the CW envelope so that distinguishable code can be still sent.
An example of Morse code Weighting Duty-Cycle
Implementation of weighting was a tricky task indeed; how would I change the ratio of mark and space timing, otherwise known as the ‘duty cycle’, while giving the operator a good speed range to choose from? I thought of three solutions, and not surprising, my first thought ended up being the best. One solution was to use a NE555 timer IC to add a starting delay to the output element, clipping the signal but this would have been hard to tune across the chosen speed range and would have introduced a sluggish feel to keying. Another was to speed up the logic oscillator by a factor of 10 using a 4017 Decade Counter to break down the ratio in 10 precise steps. I still like this idea, but each would have added more ICs. Ultimately I came to my senses (after publishing the article of course) and chose to apply a Pulse-Width Modulation scheme to the logic oscillator. For a description and example of PWM check out my article in the May 2013 Printed Circuit:
Referring to the schematic, take note of the logic oscillator circuit (center-top) comprised of (4011) U1a, U1b, R9-12 and C6; you can see that this section has been revised from the schematic in my original article. This is a basic NAND gate logic oscillator circuit where a bi-polarity capacitor is charged via a resistor(s) in an RC circuit which upon charging and discharging at a rate determined by the values of R and C cause the gates to flip high/low states generating a square wave. If the charging resistor(s) was one value (as arranged in the original circuit) the timing at U1’s pin 3 (and inverted at pin 4) should yield equal timing of both mark and space.
A PWM scheme is used in this schematic to present two separate timings, one for charge and the other for discharge. Routing diodes D8 and 9 present separate paths for capacitor (C6) to charge at a rate determined by one resistance value and then discharge at another. Notice the value of R11 (22k) compared to R12 (33k) as they form a representative ratio. They join into the separate sides of R13, a 100k potentiometer. R11 determines mark timing in this circuit and R12 governs the space. R13 gives you the ability to adjust the ratio amount of charge timing to determine weighting. Here, I’ve slanted the tendency for “light” weighting. R10, as before, gives you a dynamic code speed range between 6 and 60 WPM. You should try to use a reverse log taper potentiometer or it will seem like all of your control will be on the slow code end, but the choice of taper is not crucial to operation. Essentially, the whole network of resistors represents a combined set of resistance for generating a complete PWM mark+space timing cycle.
Here’s the catch! When the keyer is generating code at the insane speed of 60 WPM, R10 would be set to zero Ohms and C6 only has to charge through R11 + part of R13 and discharge through the other part of R13 + R12 (I’m not sure which was really charge and discharge.) The difference in charge time is drastic between these two paths at such low resistance, potentially a 6:1 ratio! You can really get some super-light weighting with that. But, at the slow end of the scale with R10 turned to a max of 1 mega-Ohms, R11-13 appear relatively small! In fact, you get only a resistance ratio of 1.1:1, so no discernible weighting there for sure. Any good marketing person will make lemonade from lemons simply by adding a positive descriptor – I chose “progressive!” This is a case where an inadequacy turned out to be an okay thing because we really only need the lighter weighting at the higher speeds and not at the slower speeds. In fact this actually works out, as in my build I’ve omitted R13 and tied the ends of two fixed values together that gives me a good 4:1 ratio at 60 WPM, 2:1 at 30 WPM and 1.5:1 at 20 WPM. I derived these numbers from a simple QB64 BASIC program I wrote which was roughly backed up by testing. For this result, omit R13 and make R11 22k and R12 a 33k + 100k (in series.)
Now if you’re building this keyer, you could easily plug in your own resistance values or even a resistor network configuration to get a good weighting ratio at the larger 1 M-ohms area. To figure the charge+discharge times for yourself (And you Extras should know this,) multiply the Capacitance times the Resistance… well, decimal places will kill ya: Capacitance in μF x Resistance in Kilo-Ohms = Time in milliseconds. Multiply by 0.001 to convert that to Seconds. To find the “universally accepted” WPM, add your charge and discharge times together and divide by two (for an average,) then divide that into 1.2 for your WPM speed. The 1.2 has something to do with the 50 bits in “PARIS,” as in milliseconds, figured into a minute. For example: if we find 1 M-ohms (1,000k) for our resistance (averaged for both directions) and find the total charge/discharge time for the 0.22 μF cap we get 220 msec. (1,000 x 0.22 x 0.001 = 0.22 seconds) for a combined mark and space ‘dit’ element cycle. To find for the speed: (1.2 ÷ 0.22 seconds = 5.4 WPM)
So the K4ICY Minty-Kool Keyer is “nearly” perfect. I was able to make the changes to my mint tin build and confirmed my results with a program called SoundForge on my PC. Audio was sampled via Yaesu FT-857d (into laptop) reading ultra-low-level RF leaked from my Kenwood TS-130SE fed into a 50 Ohm dummy load at a very low wattage. I was able to analyze the waveforms and measure the millisecond timing of code produced through the keyer’s available speed-adjustment range. The standard niceties of a keyer are there, minus canned messages: adjustable ‘iambic’ ‘squeeze’-keying, dot and dash memories, progressive weighting and rig control.
Why seek to improve an obsolete design with half-a-century-old technology when so many simpler and novel methods exist today? Nearly all modern rigs come with onboard CW keyeing and what modern ham wouldn’t rather dabble in the newest microprocessor or microcomputer? Sure, you should try everything once, so build an Arduino keyer too sometime in your ham career
– check this out: http://blog.radioartisan.com/arduino-cw-keyer/
but be prepared to learn some programming. Well, even the single-IC Curtis chip existed in 1969 (http://namham.phpbb8.de/general-topics-f18/history-the-curtis-keyer-t50.html) with the EK-39 but the reason for “rolling your own” was the same then as it is now: the draw to building a piece of equipment from more fundamental parts boils down to the homebrewer’s sense of ‘roughing it’ – bringing a wonder to life with your bare hands – especially a device you understand the inner-workings of. Now, more than ever, there is a modern movement amongst hams in homebrewing or kit-building their own gear, especially gear you can take on the trail.
I cannot take complete credit for The K4ICY Minty-Kool Keyer. The keyer’s genesis was conceived by Richard P. Halverson, W0ZHN, and Ronald A. Stordahl, K0UXQ, for their article “An Integrated-Circuit Electronic Keyer,” [pg. 22, QST, April, 1968]. It was also a 3-IC circuit and had dot/dash generation using a single-lever paddle, but no iambic (“squeeze”) keying. Urs Hadorn, HB9ABO of Oberglatt, Switzerland modified the keyer for his article “Simple CMOS Keyer,” [pg. 70, Ham Radio Magazine, January 1979.] His circuit was just about the same as the one presented in the QST article but with only slight improvement, however he reduced the chip count to two, provided several rig-interfacing schemes and actually built a few keys to go with it.
Three years later, Oh Hoekstra, PA2OHH, from the Netherlands made his first “Simple Iambic Keyer” circuit and in 1999 posted a revised model online at: http://www.qsl.net/pa2ohh/iambic.htm. Not only did he revise the HB9ABO circuit, adding iambic dot/dash coordination which allowed for use of a dual-lever paddle, but improved the key and rig interfacing. Even with his offer, there were still some features missing that all the builders mentioned here made note of; features that proficient CW operators often desire for comfortable sending: dot/dash memory and weighting. Dot/Dash memory allows for extra opposite elements to be generated upon command even if the keyer was busy; so if you are in the middle of making a dash, tapping on the dot paddle would put a dot in queue to be made once the dash was completed. This makes for sure and comfortable ‘squeeze’-keying. Weighting was the obvious additional creature comfort.
Feel free to ask me questions or submit comments.
73! DE Mike, K4ICY firstname.lastname@example.org