Arduino Controlled Fully Automated 3d Printed Tabletop Dobby Loom - Test Prototype

by glzwadlo in Workshop > 3D Printing

108 Views, 1 Favorites, 0 Comments

Arduino Controlled Fully Automated 3d Printed Tabletop Dobby Loom - Test Prototype

GLZCoverImage.jpeg

My wife (and her two sisters) have been weavers for decades. I acquired an Elegoo Neptune 4 Pro 3d printer in late 2024 and started using TinkerCad to design parts for printing. I also began a course on Arduino programming and interfacing from Inventr.io (now CraftingTable), primarily as a hobby to fill my retirement time. What better project than an automated table loom! I soon learned that automating the motions of a human weaver is not easy. This Instructable (my first) explains how to build a test prototype to evaluate some automation techniques that may be useful in weaving. (See the videos at my youtube channel Greg Zwadlo)

Supplies

Loom Sequence GLZ1
GLZ_Third_Output_4127.jpg

This is a video of one pick or cycle from the test prototype. A final design would, hopefully, look much nicer, and cycle more quickly! This is a runner of about 500 pick cycles made without any intervention. Various hardware components are used, all available at Amazon. I will not list them here.

Selecting a 3d Printed Base Model to Build From

3d printed Power Loom
Power Loom Stuck Shuttle

