Really need to know how much lifting force is required, and over what distance of travel. The direct servo drive would be the simplest method, if the torque requirements are not too large. I have no idea what kind of tension the servo would be working against, all my textile experience is with knitting machines, not weaving.
It may be possible to attach a 2nd set of lifter cords to each frame, without removing the original, if the slack created by lifting the frame does not cause the original cords to tangle or interfere with anything. Alternately it might be possible to hook onto the original cords where they exit the eyelets, the levers may just be high enough above the eyelets that the geometry is correct for a vertical pull from that point without the tendency to arc towards the levers. That would make for an easy method of installing this mechanism above the existing machine while allowing easy removal and maintaining operation of the levers.
I was thinking of running the "wire" (something like monofilament fishing line might work better) through the eyelets, all the way down to the frame tops. That would let the strings go slack, but if tangling were not a problem it would allow for manual operation if the frame was down.
JCA34F:
Another idea, hope it's legible and makes sense.
It absolutely is – thank you! This is the solution I'm leaning towards now.
David_2018 – thank you for sharing the jacquard mechanism, that's very cool and illuminating. I think though the mechanics of trying to create something equivalent to this would be very challenging for me and so direct lifters for each of the 16 shafts might be preferable.
The cord I am thinking of using is known as Teksolv and is the polyester equivalent of a chain - so there are little loops throughout the whole length, which makes attaching one cord to another very easy:
My thinking is that I would either attach it either directly to the shaft or to the existing cord just as it exits the eyelet; I'll just have to experiment to see if I can leave the manual cords in place or if they will create too much slack and get in the way.
If going for JCAF34F's option - do you know how I can measure the rotational torque required to lift each frame via a grooved wheel? I was going to get a pulley gauge when using the linear actuator / jacquard model but I don't think that will work for this design? The frames aren't actually super heavy but I have no idea of the force required. Speed is also a consideration, as I'd like the frames to lift and lower quite quickly.
Assuming it meets the force requirements, this is the servo I'm thinking of getting to drive the grooved wheel – does this look plausible to you all?
And to control 16 servos, I'd need the Arduino mega breadboard, is that right? Any other hardware that I'd need (a relay?) I found this Raspberry Pi version and confess I don't fully understand the difference between the two different systems: 16-Channel Servo Driver HAT for Raspberry Pi (12-bit I2C) | The Pi Hut
Hugest thanks to all of you for your interest in this project, I'm incredibly grateful and excited to start building!
daviesally:
And to control 16 servos, I'd need the Arduino mega breadboard, is that right?
You can get a 16-channel servo board that an UNO can drive, Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface [PCA9685] : ID 815 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits as an example, there are generic versions but that page gives lots of data. A previous post also implies that you can attach and detach servos so that there are not 16 being driven at once, that may work if you do not leave them detached for too long. You may want the mega anyway, because it has more memory for storing a longer pattern, although an SD card would probably be easier for allowing different patterns.
david_2018:
You can get a 16-channel servo board that an UNO can drive, Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface [PCA9685] : ID 815 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits as an example, there are generic versions but that page gives lots of data. A previous post also implies that you can attach and detach servos so that there are not 16 being driven at once, that may work if you do not leave them detached for too long. You may want the mega anyway, because it has more memory for storing a longer pattern, although an SD card would probably be easier for allowing different patterns.
Ah cool, thank you! So an Uno + an SD card + a 16 channel servo board would give me everything I need? Ultimately I'd really like the Arduino to be able to 'read' the lift pattern from an uploaded WIF file. The maximum number of shafts I've ever have to lift is 15. I see the Uno has 14 input/output pins so if I use one for the SD card, would that limit me to 13 servos? Sorry for the newbie question, I really appreciate how generous you've been with your thoughts and guidance.
A mechanical question too, if I may - any idea how I could secure the end of the Texsolv cord to the grooved wheel turned by the servo? I guess I could try using superglue but I suspect that wouldn't be secure enough to stay in place while lifting the shaft.
That Adafruit board uses I2C I think, so you can command all the servos connected to it using a couple of pins.
Don't forget that you will need a power supply for the servo board - the Arduino can control servos but it can't power them.
In CNC and 3D printing projects, there are programs that run on the PC that send instructions to the micro controller that drives the steppers. So the design lives on the PC and the steps to make it are supplied to the Arduino a few at a time. I wonder if anything similar exists for WIF files.
My thinking is that I would either attach it either directly to the shaft or to the existing cord just as it exits the eyelet; I'll just have to experiment to see if I can leave the manual cords in place or if they will create too much slack and get in the way.
I would think that removing the cords from the levers, bringing them to to back, and then attaching the lifting cords to them would be a good way to go. Is taking the cords off the levers an significant barrier?
The 16 servo board is a good idea. It may not really be needed, as the servos could all be driven with a common signal as those which are going to move all will go at the same speed and the same angle. However, there may be variations among the units which can be individually addressed with the board, and it's not very expensive.
any idea how I could secure the end of the Texsolv cord to the grooved wheel turned by the servo? I guess I could try using superglue but I suspect that wouldn't be secure enough to stay in place while lifting the shaft.
My thinking is that the cord would attach at a single point, say 1 o'clock position when the frame is down. I was thinking that the end of the cord could clip into notch. The cord then wraps over the top and will leave the surface at 9 o'clock. You can size the grooved wheels so that a rotation of 120 degree (1 o'clock goes to 5 o'clock) will create the correct lift.
Instead of a wheel, you could pull vertical from the midpoint of the lifter cord using a straight servo arm. That would allow the servos to be stacked vertically in a staggered arrangement without interfering with each other.
Mega is probably a better choice, the UNO gets very limited when using SD cards because of the small memory.
david_2018:
Instead of a wheel, you could pull vertical from the midpoint of the lifter cord using a straight servo arm. That would allow the servos to be stacked vertically in a staggered arrangement without interfering with each other.
Mega is probably a better choice, the UNO gets very limited when using SD cards because of the small memory.
Do you mean a linear actuator? My concern is that anything that creates vertical motion appears to be much more expensive than a servo that offers rotational motion, all the more so because I will need to buy 16 of them - though I agree it would be simpler and more space efficient to lift straight up.
daviesally:
Do you mean a linear actuator? My concern is that anything that creates vertical motion appears to be much more expensive than a servo that offers rotational motion, all the more so because I will need to buy 16 of them - though I agree it would be simpler and more space efficient to lift straight up.
No, I was thinking of just an ordinary servo arm, but a pulley on a servo can also apply a vertical pull if positioned above the load.
Ah okay, that makes sense David. Thank you! So I've now ordered the Mega, the servo shield and one servo to get started on the pulley mechanism. I'm also thinking about the pedal I'd use to activate the lift - from my research I understand I need a momentary action SPST pedal. Would this be compatible with the system I'm designing? Can you see any compatibility problems?
daviesally:
Ah okay, that makes sense David. Thank you! So I've now ordered the Mega, the servo shield and one servo to get started on the pulley mechanism. I'm also thinking about the pedal I'd use to activate the lift - from my research I understand I need a momentary action SPST pedal. Would this be compatible with the system I'm designing? Can you see any compatibility problems?
Any good grade footswitch should work ok, I see no problems with the one you linked.
You really do not need the servo shield for a Mega, the Servo library is capable of driving 48 servos on a Mega, but the shield will work and makes hooking up the servos easier, as well as freeing up resources on the Mega itself. Just be careful to check your actual servo to make sure the wiring matches the connectors on the servo shield, some servos arrange the power, ground, and signal pins differently on the connector.
The Mega will be good if you decide to add a display and SD card reader, plenty of memory to handle those along with the servos.
It certainly looks like the levers and cord attachments to the lifter bars can be left in place without them interfering with a motorized lift using additional cords.
wildbill:
Nice indeed. I do wish it showed the loom running though. I would also like to know what software feeds the Arduino the instructions.
The video briefly mentions the website with the software https://www.quickdrawweaving.com/, the arduino software and additional data for the device in the video are located there also.
I was just popping back to share my progress – but that video is fantastic @david_2018, exactly what I'm looking for. You're a trove of helpful information
Here's a video from today showing my rough and ready proof of concept, using this servo (do let me know if you think I might encounter any problems hooking up 16 of these - I know I'll need an external power source, as I'm currently powering the servo through the Arduino). I figured a continuous rotation servo rather than a 'standard' one would be best for this project, in case I needed multiple rotations to get the necessary lift.
As you can see I've made the 'pulley' system using a standard servo spline and screws - I am struggling to find the appropriate 'grooved wheel' that would allow me to attach two separate strings reliably and have them wind up during rotation - leads welcome! I also have a sail winch pulley drum on the way to test out.
And here is my sketch. I'm using a serial input A to make the shaft lift and B to make it drop, but hope eventually to progress to a foot pedal (lifting the shaft when pressed, releasing the shaft when released). I'd love the Arduino to be able to read the pattern of shaft lifts directly from the Quickdraw weaving software which looks like it should be possible.
Feedback and input welcome as this is my first ever attempt at writing code:
#include <Servo.h>
Servo myServo;
const int CLOCKWISE = 1000; // global variables (constants) to represent direction of servo rotation
const int STOP = 1500;
const int C_CLOCKWISE = 2000;
void setup() {
myServo.writeMicroseconds(STOP);
Serial.begin(9600);
myServo.attach(2);
}
void loop() {
if (Serial.available()) { // Returns true if there is serial input.
char ch = Serial.read();
if (ch == 'A') {
myServo.attach(2);
myServo.writeMicroseconds(STOP);
delay(500);
myServo.writeMicroseconds(CLOCKWISE);
delay(2000);
myServo.detach();
}
if (ch == 'B') {
myServo.attach(2);
myServo.writeMicroseconds(C_CLOCKWISE);
delay(2000);
myServo.writeMicroseconds(STOP);
delay(500);
myServo.detach();
}
}}
I was basing my pulley size on a 3" lift, but the video looks like 4" or more, I was thinking of a standard 180 degree servo and making the pulley circumference about 2 times the lift +20%, so the servo would not need to turn all the way to the ends of travel. With a 4" lift * 2 + 20%, (9.6") circumference, diameter would be about 3 1/16" (circumference / Pi). Would be faster (lift time approximately 400 ~ 500 ms) and less tangle prone. But you're the engineer.
The only problem I see with using a continuous rotation servo is that there is no reference for the current position of the shaft in the loom. Stepper motors have the same problem, but without power a stepper motor shaft is fairly free to turn, while a continuous rotation servo is difficult to turn because of the gearing inside the servo. In either case, a switch to indicate the "home" position is a good idea, but does add a bit more complexity to the design. A standard servo is much easier to work with when blindly operating something without feedback.
Generally you do not want to attach and detach the servo, that is only really necessary if you have more servos than the arduino is capable of driving simultaneously.
I'm not familiar with the Quickdraw software, but it could undoubtedly work with servos by modifying the code used for the stepper motors.