Knitting Gauge Tutorial

I believe gauge is the most important knitting concept because it is the sole principal that determines whether a knitted item will be the right size when it is finished. For an afghan, you have a bit of leeway in that a slightly smaller or slightly larger afghan is still acceptable. Continue reading

Machine Knit Sock Heel – Cat Bordhi Style

In my quest to knit the perfect sock heel on a knitting machine, I stumbled on Cat Bordhi’s Sweet Tomato Heel. If you aren’t familiar with this type of heel or you’re simply interested in learning how to do this on your knitting machine, I’d suggest watching Cat’s video first.

Even if you don’t know how to hand knit, Cat does an excellent job of explaining what causes the gaps in a short row heel… and that’s the key to learning how to eliminate the gaps.

Intrigued? Here’s how you can knit a modified version of the Sweet Tomato Heel on a knitting machine, regardless of whether you knit your socks cuff-down or toe-up.

These instructions assume the heel will be knit on the main bed.

When knitting circular, the ribber knits right to left and the main bed knits left to right.

If you’re knitting your heel on the ribber or your carriages will knit in the opposite direction, you’ll need to flip these instructions around.

Preparing to knit the first wedge

  1. Begin by knitting up to the point where the heel begins.
  2. Knit on the ribber right to left and stop. Your carriage is on the left. This is where each wedge will begin.
  3. Set your ribber carriage to slip in both directions.
  4. Set your main carriage to knit and hold in both directions. Needles in HP will not knit.
If you’re knitting circular on a double-bed machine or knitting machine with ribber, the last carriage pass before starting your heel will always be on the bed opposite the heel. If the heel is knit on the main bed, the last circular pass must be on the ribber. If the heel is knit on the ribber, the last circular pass must be on the main bed.

If you’re knitting a seamed sock without a ribber, it doesn’t matter which side you start on. Just be sure to start each wedge from the same side.

Knitting the first wedge

  1. Set the ribber carriage to slip in both directions.
  2. Set the main carriage to knit and hold in both directions.
  3. Row 1
    • Pull the edge needle opposite the carriage (right) to hold.
    • Knit 1 row left to right.
    • Manually wrap the held needle.
    • Manually knit the next WP needle, pull it to hold and pull the yarn taut to tighten up the wrap.
  4. Row 2
    • Pull the edge needle opposite the carriage (left) to hold.
    • Knit 1 row right to left.
    • Repeat steps 3 and 4 on the left side — exactly the same way you did it on the right side.
  5. Now repeat rows 1 and 2 until the center 1/3 of your stitches remain in WP and your carriage is on the left.
  6. Push the held needles on the right to UWP.
  7. Knit 1 row left to right. Note that it may be a little harder to knit the needles in UWP because of the snug wraps.
  8. For circular socks with ribber:
    1. Use a transfer tool to carefully move the held stitches on the left to WP. Note that it may be a little harder to manipulate the stitches because of the snug wraps.
    2. Set the main carriage to slip in both directions.
    3. Set the ribber carriage to knit right to left.
    4. Knit 1 row right to left on the ribber.
    5. Pull the main bed needles left of 0 to UWP. Remember that these needles still contain the wraps and may be harder to knit. Pulling these needles back to UWP with the stitches behind the latches will help the stitches knit cleanly.
  9. For flat socks without ribber:
    1. Push the held needles on the left to UWP.
    2. Knit 1 row right to left.

One wedge is complete. Your carriage is on the left where it’s ready to knit another wedge or resume circular knitting.

Usually, you’ll want to knit 3 wedges for a nice round heel. You may find you need more or less to achieve a good fit. You can add or remove a 1/2 wedge by leaving more needles in WP.

You may find that the wedges create a slightly snugger heel. This may make the ankle stitches pull. To make the sock a little looser around the ankle, increase the number of stitches every 2 to 4 rows leading up to the heel and decrease back to the original number of stitches after you complete the heel.

Natalia Vasilieva’s Boola Sweater

I think this sweater is absolutely stunning:

Boola Sweater

I haven’t chosen a yarn, but it’s definitely in the cards if I can ever figure out how to keep work from getting in the way of my knitting.

You’ll find the pattern on Ravelry… and since Ravelry doesn’t support DAK files, Natalia has graciously given me permission to host it here.

Happy Knitting!

