Oggi mi sono arrivati i driver nuovi, adesso funziona tutto, ho impostato la Vref a 0.65V per ottenere una corrente di 1.3A, ho provato i microstep e tutto funziona perfettamente, però ho modificato molto il codice, quindi lo riposto nel caso possa servire a qualcuno per provare il driver drv8825.
Questo è il nuovo programma di prova, fa due giri e poi torna indietro:
#define DIR 8
#define STEP 9
#define M0 10
#define M1 11
#define M2 12
#define HALF_STEP_PAUSE 10
#define STEP_PAUSE ( HALF_STEP_PAUSE * 2 )
#define PAUSE_FOR_RPM(x) ( 300000 / x )
int rpm = 200;
int dirLevel;
boolean forward = true;
int count = 0;
void setup ( ) {
pinMode ( DIR, OUTPUT );
pinMode ( STEP, OUTPUT );
pinMode ( M0, OUTPUT );
pinMode ( M1, OUTPUT );
pinMode ( M2, OUTPUT );
digitalWrite ( M0, LOW );
digitalWrite ( M1, LOW );
digitalWrite ( M2, LOW );
Serial.begin ( 9600 );
Serial.println ( "Test" );
}
void loop ( ) {
dirLevel = forward;
digitalWrite ( DIR, dirLevel );
digitalWrite ( STEP, LOW );
delayMicroseconds ( HALF_STEP_PAUSE );
digitalWrite ( STEP, HIGH );
delayMicroseconds ( HALF_STEP_PAUSE );
if ( forward == true ) {
count ++;
} else if ( forward == false ) {
count --;
}
if ( count > 400 ) {
forward = false;
} else if ( count < 0 ) {
forward = true;
}
delayMicroseconds ( PAUSE_FOR_RPM ( rpm ) - STEP_PAUSE );
}
Ciao a tutti, Andrea