My initial trial came from a purchased plan from Fraens Engineering (https://fraensengineering.com/3d-printed-power-loom/). This video shows it working well before adding the warp and weft threads. My attempts at actual weaving had limited success, primarily due to the shuttle having a mind of its own as seen in this video

3d Printed 8-shaft Dobby Table Top Loom As Second Model

GLZ_Photo_1.jpg
GLZ_Photo_2.jpg
3d printed 8-Shaft Full Cycle

I then purchased additional plans from Fraens Engineering to 3d print an eight shaft table loom (https://fraensengineering.com/3d-printed-table-loom/) with options to add a Dobby upgrade and to even attach some computer automation (https://fraensengineering.com/dobby-upgrade-for-3d-printed-table-loom/).

This is the completed loom. It worked well and my wife was quite impressed that it could actually be made from plastic! I decided to use this loom framework to begin adding automated components. TinkerCad was used for all design work. It was quite efficient for my beginners level of expertise in CAD design, producing STL files ready for conversion to G-code and printing. I used PLA for all parts.

Topics Evaluated With the Test Protype

Screen Capture STL files.jpg
TinkerCad2.jpg
TinkerCad3.jpg
TinkerCad4.jpg
TinkerCad1.jpg

I noted from my wife’s work that the edges of a woven product such as a rug or runner require significant manual skill to make uniform. Fraen’s design of a “Needle Loom” (https://fraensengineering.com/3d-printed-automatic-needle-loom/) caught my attention so I determined to use a similar latch hook method to create a chain stitch on both sides of the weave. Shuttle motion is also a bit of a challenge. I used a concept from “Rogers Weaving Machine” for more control of shuttle motion (https://www.youtube.com/watch?v=nBUR466rVQs&t=3s).

I divided construction into 6 modules. This project evolved into several trials and redesigns. Many of the parts were from previous small projects rather than purchasing new. I will now describe the design of the final prototype that produced woven product. This Instructable includes a limited listing of parts, part files, assembly instructions and Arduino code, primarily because it was put together with parts on hand from a few other projects. The Elegoo 3d printer made into the hundreds of parts with hardly a problem. Print settings were primarily the default for this material with support needed for only a few. I used PLA+, also from Elegoo and with the loom parts in various colors as I occasionally changed reels.

The modules include;

  1. Heddles and shaft motion module
  2. Warp supply and tension module
  3. Reed module
  4. Shuttle and weft thread supply module
  5. Weave take up, table and clamp, and chain stitch components module
  6. Electronics and computer control and file design module

Heddle and Shaft Design

GLZ_Photo_3.jpg
1_Overall_Threading_3866.jpg
1_Heddles_CloseUp4091.jpg
1_Heddles_Front_4089.jpg
1_Heddles_side_4090.jpg
1_Heddles_UpDown_Mech_4095.jpg
1_Loom_All.jpg
1_Threading_Front_2_3865.jpg
Brief Shed Open From
Side Shed Open Thru Shuttle Return

My initial testing with Fraen’s table loom revealed warp tension is quite important in consistent weaving. I decided to modify the individual heddles to convert to a type of “Rigid Heddle” design. (I realized later that this limits threading patterns, butit may be an option to have “sets” of interchangeable shafts for other threading sequences.) I retained the 8 shaft design and narrowed the thickness of each shaft to 4.5 mm and width to 56 total warp threads (7 repeat straight draw threadings) (threading is quite time consuming!) for this prototype. Thread hole diameter was 3 mm, parallel to warp thread direction, sufficient to allow easy passage of the 1.5 mm cotton tread used for the warp.

I used Fraen’s “elastic” concept for down pull of the shafts and a pulley arrangement with 8 stepper motors (28BYJ-48 Stepper Motor with ULN2003 Driver) to raise the shafts independently (no need for treadles in this Dobby design). I also used a “combined rising and sinking shed” for a straight thru warp thread path in the “middle” position. The “AccelStepper” library allowed all motors to move shafts in unison (https://lastminuteengineers.com/28byj48-stepper-motor-arduino-tutorial/) for each pick. (A pick is normally a single pass of the weft yarn (the horizontal thread) through the warp (the vertical threads) in one direction.)

I also included an “UP/DOWN” shaft to move two additional warp threads on each edge of the weave. This provides a consistent edge when these extra “heddles” are sequentially raised and lowered for each pick (motion of the shuttle thru the shed) to essentially capture the chain stitch.

Warp Supply and Tension Module

2_WarpSupply_Side.jpg
Shed and Reed From Back of Loom
Side Rear Shed Close

I attached a slip clutch from an RC car design to provide back tension/take up to the warp thread supply roller. A 360 degree servo motor worked well to provide the tension. A warp thread “comb” was used to maintain thread separation at this end of the process.

The reed motion motor is also included in this module. The NEMA 17 stepper in combination with a linear gear provide accurate movement of the reed.

Reed Module

3_Reed_Side_4100.jpg
3_Reed_Front_4099.jpg
Weft Supply Roller

I chose linear horizonal motion for the reed, primarily to accommodate the other various components in the shaft area. The reed was built in two parts on my 3d printer and spacing was selected for a dent (gap between reed wires) of 9.4 dpi (3.7 dpcm). I selected this value after converting STL test files of various widths and spacings in the “UltiMaker Cura” and printing on the Elegoo. I was impressed with the 3d Elegoo printer's capability to produce straight dent spacings at this spacing, though it may be possible to increase the dent with various printer settings. Shafts and horizontal bearings were from a previous CNC project. I’m pleased with the consistent motion of the reed mechanics to compress the weft threads.

Openings on each end of the reed allow the latch hook to pass thru the reed during compression without obstruction. The two attachments (referred to as a horned (not y) reed on either end provide a mechanism to open and close the latch hooks. Magnets at the tip of these horns confirm the hook is opened to grab the weft from the shuttle and closed when pulling thru the previous stitch loop, producing the chain. (Mechanical opening and closing the latch hook was very dependent on servo motor positioning and often resulted in crashes!)

Shuttle and Weft Thread Module

4_Shuttle_Gear4107.jpg
4_Shuttle_Lead_End_4109.jpg
4_Weft_Supply_End4104.jpg
4_Weft_Supply_Side4105.jpg
4_Shed_and_Shuttle_3995.jpg
4_Shed_From_Rear_3996.jpg
Weft Supply Roller

I decided to use a rod “controlled” shuttle to insert the weft thread through the shed created by the heddles. This results in a “double” thread per pick (note the slight difference in pick definition), and has worked well in producing weft thread thicknesses similar to warp thread separation distance. The weft thread is pulled from a supply roller thru a hollow shaft to the shuttle tip where it exits at a spaced distance from this shaft. This allows sufficient separation for the latch hook to grab the thread.

The shuttle rod is pushed through the shed using another NEMA 17 stepper motor and linear gear and slide to provide consistent placing of the weft thread for the latch hook to capture. It is then retracted to allow the second latch hook to capture the thread on the opposite side of the weave. The mechanism to move the shuttle is a bit complex, but maintains a straight path through the shed, especially if some warp threads are a bit loose.

The weft thread supply roller is driven by a 360 degree servo, the same as the warp thread supply roller. A second slip clutch is used to control wind and unwind of the weft thread as well as tension during the chain stitch sequence. This tension is critical in maintaining consistent chain stitching with the latch hooks.

The weft supply mechanism allows easy spool (10.8 cm or 4.25 inch width) change for different weft thread colors. I used a 3/2 cotton 8 ounces / 630 yard (1.0 mm diameter) thread for the weft.

Chain Stitch Components, Weave Table Clamp and Take Up

5_WeaveTable.jpg
5_Left_LH.jpg
5_Left_LH_Close_Side.jpg
5_Left_LH_Close_Top.jpg
5_LH_CloseUp.jpg
5_R_LH_Close_Ends_4115.jpg
5_Right_LH_Closeup_4112.jpg
5_Right_LH_Servo_Gear.jpg
5_Right_LH_Weave_Start_4038.jpg
5_TakeUp_Motor_Side_4123.jpg
5_TakeUp_Roller.jpg
5_Weave_Clamp.jpg
5_Weave_On_Table_14070.jpg
5_Weave_on_Table_Black_4028.jpg
5_Weave_Start_Both_LH_4039.jpg
5_Weave_Start_Closeup_LH_4037.jpg
Shed Open Thru Reed Finish
Right Latch hook Closeup
Right Latch Hook From Back
Left Latch Hook Back View
Latch Hooks From Top

This module involved the most amount of work, primarily to create a consistent chain stitch.

A weave table is mounted about 100 mm (4 inches) from the reed home position. This provides some weave stability during operation. It also provides a “position” where the reed travel ends to provide consistent weft spacing.

The weave clamp has several uses. It provides a defined end line of the shed while the shuttle rod moves through the shed. It also holds the weave in place so chain stitching can be consistent. It also provides two overlap corners (one on each end of the weave) to allow tightening of the weft thread during stitching. These components appear to work consistently but require coordination with the weaving process, especially warp and weft tension. It is moved against and away from the weave with a servo motor that produces torque torque against the weave.

The chain stitch module uses commercially available latch hooks. These hooks must be sufficiently long to grab the weft thread from the shuttle and pull it through the previous chain loop. The hooks in this design had straight handles 100 mm long. Hook height was 5 mm. Magnets attached to the horns on the reed are used to consistently open and close the latch. Motion of the latch hook is accomplished with two servo motors attached to linear drives. This provides both horizontal and up/down motion to accomplish the chain stitching motion. Accurate positioning of these hooks was a bit difficult with the inexpensive servo motors. The slides were available from a previous CNC project.

A NEMA 17 stepper motor was used to consistently take up the weave as the process produced output. Thread stretching and change in take up roller diameter were not compensated for.

Chain Stitch Quality

GLZ_Second_Output.jpg
Chain_Stitch_4134.jpg
Chain_Stitch_4132.jpg

These photos illustrate the quality and consistency of the chain stitch. Consistent tension is key to obtaining these results without losing a stitch. An advantage of this stitch for testing purposes is the weft can be pulled out of the weave allowing the warp threads to be reused for additional weave automation improvements. Lock stitching, used in sewing machines, could also be attempted with this type of weaving. In this case another bobbin of thread is required to hold the stitches.

Electronics, Computer Control and File Design

6_Elec_side_4126.jpg
6_Elec_back_4125.jpg

The loom mechanisms were controlled by an Arduino MEGA 2560 because of the number of outputs required. Each ULN2003 Driver to the 28BYJ-48 Stepper Motors required 4 output connections (32 total). Three additional connections of two each were needed for the larger stepper motors. The seven servo motors required one connection each. Power to these various devices was provided by two separate supplies (6v and 12v). A variety of input switches, encoders, and potentiometer connections were also used for independent output control during set up and testing as well as start up. A few limit switches were used to set home motor positions.

Sequencing of loom operations was done in a fairly step-by-step fashion with Arduino Sketches. A variety of cycle sequences were tested to optimize weaving consistency. The sequence used in this video is described at the end of this Instructable. I did not use any special techniques to coordinate stepper and servo motors from one set point to the next. I will assume much better programming techniques are available.

The sketch used for the motion shown in these videos does sequential operation of each servo and motor. I have not as yet worked with trying to do more simultaneous motion steps. I included switch “stop” mechanisms in the code in case of a badly executed motion, such as the latch hook not catching the weft thread as a “just in case” measure. Each pick cycle takes upward of 30 to 60 seconds, so weaving is slow for this prototype loom. I’m sure hardware and software modifications can be made to speed up the process.

Shaft Stepper Motor Motion Arduino Code

These steppers have a “zero” center position for each shaft. A variable array of eight 0’s and 1’s are input to define whether the shafts should move up or down a set stepper count depending on the weave pattern. The physical configuration of the motors (to save space) requires opposite directions for the two sets of motors. The “accelstepper” library allows all 8 shafts to move simultaneously to create the correct shed.


This section of code rotates the 8 steppers in unison to produce the selected pattern of the shafts from the D_P[ ] array.

for (int i = 7; i >= 4; i--) { // Iterate through bits from MSB to LSB
if (bitRead(D_P[j], i) == 1) {
positions[i] = Heddles_5_8_Up;
} else {
positions[i] = Heddles_5_8_Down;
}
}
for (int i = 3; i >= 0; i--) { // Iterate through bits from MSB to LSB
if (bitRead(D_P[j], i) == 1) {
positions[i] = Heddles_1_4_Up;
} else {
positions[i] = Heddles_1_4_Down;
}
}
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position


After each pick, the motors return the shafts to center position. This may not be necessary, but as yet remains untested.

Data Input for Weave Sequence

The variable array for the shaft motor movements is generated in an Excel spreadsheet from a selected weave draft. Various software packages are available to do this conversion as well as for designing weave patterns. The weave draft provides the information to map warp thread up or weft thread up resulting in the desired visual appearance in the weave. Excel then produces an 8-bit binary number such as 01001101 to describe the shaft positions for each pick. This value is converted to decimal format and an array (from .csv file) of these decimal shaft positions for the sequential pattern is copied into the Auduino sketch. A conversion in the sketch to read out this number into each shaft motor position is then done to obtain the required weave pattern. Long decimal arrays are supported in Arduino code, but other options such as a micro SD card module would work. This allows stand alone loom operation. Additional information on weave drafts for an a dobby loom can be found in Fraen's websites.

Moving on With the Test Prototype

My original goal when looking at automating the weaving process was to move past the Dobby concept to the Jacquard loom design. This is certainly doable using various concepts from this test prototype. I would simply and independently control the individual heddles! Well, maybe not so simply, but certainly doable. Concepts such as the attached pdf files are excellent starting points. TinkerCad is up and running. The 3d printer is ready to produce.

Thank you very much for reading this document. Hopefully it illustrates that tools are available for any of us amateurs in the automation world to make things that do things.