Hi @andydowns,
Yes, an impressive project and perfect for a dronebotworkshop project!
Anyway... I do know that steppers skip steps, so your limit switches are redundant.
Skipping Steps
I failed to fully qualify my statement. I'm a little out practice of discussing technical aspects since my leaving the forum. @davee comments are more expletive. Stepper motors are completely reliable (as you surmised with hard disks and 3D printers). They miss steps under one mechanical condition - being asked to supply more torque than the driver's current setting can provide. As @davee mentioned this happens in several situations in your design.
- can't overcome friction of the sliding mechanism (bad)
- has reached the stop and still has steps commanded (good)
- trying to drive it too fast and the inertia of the design is requiring too much torque trying to accelerate it (bad)
This last problem can be handled by using AccelStepper (Arduino Library) to accelerate instead of simply trying to drive it instantly to some set speed. If this is your problem, you might find that if you try different speeds, you'll reach a threshold that starts skipping steps. Also as @davee suggested, using micro stepping also helps.
Voltage
By definition, voltage is the potential to supply current. Higher voltage has the ability to supply more current, faster... especially in a PWM controlled way which is what the A4988 is doing. @davee can explain it far better in EE terms, but in practical terms using the A4988 or DRV8825, I've always seen better performance at higher voltage. The A4988 can utilize up to 35 volts. The DRV8825 up to 45V. I don't really understand why they post voltage on steppers since it is entirely controlled by the stepper driver and current limit is the only significant value on the stepper motor.
Something else I noticed yesterday was wining coming from the motor when powered up but not moving. I varied the current limiter on the bench power supply and it did change the frequency of the hum.
Stationary Noise
Yes, the full current setting is constantly being applied even with the motor stopped. In fact from my tests, I found that the motor will be drawing more current when stopped than when at full speed (even multi-thousand rpms). In your project, you should look into controlling the Enable pin and turning off the motor when not opening/closing a gate. If you run it anywhere near max A4988 current, you will find it gets very hot besides wasting a lot of electricity.
Suggestion
I didn't see any design, but if you really meant a guillotine like design, you have to convert rotational to linear movement... requiring some mechanism. A crank, connecting rod is cumbersome. A geared (rack and pinion) can present a contamination problem. Since you mentioned having a 3D printer, making a design using curves shouldn't be a problem. Something like a direct drive like this is simple mechanically. Just a thought.
3 lines of code = InqPortal = Complete IoT, App, Web Server w/ GUI Admin Client, WiFi Manager, Drag & Drop File Manager, OTA, Performance Metrics, Web Socket Comms, Easy App API, All running on ESP8266...
Even usable on ESP-01S - Quickest Start Guide
@inq If I may speak for Andy @andydowns, a guillotine gate is one where the metal closure goes completely through the housing rather than trying to make a snug fit. The advantage of that is it cleans out minor debris that would normally build up with a conventional gate and lead to leakage. He already has the metal guillotine gates. I attached some pictures that show that type.
First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
My personal scorecard is now 1 PC hardware fix (circa 1982), 1 open source fix (at age 82), and 2 zero day bugs in a major OS.
@byron @andydowns I have seen some mentions of inside the pipe. Some are straight down the middle, some drill holes and weave the wire in and out. As a former electrician, I can see no benefit to not just winding around the outside. Down the middle will do almost no good, and the in and out weave is just too much work for no apparent benefit. I will add however, apply some tape to make sure the wire or much better braid like solder wick or more cost effective common braided cables that you remove the insulation from and partially unwind so it can be flattened. I would tape it maybe every 6". As far as winding around the pipe, a 12" pitch 'feels' about right. If at the end of a run you have flexible plastic hose, the flex part is often steel so make sure the pipe ground wire connects to that and then to ground. SOME plastic flex pipe use plastic for the helix, do NOT use that!!!!! I see you have some metal flex hose in some cases, that is excellent, just connect the plastic pipe ground braid to it and then to ground. Try to avoid putting screws through either the plastic or metal or flex as they collect debris, use cable clamps instead.
I never did this as I went with an Oneida system and used the heavy gauge large radius pipe after I saw what happened to my brothers shop. Remember things like fine saw dust, flour, other fines can build up static charges from rubbing up against other fine particles. At some point it will discharge, 99%+ with no damage BUT eventually you may experience the 1% so give the excess charge an easy path to ground.
@zander I think I will look into this a little further with my engineer friend. This area was his living for many years, so I’m sure he will have an opinion. But I’ll shelve it for now so as not to detract for the current project.
Well, that could’ve gone better 😬
This last problem can be handled by using AccelStepper (Arduino Library) to accelerate instead of simply trying to drive it instantly to some set speed. If this is your problem, you might find that if you try different speeds, you'll reach a threshold that starts skipping steps. Also as @davee suggested, using micro stepping also helps.
I was aware of this library but hadn't explored further. I'll take a look and try it out.
By definition, voltage is the potential to supply current. Higher voltage has the ability to supply more current, faster... especially in a PWM controlled way which is what the A4988 is doing.
That short definition of voltage and current was surprising useful. I do not have an electronics background and it hit the spot with improving my very basic understanding. 👍
Stationary Noise
Yes, the full current setting is constantly being applied even with the motor stopped. In fact from my tests, I found that the motor will be drawing more current when stopped than when at full speed (even multi-thousand rpms). In your project, you should look into controlling the Enable pin and turning off the motor when not opening/closing a gate. If you run it anywhere near max A4988 current, you will find it gets very hot besides wasting a lot of electricity.
🙄😊 Such an obvious thing to do and yet didn't occur to me. Thanks for the suggestion, I will definitely implement it.
The guillotine design gates I have are the same as those shown in the reply from @zander.
Well, that could’ve gone better 😬