Hi
I am planning to do a winch and want to make a level winder using a arduino and a stepper/leadscrew pushing the line back and forth.
Can anyone point me in the right direction on how to make this as simple as possible, maybe there is code available already?
Regarding position I want it to continue the same direction even after power off but I guess the best way to to this is by using an encoder on the winch drum.
I am not sure about the forces and it really does not matter at this stage.
The only thing I care about is finding a way to drive the stepper back and forth on the input
of winch drum rotation.
Maybe something similar has been done and in that case I can start off with that code and go from there.
Hi,
I think the OP is referring to the device in the picture that moves across the drum with the two black vertical rollers.
It allows the laying of cable on the drum in neat side by site order, as shown in the picture.
I guess by level it means the coils are neatly aligned one after each other. A rope guide with rollers ( the two vertical black cylinders in photo) is sliding left to right and back, synchronized with the rotation of the drum.
The stepper purpose is to synchronize the rope guide lateral movement not for pulling the main drum.
Thanks for the clarification. It still looks like a significant load for the motor - even if it drives a screwed rod.
I had though the neat winding on the drum happened automatically as long as the rope remains tensioned. I can't recall seeing any positioning device on cranes.
In any case the links I gave in Reply #1 remain relevant.
Regarding position I want it to continue the same direction even after power off but I guess the best way to to this is by using an encoder on the winch drum.
An encoder is needed to synchronize drum turning with the carriage translation, but it won't be able to tell you which way the rope winding was left. You may want to use some mechanical (or magnet+reed switch) that is pushed in off position when carriage reaches one end and turned on when it reaches the other end.
Or ... make arduino sense a power loss condition and make it store direction (and stepper position) in eeprom in the few ms a capacitor keeps it running. But that's trickier than an external switch.
I am reminded of the "level wind" fishing reels. They used a mechanical double helix shaft geared to the spool to move a guide back and forth to control the fishing line winding and unreeling. At the end of one pass, the guide switched to the other helix to move back. This way the driving shaft did not need to reverse.
I built a winch/sky hook several years ago to help remove/install a 40 lb solder pot in a soldering machine. Uses 1/16 inch steel cable. All new cables on winches will automatically level wind if the tension is maintained at a steady value. Too much tension and the cable will spread the turns in the previous layer. Loose the tension and the turns will unwind themselves.
The OP needs to also devise a method to maintain the cable tension regardless of weight on the end of the cable.
If he does succeed, he needs to investigate a patent!
You are correct in the replies.
This is only the part that moves back and forth with the line.
I haven´t made calculations on the load but surely it can´t be that much considering the line is
pretty long so there is basically no force sideways for the stepper/leadscrew.
It will also be under load 100% of the time so there will be no slack.
There are self reversing shafts like the ones on fishing reels but once you go a little
bigger they get very expensive. I guess they sell more fishing reels than winches.
It will act basically like an electronic lead screw on a lathe only that this has to reverse on a
specific point and so on.
Maybe I should search for ELS sketches and try to modify it.
The ELS example is appropriate, but keep in mind the substantial forces needed to turn the leadscrew- ignore the drum for now. Speed vs torque, and reversible will cost money.
And regardless of how you drive the horizontal motion, you have to remain aware of the drum speed to achieve a continuous level wind, which will vary under load and supply conditions... AND what happens when the drum is spooling cable out?
Does the horizontal drive use a clutch, or keep track of the reverse needed for winding up the cable?
And remember to include calibration for different thicknesses of cable.
Damn those expensive off the shelf units, they thought of everything!
I'd give a force feedback system a try, where the sideways force of the cable on the level winder will steer the movement of the winder. In the simplest case two limit switches, to the left and right of the cable outlet, may be sufficient to determine the sideways movement. The cable should reverse the winding direction at the drum side automatically, so that the opposite switch will indicate that the direction has reversed, and when the winder should be advanced into that direction.
lastchancename:
...AND what happens when the drum is spooling cable out?
Does the horizontal drive use a clutch, or keep track of the reverse needed for winding up the cable?
And remember to include calibration for different thicknesses of cable.
Damn those expensive off the shelf units, they thought of everything!
I though about the spooling out, don´t have a solution for that yet but one step at the time.
About the calibration, I will only use one type of line but good point.
DrDiettrich:
I'd give a force feedback system a try, where the sideways force of the cable on the level winder will steer the movement of the winder. In the simplest case two limit switches, to the left and right of the cable outlet, may be sufficient to determine the sideways movement. The cable should reverse the winding direction at the drum side automatically, so that the opposite switch will indicate that the direction has reversed, and when the winder should be advanced into that direction.
Not sure how you mean but I need the spooling of the winch drum to be "master" and the level wind to slave.
It would be easiest to use a self reversing screw, then maybe use a stepper to control speed but where is the fun in that.
Btw, the winch motor itself is rc controlled or/and step/direction from a motion control software.
You can have an encoder on the winding drum that can let your Arduino know how much the drum turns and in what direction. You could store the current position to an SD Card regularly so that the Arduino could retrieve the position when it is restarted. (I think the internal EEPROM may not have enough write cycles). You can have a microswitch at each end to let the Arduino know when it was appropriate to reverse direction and to recalibrate its position.
I suspect it may be sufficient to move the stepper motor once (or at most twice) for every revolution of the winding drum. That way your encoder may only need to be at one or two positions on the circumference of the drum. With a pair of detectors close together the direction can be sensed by which one is triggered first.
To my mind all the complexities with this project are mechanical - not computing.
The internal EEPROM could hold the value, as there might be only one which would be of interest.
That would be the current position as number if steps which the stepper made before it was shut off.
Just a thought:
If I am not mistaken, there is another thread in this forum which described a method to write a value into EEPROM when the Ardu is powered off - be it intentionally or by accident. Will try to find the sketch.
Let's say that will work and only a few bytes have to be written. Then you could repeat this >100 k times, before the ERPROM gives up. One could also think of a shifting algorithm to continuously use different storage locations but this requires at least one single location (e.g. 0) in the EEPROM to store the new starting address of the stored values.
rpt007:
Just a thought:
If I am not mistaken, there is another thread in this forum which described a method to write a value into EEPROM when the Ardu is powered off - be it intentionally or by accident. Will try to find the sketch.
If you can find that and if it is a robust solution then the EEPROM is an option.
I was assuming a need to write the position regularly as a precaution against the Arduino being switched off without writing the position at that moment.
Another EEPROM option is to write the data to different locations to even out the wear - but I figured an SD Card may be simpler for the OP.
Another EEPROM option is to write the data to different locations to even out the wear
Yes, I thought of this as well and had already written it in my post, but then I deleted this "roll and shift" writing as you have to keep track where it was written. And if you write that start address, say in location "0" - this memory spot would be killed.
Another idea with the moving addresses to overcome this issue, mightbe to just shift with a specific heading pattern. My idea is to erase first the old header pattern and then move on to the next unused location, write the pattern and then the data. But have not thought it through yet if there is another issue which I currently oversee.
Will now try to find the thread - could have been in the German section.
I found the discussion. It is in another German Arduino forum.
The essentials were:
Data are only written into EEPROM, when the Arduino is powered off.
To detect the power off situation and to keep the Arduino a little bit alive to complete the EEPROM write cycle, a small additional electronic circuit is needed:
The value of the capacitor should be calculated on the time needed to keep the Arduino alive until the EEPROM has been updated; and: the Arduino should not power too many external devices as thsi could cause very big capacitors.
Then the script has to check if the power off situation is given or not (interrupt based FALLING detect).
If the interrupt occurs, the data, which have to be saved, are written into EEPROM. Next boot reads the saved value in the setup function back and the application runs until next power off.
The routine was only "pseudo" explained, but there was no code written yet.
That said imho @Robin2's idea, using an SD card would be the best way to pursue.