[wpfilebase tag=”file” id=231 /]
[wpfilebase tag=”file” id=232 /]

Machine Knit Ladder Lace Scarf

This scarf can be knit on any gauge manual machine with any yarn. The sample to the left was knit on a Studio SK155 (bulky) at T8 with Berrocco Mohair Classic to achieve a soft airy look with a gauge of about 3 stitches x 5 rows per inch.


Loosely cast on 28 stitches (or some multiple of 4).
Knit two rows (COR).
* Starting on carriage side, pull 5th and every 4th needle to hold.
Transfer stitches from each held needle to the next needle away from the carriage.
Leave empty needles in WP and knit one row (COL). **
Repeat from * to ** until you reach the desired length.
Bind off loosely.

Inspired by Turvid’s One Row Lace Scarf (pattern).

Hacking a Brother Cast-On Comb to fit a Mid-Gauge Knitting Machine

I used to hate the Brother comb, but now that I’ve gotten used to it I wish they made one for the mid-gauge machines. Since they don’t — and probably never will — I decided to buy a new one for my Brother SK860 standard and hack the old one to fit my Silver Reed SK860 mid-gauge.

The gate pegs on the Silver Reed are stronger than the hooks on the comb, so it turned out to be a lot easier than I thought it would be. Here’s how:

  1. Knit an inch or so of waste yarn across the entire needle bed.
  2. Mark the two center hooks on the comb with a bit of yarn.
  3. Position the comb with the two center hooks on either size of 0.
  4. Working from the center of the comb toward the ends, gently — but firmly press the wires of the comb between the gate pegs until the comb is hanging on the scrap knitting.
  5. Use needle nose pliers to bend any stubborn hooks out of the way of the gate pegs. Most of them should bend to one side or the other without any help.
Brother 4.5mm Cast-On Comb hanging on a Silver Reed 6.5mm

Brother 4.5mm Cast-On Comb hanging on a Silver Reed 6.5mm

Once the comb has been secured all the way across, use the needle nose pliers to bend all of the hooks that are pressing against a gate peg. In this photo, you’ll see 5 hooks bent back out of the way. All of the others are hanging between the 6.5mm gate pegs pretty as you please.

Brother 4.5mm Cast-On Comb hanging on a Silver Reed 6.5mm

Brother 4.5mm Cast-On Comb hanging on a Silver Reed 6.5mm

Grab the bent hooks with your needle nose pliers and bend the wire back and forth until they snap. Most of them will snap off inside the case. If you have a few that don’t, you might have to use a Dremel to grind them down so you don’t have any sharp edges.

It’s important to note that this method won’t get you a comb that hangs on every stitch, but if you like using the 9mm triangle weights on your standard gauge machine, that shouldn’t be a problem.

Also, the comb is 4-5 needles shy of covering the whole bed… so if you’re using the entire width, you might still have to use edge weights.

Machine Knitting: How To Make A Garter Bar Hanger

I got inspired by one of Diana Sullivan’s videos where she shows you how to use a garter bar to shape a neckline. I fell in love with the technique because the results are superior to using hold position or binding off, but I kept thinking I could improve on the use of twist ties to hang the garter bar on the gate pegs.

And so, the jewelry wire garter bar hanger was born.

What you’ll need…

2 3″ pieces of copper jewelry wire — somewhere around 18 to 22 gauge
something to help you form a small ring about the size of a drinking straw

What you’ll do with it…

Make a loop in the center of the wire

Make a loop in the center of the wire

Insert the two ends through two prongs on the garter bar

Insert the two ends through two prongs on the garter bar

Bend the two ends to form hooks

Bend the two ends to form hooks

Trim the ends so the hooks are about the same size as the ring

Trim the ends so the hooks are about the same size as the ring

After transferring stitches to the garter bar, insert the hook with the prongs facing away from you and drop the rings onto the gate pages between the corresponding needles.

After transferring stitches to the garter bar, insert the hook with the prongs facing away from you, and hook the rings onto the gate pages between the corresponding needles.

Arduino Series: Working With An Optical Encoder

The Goal

I have an old White 1602 knitting machine that uses a light scanner to produce patterns in the knit fabric. The bed of the knitting machine syncs up with the controller via two obsolete rotary encoders and the stitch patterns are produced as a sequence of pulses causes specific needles to be selected.

The first problem is that the light scanner has a lot of mechanical parts that have deteriorated with age. Parts are no longer available.

