I’m not getting enough current into my stepper motors at 32v (during faster 1000step/s movement), so I’m going to try replacing the a4988 with DVR8825, the sweet new purple boards that Pololu made, and running at 40V.
I want to better understand the differences with the new boards, however.
As it stands, I have made a little carrier board for the A4988. This board connects SLP and RST. It also daisy-chains all of the DIR pins on four motors, and the Vmot&MotGround. Each board has a 100uF 63v Electroltyic at the A4988 driver (and all the boards are daisy chained, so across 1 meter of physical separation there are 400uF of capacitor). I plan on finding some TVS zener diodes to put on my quality lambda switching supply to further reduce the danger of transients above 45v, since I’m going to be running at 40V which is fairly close to 45v.
I understand that right now it’s ok that my SLP and RST are chained together, although because SLP is no longer kept high, this part of my board no longer serves its original purpose. However, I need to get SLP to be HIGH. Is there any place that I can tie the SLP pin to? In my current application, it’s ok for the internal translator to miss a few steps, because I set my number of steps above what I need, as I have hall sensors for my two end stops (the application is functioning as a very compact linear actuator.)
When I say I “set my number of steps above what I need” I mean that I am using a library that first asks you to set the number of steps you want to go, and then you call very frequently the “is it time to step? if so, step.” function.
I was thinking that maybe I could tie the SLP (and, in turn, RST) to my enable pin. Because that’s the only pin that I have a logic voltage that I control at, as unfortunately I only have ground, enable, the step pins, and the shared direction pin, going back to my MCU. I just want to make sure that it’s OK to be doing that.
I’ve never used a TVS diode before, so I just spent two hours reading about them and trying to select one. It turns out that they’re not available in tight enough operation for my desired use. They have “breakdown voltage” which I might select around 41v, and a clamping voltage which represents the max transient voltage that they will allow, which is much higher, some 50v+, and is above the 45v of the DVR8825.
I might either hope for the best, add a resistor in series with the Vmot, or add another 100uF cap at each board. But this is merely a sidenote to my main question, and I understand this might not be the best place to ask the sidenote-question.
With CMOS logic, you can typically tie a single output to 5-10 input pins without trouble. If they are slow switching signals, often more. With old TTL logic, there was a limit to the amount of current an output could generate, and you could only get a fan-out of 3 or 4.
Another option would be to tie a resistor voltage divider to the pin between your 40V and your pin. Many CMOS chips (such as the AVR set of microcontrollers) will see any voltage above 1.2V as “1” and any voltage below 0.7V as “0” so you can divide your 40V 10:1 and still have some safety margin (and still work with 24V, too.)
Regarding TVS-es, they are good for static electricity (really high voltages) but as you find, they are not so great when you’re running really close to the limits of some part. You might want to change to using a separate motor controller chip, driving some high-voltage (60V or more) MOSFETs yourself.
Tying SLP and RST to enable won’t work because you need to hold enable low while holding SLP and RST high to get the driver to run. If you have a carrier board for the A4988, then your carrier is supplying logic voltage to the DRV8825 pin labeled FAULT. One option would be for you to short the FAULT pin to the SLP (and, in turn, RST) on the DRV8825.
Shit, I forgot the enable pin is inverted on the a4988 (inverted in the sense that I’m used to putting the enable pin “high” to start a driver, and not low.
However, I can’t do what you suggest, because my original board has three of the normal a4988 boards and one of the a4988 with voltage regulators. It’s the voltage regulator board that was supplying Vcc for all of the boards.
(if you’re curious how I’m going to fit the new board on the old carrier, I originally made holes so it can always fit either a voltage carrier a4988 or a non-voltage carrier. The voltage regulated a4988 board is .1" wider.)
Well, this is a bit worrisome. I’m not sure there will be any place I can connect it. It looks like based on the schematic diagram I might be able to connect in front of the Vsense 3.3Vout, but that sounds like a terrible idea with implications for the current sensing mechanism (alternatively, there’s a spot at the Av&BvVref location- equally if not more terrible of an idea). Still, I’m desperate.
Then maybe the next best approach would be what jwatte suggested: a pull-up to VIN. The SLP pin has a 1M internal pulldown, and the RST pin has a 100k internal pulldown, so if you have them connected together, that’s like a 90k internal pulldown. If you use a 1M external pull-up to 40V, you should get 3.3 V on those pins, which would be enough to take it out of sleep and reset modes.
I wanted to confirm that the 1megaOhm resistor between my 41v Vmot and the RST&SLP pins has worked very well.
I have been running with success for several hours over two days, and I’ll update if anything goes wrong in the next 100 hours of constant testing (obviously I won’t report problems that don’t relate to the 8825. I suspect I’ll have nothing to report that’s related to this thread.)