DRV 8834  driver cannot run the stepper motor - Page 1
Forum section: electronics / general

author: Zainiii
author_rank: Contributor
timestamp: November 14, 2024, 03:39:10 am
content: I have a bipolar stepper motor that I want to run using the DRV8834 Dual-Bridge Stepper Motor Driver. The connection schematic is correct (I followed another post) and is attached in the picture.The resistance of both motor coils is 11Ω (measured with a multimeter). I supplied 10V DC to the Vm pin of the DRV8834 using a Keithley Triple Channel DC Power Supply (30V, 1.5A).When I upload the code below and run the motor, it only produces a low noise. The code is attached belowCode:#include "AccelStepper.h"#define dirPin 2#define stepPin 3#define motorInterfaceType 1// Create a new instance of the AccelStepper class:AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);void setup() {// Set the maximum speed in steps per second:stepper.setMaxSpeed(1000);}void loop() {// Set the speed in steps per second:stepper.setSpeed(400);// Step the motor with a constant speed as set by setSpeed():stepper.runSpeed();}The current drawn by the motor is 0.90A (10V / 11Ω), and I set the current limit of the driver to 0.45A using the formula:Current Limit= 𝑉ref × 2I connected a 100μF capacitor between the Vm+ pin and the Ground pin.The problem is that when I upload the code, the motor only generates noise and does not rotate. I am confused about why it’s not rotating and is only producing noise.The working operation of the motor, as provided by the company:Operating the Motor:The motor works by turning on these coils in a specific sequence.First, Coil A is turned on, which moves the motor a little bit.Then, Coil B is turned on, which moves the motor a bit more.By continuing to switch between these coils in a pattern, the motor rotates smoothly.Controlling the Speed (and Flow Rate):Faster Pulses = Faster Motor = Higher Flow Rate: If we send pulses quickly, the motor turns faster, which pumps the fluid faster.Slower Pulses = Slower Motor = Lower Flow Rate: If we send pulses more slowly, the motor turns slower, reducing the flow rate.The flow rate-related file is attached in the picture.Voltage Measurements:After uploading the code and during the noise/buzz generated by the motor, the DC voltage across Coil A shows:One wire: 1.9VThe second wire: 0.65VFor Coil B:One wire: 1.9VThe second wire: 0.67VCan someone help me sort out this issue, i failed to run the stepper motor?, the required pictures are attached below.Your assistance would be greatly appreciated.

author: RoGeorge
author_rank: Super Contributor
timestamp: November 14, 2024, 08:03:30 am
content: It can be many reasons.- Double check the wiring, and that the power supply can provide enough power to turn the motor.- If wiring and power is OK, maybe the software is asking to rotate too fast for the type of motor you have. Try running the motor at a lower speed at first, without any load attached to the motor.- Maybe the half current you set from the hardware driver is too little to move the motor at all. Set the current to the value specified in the motor's datasheet.If you have an oscilloscope or a logic analyzer, look at the digital outputs of the Arduino, to see if the waveform is indeed produced at the expected pins, if the pulses have the correct order in time, and if they have correct speed for your motor's capability.

author: Ian.M
author_rank: Super Contributor
timestamp: November 14, 2024, 08:21:54 am
content: Check the datasheet - you've got a suspiciously high number of DRV8834 control pins not connected. They have internal pulldowns, but is that an appropriate state for them?

author: pcprogrammer
author_rank: Super Contributor
timestamp: November 14, 2024, 10:45:10 am
content: Maybe one of the windings is connected in reverse. This can cause the noise in the motor while it is not rotating.Or indeed, like RoGeorge mentioned, the current limit is set to low and the output is cutoff to soon to actually rotate the motor shaft.