The second problem is that the width of the pattern is constrained by the width of the mylar that feeds into the light scanner to product the pattern.

The third problem is that while the light scanner does its job well when it’s functioning, all of its capabilities could be performed more efficiently and accurately by a computer.

My goal is to completely replace the light scanner with newer technology. This post illustrates a prototype for how I might use an optical coder to track the position of the knitting carriage as well as when it changes direction.


Arduino Mega 2560 R2
US Digital Optical Encoder S1-1250-I
4 male-to-female jumpers
Electrical tape

About The Encoder

While obsolete, the S1-1250-I encoder is a very capable piece of hardware, but much more expensive than what’s available on today’s market. I used it because I already had one, but the information presented in this post should work with any rotary quadrature encoder. I’ll most likely replace the US Digital with a SparkFun’s COM-11102 1024 P/R Quadrature Encoder I have on order.

About The Approach

There are basically two ways to interface with the encoder: polling and interrupts. A little project I’m playing with will require a considerable amount of accuracy, so I chose to use interrupts as polling might result in missed pulses.


The encoder has 3 outputs: channel A, channel B and index. We’re not going to use index, so we need to make 4 connections — one for each of the two channels, one for power and one for ground. The encoder has raw wires so we need to add pins in order to attach it to the Arduino.

  1. Make sure the Arduino is powered off.
  2. Strip 1/4″ – 3/8″ of insulation from the encoder’s leads for power, ground, channel A and channel B.
  3. Insert the end of each wire into the female end of a jumper and secure with electrical tape.
  4. Connect the power lead to the 5V power pin.
  5. Connect the ground lead to one of the Arduino’s ground pins.
  6. Connect the channel A lead to digital pin 20. This pin is one of the 6 Arduino pins that support interrupts. The other pins with interrupts are 2, 3, 18, 19 and 21.
  7. Connect the channel B lead to digital pin 17.

The Code


Author:    Brenda A Bell


#define ENCODER0PINA         20      // this pin needs to support interrupts
#define ENCODER0PINB         17      // no interrupt required
#define CPR                  1250    // encoder cycles per revolution
#define CLOCKWISE            1       // direction constant
#define COUNTER_CLOCKWISE    2       // direction constant

// variables modified by interrupt handler must be declared as volatile
volatile long encoder0Position = 0;
volatile long interruptsReceived = 0;

// track direction: 0 = counter-clockwise; 1 = clockwise
short currentDirection = CLOCKWISE;

// track last position so we know whether it's worth printing new output
long previousPosition = 0;

void setup()

  // inputs

  // interrupts
  attachInterrupt(3, onInterrupt, RISING);

  // enable diagnostic output
  Serial.begin (9600);

void loop()
  // only display position info if has changed
  if (encoder0Position != previousPosition )
    Serial.print(encoder0Position, DEC);
    Serial.print(currentDirection == CLOCKWISE ? "clockwise" : "counter-clockwise");
    Serial.println(interruptsReceived, DEC);
    previousPosition = encoder0Position;

// interrupt function needs to do as little as possible
void onInterrupt()
  // read both inputs
  int a = digitalRead(ENCODER0PINA);
  int b = digitalRead(ENCODER0PINB);

  if (a == b )
    // b is leading a (counter-clockwise)
    currentDirection = COUNTER_CLOCKWISE;
    // a is leading b (clockwise)
    currentDirection = CLOCKWISE;

  // track 0 to 1249
  encoder0Position = encoder0Position % CPR;

  // track the number of interrupts

How It Works

Lines 8 – 12 define a few useful constants to make the code more readable. What they do should be obvious from the comments.

Lines 15 – 16 define global variables that will be modified by the interrupt handler.

Line 19 & 22 define other global variables we’ll use inside the Arduino loop.

The setup() function on line 24 configures our channel A and channel B pins for input, attaches an interrupt handler to channel A’s pin and configures the serial port so we can see some diagnostic output. Note that we’re going to interrupt on a rising state change so we know that the state of channel A will always be high when our interrupt is triggered. Using a rising or falling interrupt means:

  • We always know the state of A without having to perform a read: A is always high in a rising interrupt and always low in a falling interrupt.
  • Since we always know the starting state of A, we only have to test the state of B to determine direction and track the current position.

