Why doesn't the DRV8825 produce an output voltage?

General discussion topics
Post Reply
Afarun
Posts: 1
Joined: Fri Dec 08, 2017 8:19 am

Why doesn't the DRV8825 produce an output voltage?

Post by Afarun » Fri Dec 08, 2017 8:46 am

I am working on a stepper motor project with a custom made PCB where I need to rotate two stepper motor simultaneously , I am using two DRV8825(http://www.kynix.com/Parts/3587352/DRV8825EVM.html) and a 8 channel relay , where 4 relays are connected to one stepper motor and remaing four are connected to another one .

The stepper motor rotate during NC state ( i.e when the relays are activated ) . The problem I am facing is that one of the motor on J9 connector doesn't step , it doesn't even vibrate when the relays are activated. I am not facing this issue which the motor when connected to J10 connector .

DRV8825 is in working condition since , I have tested both of them , motor runs when i place it on J10 Connector but not on J9 connector.

I have attached the schematic . J-10 and J-9 connectors are where stepper motors are connected
Image

I am using NEMA 17 , 200 steps stepper motors , and the DRV8825 is in 1/32 microstepping mode

I am using 12 V , 12.5 A power supply . This board is used for switching the controls from my 3d printer board to my custom pcb board , both the boards use two common stepper motors .

The system works only if the motors are connected to the connector, after power supply is switched on .

Why isn't the DRV8825 producing an output voltage?

Code: Select all

#include <AccelStepper.h>

AccelStepper stepper1(1, 9, 8);

AccelStepper stepper(1, 7, 6);

const int stepPin1 = 9; 
const int dirPin1 = 8; 

const int stepPin = 7; 
const int dirPin = 6 ; 

const int Motor1 = A0; 
const int Motor2 = A1; 
const int Motor3= A2; 
const int Motor4 = A3; 

const int Motor5 = A4; 
const int Motor6 = A5; 
const int Motor7= 3; 
const int Motor8 = 2;





 void setup() {





 pinMode(dirPin1, OUTPUT);
 pinMode(stepPin1, OUTPUT);
 pinMode(dirPin, OUTPUT);
 pinMode(stepPin, OUTPUT);
 pinMode(Motor1,OUTPUT);
 pinMode(Motor2,OUTPUT);
 pinMode(Motor3,OUTPUT); 

 pinMode(Motor4, OUTPUT);



 pinMode(Motor5,OUTPUT);
 pinMode(Motor6,OUTPUT);
 pinMode(Motor7,OUTPUT); 

 pinMode(Motor8, OUTPUT);



  stepper1.setMaxSpeed(500);

  stepper1.setSpeed(500);  

  stepper.setMaxSpeed(500);

  stepper.setSpeed(500); 

 }



void loop()
{   

 digitalWrite(Motor1, HIGH);

 digitalWrite(Motor2, HIGH);

 digitalWrite(Motor3, HIGH);

 digitalWrite(Motor4, HIGH);

 digitalWrite(Motor5, HIGH);

 digitalWrite(Motor6, HIGH);

 digitalWrite(Motor7, HIGH);

 digitalWrite(Motor8, HIGH);


 stepper1.runSpeed();

 stepper.runSpeed();

 }

User avatar
ednisley
Posts: 1016
Joined: Fri Apr 11, 2014 5:34 pm
Location: Halfway up the Hudson
Contact:

Re: Why doesn't the DRV8825 produce an output voltage?

Post by ednisley » Fri Dec 08, 2017 5:26 pm

Afarun wrote:both the boards use two common stepper motors
Disconnecting stepper motors with their power turned on will destroy the drivers.

You must turn off the motor power supply before disconnecting the motors, then turn it on after reconnecting them.

Because the DRV8825 chips derive logic power from the motor supply, turning it off will also turn off the drivers.

If you've been switching the motors with the motor power supply turned on, then the drivers have most likely entered shutdown. If you do that often enough, they'll most likely die.

From the datasheet:

Overcurrent Protection (OCP)
An analog current limit circuit on each FET limits the current through the FET by removing the gate drive. If this analog current limit persists for longer than the OCP time, all FETs in the H-bridge will be disabled and the nFAULT pin will be driven low. The device will remain disabled until either nRESET pin is applied, or VM is removed and re-applied.

Overcurrent conditions on both high and low side devices; i.e., a short to ground, supply, or across the motor winding will all result in an overcurrent shutdown. Note that overcurrent protection does not use the current sense circuitry used for PWM current control, and is independent of the I SENSE resistor value or VREF voltage.

----

FWIW, the DRV8825 3.3 V power output should have an output cap: "Bypass to GND with a 0.47-μF 6.3-V ceramic capacitor." With that done, use it to set the Mx and control inputs, rather than run them from a separate +5 V supply.

Edit to add:

You should let the Arduino control the DRV8825 -RESET inputs, so it can shut off the motor current before you turn off the motor power supply. If it could also see their -FAULT outputs, then it would know when the drivers have gone into protective shutdown.

If a motor on J9 isn't turning, then you've already killed U3.

Post Reply