Ooops, yep 8825 Thanks for the info.
Oliver 33. Thanks for joining in. Some back ground. The boom and tower modules are light but immensely strong tensionally. Ultimately there is a 5mm threaded rod that runs from the Boom head to the base of the tower and tension is applied. The boom head is running on balls in a groove in the base which is attached to the top of the tower where the stepper motor is. I am aware of the weakness issue there and plan to fix it but am still in experimental stage and a whole new head may yet be designed. There is adjustment for the gear mesh. I checked that after the first try with Neil and found it to be too tight so adjusted it to have.5 mm clearance between the top of the driver gear and the bottom of the driven gear. The gears are 3d printed so not perfect. Even in the test stage now, there is a wing nut on the top plate to apply tension on the balls so that there is a modicum of resistance when the gear drives, however the resistance is not great and the Tower Head moves easily with the push of a finger even when pushing the unpowered stepper motor. I do plan to control it autonomously and hope to be able to feed the numbers in and push a button to make it do it’s thing. Finally, Stealth Chop, is that available for a reasonable price?
I am starting to see TMC during my travels on the internet. You mention2209 and I have seen 2130 and in Oliver’s video below, there are a lot of them. They do seem to be the weapon of choice but I wonder how one comes to the correct choice?
To my knowledge, you’re just after one that provides the micro step capability and current capacity you’re after, while being compatible with your supply voltage. The 2209 is the most common in the 3D printer world, and would be a good start, it’s only if you were after more performance from a higher supply voltage or similar that you’d reach higher in their range (some printers on the bleeding edge use 48V drivers like the 2130. Look at this thing chooch!)
Trinamic have a decent comparison table on their site:
Nope not after more performance. Less would be good. I’d like to slow the whole thing down , reduce noise and get a bit smoother. I think I’m pretty close, just gotta try a few things and see how it goes. Would the 2209 work with the sketch and wiring diagram that I have?
Any stepper driver that operates using step and direction will work without changes to the code you have. There is no reason to upgrade from the DRV8825 you are using at the moment - if you need to improve something, such as vibration or torque - then you can consider alternative drivers when you know exactly what you need to achieve. The wiring will only change to accommodate any physical differences, although if the driver offers additional features (such as an index) and you want to use them then you would obviously need to add the wiring required. Is there any reason you are not using the shield?
I would recommend getting the software up to a working level as the next step. That way you will be able to drive the tower as you intend in order to find out where there are problems and what adjustments are needed and whether a different driver would be worthwhile. For instance, at the moment you don’t know whether you have enough torque to move with the minimum theoretical resolution or whether you have full positioning repeatability at all speeds.
If you implement the code you already have but with a software library instead of individual pulse control then you get facilities like automatic acceleration and deceleration with very little additional effort, and you may find that vibration is no longer a problem.
Thanks Jeff. I am using an A4988 driver at the moment. It was suggested that I go to the DRV8825 but I didn’t get to that point. Then I watched The Trinamic video posted by Oliver and saw the TMC2209 driver was apparently pretty awesome and am now attempting to find out more about it. Speed, or a faster speed, is not an issue. I would probably prefer to go a little slower and am definitely interested in the possibility of soft start and stop (acceleration and deceleration). Can I 1/2,1/4,1/8 and or 1/16 step the motor with what I currently have? You mention a software library to provide accel/decel, can you point me in that direction?
A4988 is almost identical to DRV88225, so the above comments still apply - I can’t see any point in going to something different at this stage. Speed is going to be determined by the motor, not the driver, but if that isn’t an issue then that’s another reason for sticking with what you have, for now.
You can test the effect of microstepping very easily. The A4988 module breaks out the required pins as MS1, MS2 and MS3. Wire these to logic high or logic low according to the table at that site - for instance high, low, low respectively for 1/2. Then run the same test with the same code and note the diffference. Then adjust the number of steps as required. Then adjust the delay between pulses and note the effect again. The reason I suggested the CNC shield is that it includes the jumpers that make this setting very simple. It will also have some additional capacitance for smoothing.
What an awesome project. I would love to have that workshop.
I would like to be devil’s advocate here. When the boom goes on, the momentum of the turning boom is going to be many times just the turntable. That stepper motor is going to strain to get the thing moving and also when it needs to stop it is highly likely to overrun. I propose using a stepper with a large reduction, say 20:1. It will increase the torque by 20, increase the stopping power by 20, increase the positioning ability by 20. I don’t know much about the Arduino sketch ability but steppers are capable of hundreds of steps a second (and they run more smoothly due to their own inertia at speed).
Also, the sketch should ramp the speed up at the start and ramp it down when approaching the target destination. It will reduce stress on your driving gear. I know that’s complex but I think beneficial in the long run.
For setting a zero position, I would think optical. My first thought was place a small LED in the base plate so the moving gear just covers it. Then make a slot on the bottom of the V between two gear teeth so the LED is uncovered. Just need a detector nearby to detect the reflected light. The sensitivity would be improved if the bottom of the slot was reflective. My second thought was to do this for every gap between teeth except the one that is the zero position. The reason being that if this is compared to the expected position it will detect any error and can correct the loop that rotates the base.
My 2¢ worth.
Inertia and momentum will be an issue, but managing it turns out not to be complex because there are Arduino libraries available for steppers that do the acceleration and deceleration automatically. It requires that the move command is specified as an absolute location for the destination, so the library code can calculate how to manage the speed throughout the move, but that is the likely mode of operation for a project such as a crane.
OK, I have been thinking that the stepper motor wants to go faster. Also I have to put some weight behind the boom as well as the weight trolley. It needs static weight and moveable weight. I can design and make something to hang the stepper motor further out and run a belt drive at a much bigger ratio. That solves two problems. Good work thanks Alan.
Thanks Jeff, I think I will be able to manage inertia better with the new plan. I am having a break from the crane at the moment and going back to arduino driving 4 dc motors so that I can sort of sneak up on the stepper motors problem. I think a lot of the noise I am experiencing is because of the lightweight structure I am using so plan to stiffen it up. That opportunity arises now thaty I am thinking of relocating the stepper motor to get a bigger ratio.
Nah it is an issue, the stepper libraries are all open loop - that is they’re relying on the fact that there’s enough damping and low enough inertia in the system to prevent overshoot. With a lot of inertia and insufficent damping it is entirely possible that the crane skips a step or too. Decreasing the maximum allowable accelerations is a simple answer, but depending on circumstances won’t necessarily stop it from skipping steps.
You’d need to run closed loop to really be sure, but horses for courses.
Hey Oliver and all,
This is an awesome thread, and I’ve got some 2c as well. Cheap closed loop steppers do exist, and it should be able to be integrated into your project as they take step and direction input like your current driver.
But you could probably get around step loss by limiting your acceleration as Alan said, in the 3D printer world, missed steps means something’s up with your motion system, or your motor current is too low.
Is this the sort of library you were talking about @Alan73922?
I didn’t say it wasn’t an issue - I said that managing it is not difficult with the right libraries. With acceleration and deceleration control in particular, but also with control over the maximum speed - a tower crane does not rotate very fast… A closed loop system would likely reduce errors, but it is complete overkill for this application.
Confession time. I know almost zero of Arduino and I can’t program in C. But I know a bit about mechanics and I’ve worked with people on projects where heavy objects are moved. The computations aren’t that difficult so it is likely someone has done it. I write assembler programs for 8-bit PIC processors. I think I joined this group because I bought some Arduino nano boards. I’ve stayed because there are some awesome projects and this is one.
I am seriously glad you blokes are on board. I designed the first pieces of this crane some three years ago and have been working my way through issues to get to where we are. I have seriously bitten off more than I can chew and don’t understand a lot of what you (really awesome) people are talking about but, I can see that this project has an end. Who knows when that will be, so thanks for jumping on the train and let’s see where it will go.
Suuuper awesome project Geoffrey, the scale of this is immense! And the laser job is sublime
As for finding the reference position I would probably go for something as Alan mentioned optical (doesn’t wear out anywhere near as fast as something mechanical) or as Jeff mentioned, magnetic (the hall effect sensor).
Re: noise. One issue I’ve had in the past was a couple of wires were swapped on a driver board but there was still enough current to be able to ‘jump’ across a step causing some horrible vibrations. Also there might be some upwards action somewhere in the mix causing the rattling.
Testing the motor in isolation would be the easiest test I think.
This is when you learn the most! A big idea leads to a big project, lots of learning and asking questions.
My thoughts on the matter of control
Without quite a lot of testing and changing of parameters etc a closed loop scheme would definitely be the way to go in terms of speed. If Geoffrey were to use this piece to pickup objects then precise control of the rotation would be required hence some form of integral action, since the system is designed to move slowly you wouldn’t need any derivative.
Tomorrow I plan to design and print the driven pulley and the drive pulley for a standard belt . I need to understand how many rpm a Nema 17 is most comfortable to be at allowing for good acceleration and deceleration. Your thoughts please. By the way, I tested the nema without being attached to the tower head and it is surprisingly quiet.
3D printer steppers usually get up to a few hundred RPM just fine, but keep in mind that torque starts to drop the faster a stepper is spinning.
Here’s a set of parametric models you might want to have a look at if you’re looking to print a pulley:
As for the noise comment, you’ve found what I have in that most of the noise from a stepper will be from the load attached acting as a soundboard in a way. As I’ve said, TMC stepper drivers can get it quieter at low speeds, but obviously getting the whole thing running nicely is going to be priority 1
Keen to see this develop!