The Arduino loop() function on line 40 does nothing more than print some diagnostic information about what we’re reading from the encoder. To avoid chatter, the loop is tracking current values against previous values to we don’t print information we’ve already seen.

The interrupt handler on line 55 does all the heavy lifting:

  • When the encoder is moving in one direction, the pulse from channel A is leading the pulse from channel B. When the encoder is moving in the other direction, the pulses are reversed.
  • When the state of A and B are equal, B must be leading A, so the encoder is turning counter-clockwise. Otherwise, A is leading B, so the encoder is turning clockwise. Remember when we configured our interrupt to fire on rising? The state of channel A will always be high, so we only need to check the state of channel B to determine direction.
  • By comparing A to B instead of hard-coded constants, we can change the interrupt between rising and falling without breaking the interrupt handler.

The code on line 75 keeps the counter within the range 0 to 1249. This would allow us to compute angle or synchronize the position of the encoder to some other device.

The code on line 78 is an extra bit of diagnostic info we can use to track how many times our interrupt has fired.

Further Discussion

It’s much easier to understand how the interrupt handler works if you understand what’s happening when you turn the encoder shaft and reverse direction.

When you turn the encoder’s  shaft clockwise, A is leading B. This results in 4 distinct transitions that are repeated over and over as long as the shaft continues rotating in the same direction.


What’s important is this:

  • The inputs are latched, meaning that when we read B’s value from A’s interrupt handler the value we get is B’s state as it existed at the time the interrupt handler was fired. 
  • The handler is fired when A goes high.
  • When the shaft is turning clockwise, the handler is fired between the first two transitions —before B goes high — so we know the shaft is rotating clockwise when A is high and B is low.

If the shaft is turning clockwise and you stop turning, A remains high and B remains low.

If the shaft then starts turning counter-clockwise, B is leading A. This means that B has to go high before A’s interrupt fires again. Therefore, when both A and B are high, the shaft must be turning counter-clockwise.

Some makers may be inclined to use interrupts on both A and B. Unless you have an application where you absolutely must perform some action between A and B going high in both directions, the second interrupt is completely unnecessary. Interrupts are an expensive, limited resource so it’s wise to only use them when you need them.


Machine Knit Leg Warmers / Boot Toppers

Tomorrow is New Year’s Day. No commitments, have lots of time of knit, looking forward to doing the first project of the year and the forecast high for Thursday is 10 degrees. It’s a perfect time to whip up a pair of leg warmers. These were knit flat on a Brother KH860 with KR850 ribber using Franklin Sock Yarn from Valley Yarns.


Stockinette: 31 stitches x 40 rows = 4″/10cm
Finished Size:
Ankle: 7 1/2″
Cuff: 10 1/2″
Total Length: 14″

Cast On

Disconnect ribber carriage and position it on the left.
Position main carriage with ribber arm on the right.
Set pitch lever to H and rack to position 5.
Set up for industrial rib with edge pairs on the main bed (see note 1): 36L – 35R on the main bed, 35L – 33R on the ribber. Pull one extra ribber needle (35R) to WP to round off the zig-zag row.
Pull ribber needles a little higher than WP and make sure all latches are open. The tips of the ribber needles should be even with the main bed’s gate posts. Main bed needles should be in WP.
Thread the main carriage leaving long tail for seam, set the tension to T0 and RC = 0.
Rack to position 6. Knit from right to left with the main carriage only.
Carefully push the ribber needles back to WP. Make sure the floats that passed over the ribber needles are caught in the needle hooks.
Hang the ribber comb and weights (see note 2).
Connect the ribber carriage and set the carriages to knit circular:  depress the left part button on the main carriage and set the ribber’s right cam lever  to PR.
Set the tension on both carriages to T1. Knit 2 rows, ending COL RC=3.
Transfer the extra ribber stitch on 35R to 34R on the main bed.
Set the tension on both carriages to T2. Knit 1 more row, ending COR RC = 4.

Ribbed Ankle

Set both carriages to knit: release the part button on the main carriage and set the ribber’s right cam lever to N).
Set the tension on both carriages to T5.
Rack to position 5.
Knit 21 rows, ending COL RC = 25.
Transfer the left stitch of each pair of ribber stitches to the corresponding empty main bed needle (see note 3).
Knit 1 row, ending COR RC = 26.
Set pitch lever to P.
Transfer the remaining stitches from the ribber to the corresponding needle on the main bed. There will be two stitches on these needles.


