I am using the UIM24302B stepper driver shown in the attached PDF. It shows that Enable, Run/Stop, H/L speed, and direction are all internally pulled up.
I want to run this guy off arduino so I can automate control with my system. My assumption is I can hook up all those commands to digital outs. A “High” will leave it pulled up, and a “Low” will bring it down.
Can someone please confirm this and that I won’t damage the Arduino by doing so? I’m just wanting to check before I cause damage to the driver / arduino.
I appreciate learning from you guys!
UI Stepper Driver Assy.pdf (512 KB)
That should be fine. The internal pullups are so that the driver is in a known state without connections.
That said, you DO need to decide what initial states (high or low) you want each driver pin to be at at your startup. In your Setup() you might set each pins level and THEN pinMode them as outputs.
Thanks TerryKing! Do you think I need any kind of resistor in there to protect the Arduino, or wiring straight to the driver should be fine?
Additional googling seems to indicate that the control voltage is 0-5V so your suggestion sounds like it should work.
Do you have a multimeter? I would physically measure the voltage when it is open and the current when it is grounded. The second measurement in particular will tell you for certain whether the Arduino can sink enough current when you want to turn the inputs on or whether you need additional resistance (this is pretty unlikely).
wiring straight to the driver should be fine
None of the information sheets on this controller indicate what the resistor value is that does the pullup. I would use a 220 Ohm resistor between the Arduino pin and the input to the driver to protect the Arduino from excessive current draw when the pin is pulled low.
As long as your application only requires continuous rotation with the ability to stop, start, & control speed and direction, this should work for you. If you require precise shaft positioning with individual step control, this will not work since it has no step input.
Okay.. So the setup works great! I have a new question, though.
Is there a simple way to pick off speed information from the controller? Off of one of the channel signals going to the motor? I'm curious if anyone has done something like this and would have some sample code / wiring they might be willing to share.
Is there a simple way to pick off speed information from the controller?
I’m not sure what you mean.
The speed of a stepper motor is determined by the interval between the step pulses you send to it so you should already have all the data without needing to get any data from the driver.
Stepper Motor Basics
Simple Stepper Code
If I read the rather sparse information sheets on this particular controller, it has no step input, just direction, start/stop, high or low speed, and enable/disable. Apparently it is intended to be used to motorize a bipolar stepper. The step command is generated internally from a user supplied analog signal 0 - 5 Volts either from a potentiometer or a DAC output from an MCU. The literature also indicates that the controller runs in a fixed 1/16 microstep mode, so I'm not sure there would be a "simple" way to determine the step rate of the motor by looking at the A-B outputs.
If I read the rather sparse information sheets on this particular controller, it has no step input,
Yes. I missed that.
I wonder if one of the motor connections was connected to an Arduino interrupt pin (probably through an opto-isolator to protect the Arduino) maybe the Arduino could detect the interval between pulses to determine the current speed.
The other, and more usual way would be to put some sort of rotary encoder on the motor shaft.