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
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
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
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
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
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;
- Heddles and shaft motion module
- Warp supply and tension module
- Reed module
- Shuttle and weft thread supply module
- Weave take up, table and clamp, and chain stitch components module
- Electronics and computer control and file design module
Heddle and Shaft Design
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
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
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
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
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
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
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.
After each pick, the motors return the shafts to center position. This may not be necessary, but as yet remains untested.
Downloads
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.
Downloads
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.