Drop ribber bed, remove ribber arm and attach normal sinker plate.
Set RC = 0.
Knit 1 row.
* Increase 1 stitch each side.
Knit 4 rows.
Increase 1 stitch each side.
Knit 5 rows. **
Repeat from * to ** 10 more times RC = 100 (58L – 57R).
Increase 1 stitch each side (59L – 58R).
Knit 1 rows RC = 101.

Ribbed Cuff

Set pitch lever to P and rack to position 5.
Transfer pairs of stitches from main bed to ribber for industrial rib 59L – 57R (see note 4). On right hand side, put two stitches on 56R and edge stitch on 57R. On main bed, there will be one stitch every 3rd needle from 57L – 55R.
Transfer heel of each main bed stitch right one needle needle to complete industrial rib setup.
Set pitch lever to H.
Set RC = 0.
Knit 44 rows and bind off.


With right side facing, seam ankle rib and leg.
Turn inside out and continue seaming cuff.


  1. Placing the edge stitches on the main bed means there will be one knit stitch on either side of the ankle seam.
  2. On my Brother, the two beds are close enough that getting the ribber comb and thick industrial rib to hang freely is problematic. I get around that issue by pulling up on the bracket levers and pushing down on the ribber bed to position it slightly lower than normal.
  3. I find that transferring both stitches from the ribber to the main bed at the same time creates a little bump on the inside of the knit that I don’t like. Transferring half the stitches on one row and the other half on a separate row eliminates the bump.
  4. Similar to the ankle rib, placing the edge stitches on the ribber means there will be one knit stitch on either side of the cuff seam. This is a turn-down cuff, so the side facing is the side that will be showing.

Interlocked Bind Off On A Knitting Machine

A few days ago, I was bouncing around the web and stumbled across a post at knitty where Jeny Staiman describes the Interlocked Bind Off.

I tried it out on one of my knitting machines and I absolutely love it. Here’s how…


Insert your yarn needle through the first stitch front to back and through the second stitch back to front. I’m right-handed so I’m working from right to left on the two needles to the left of the yarn tail. Also note that I’m working with the wrong side facing because this particular pattern instructed me to bind off in purl. Otherwise, I might turn the work before binding off, but it looks good either way.


Keeping the working yarn on top of the needles, pull the thread through the two stitches…


… until there’s just a little loop left.


Bring your needle and yarn up between the same two needles and through the loop front to back.


Pull on the thread to close the loop. Don’t pull too tight — just enough so the yarn lays flat.


Then pull the rest of the yarn through. Work your way across the bed one stitch at a time. In this example, I bound off needles 3 and 4 counting from the left. Next, I’ll bind off needles 2 and 3, then 1 and 2.

After binding off the last two stitches, don’t put your needle away just yet. Go through the stitch on needle 1 front to back… then pull the thread, stitching through the loop just like you did when you were binding off pairs of stitches.


This is what it looks like on the side facing you…


And this is what it looks like on the side away from you.

N.B. As I said earlier, this pattern instructed me to bind off from the purl side, but this bind off works for ribbed bind offs too. Simply reverse the direction of the needle when stitching into a purl stitch and when coming through the loop if your needle is leaving a purl stitch.

Machine Knitting: Increasing Evenly Across the Row

First, you need to figure out where the increases go. Suppose you have 98 needles in work and the pattern says increase 13 stitches evenly across the row.

Compute the approximate placement of the decreases using the following formula:

(current # stitches - # to increase) / # to increase
(98 - 13) / 13
85 / 13
6.53 rounded down = 6

This tells us we need to space our increases approximately 6 stitches apart.

Determine where to start based on whether you’re increasing by an even or odd number of stitches. If the number of increases is even, position the two center-most increases on either side of center. E.g., if the distance between increases is 6 stitches, the two center-most increases would be on needles 4L and 4R, leaving 6 stitches (3L to 3R) in between.

If the number of increases is odd, position the center increase on either side of center (1L or 1R).

Determine the placement of the other increases by counting off needles working from the center towards the edges. For this example, you would leave 6 stitches between each increase. Temporarily mark the location of each increases by pulling those needles to hold.

Use a garter bar or decker comb to move stitches right or left starting at the edge. You may have to make several passes if your decker comb is not wide enough to transfer all of the stitches at once.