Drive Board (ULN2003A) per stepper

salve a tutti,
ho una domanda da porvi su uno scheda basata sul ULN2003A, e più precisamente questa:

ho collegato i pin IN1-4 della scheda driver ai pin IN8-11 di arduino e vcc/gnd del driver sempre ad arduino (quindi alimento tutto tramite usb).

Ora, Gli stati D1-D4 Sembrano funzionare a dovere, ma il motorino non si schioda... cosa ho sbagliato?

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;
 
void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}
 
void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

cosi a prima vista sembra tutto corretto.... ma non ci dici nulla su che motorino stai usando, come lo stai usando e come lo hai collegato!

Se nelle voci sopra ce solo il minimo errore non si muove!! :frowning:

cosi a occhio, sembra un unipolare almeno la sequanza di pilotaggio(poi il motore non so!), e li devi stare molto attento alla sequanza delle fasi (come son collegate)

scusami mi son dimenticato: 28byj-48 (5v) connesso al p3.

l'unica cosa che posso dirti, è di controllare che le fasi siano corrette, collegate correte al connettore. mai che il filo comune RED ad esempio vada su una fase anziche sull'alimentazione (alimentazione che fornisci esterna vero?)


Da questa foto sembra che la sequenza debba essere diversa da quella che usi tu.

codesto motorino ha una demoltiplica di 1:64

non e' che ti sembra che non giri perche' va' pianissimo ?

riduci il delay
int delayTime = 5 ;

caspita 1:64 vero... se gira lento e con pochi passi...manco te ne accorgi.. mi era sfuggito :smiley:

perche da programma gli dici di fare solo 4 passi.. ovvero nulla!!

Quel passo passo è molto economico. L’ho comprato dai cinesi.
Comunque nelle prove che avevo fatto avevo usato la sequenza:
1000, 1100, 0100, 0110, 0010, 0011, 0001, 1001
Non rammento perchè e dove avevo letto la dritta (mi sembra nel forum).
E come delayTime = 5, come dice @Brunello

nid69ita:
Quel passo passo è molto economico. L'ho comprato dai cinesi.
Comunque nelle prove che avevo fatto avevo usato la sequenza:
1000, 1100, 0100, 0110, 0010, 0011, 0001, 1001
Non rammento perchè e dove avevo letto la dritta (mi sembra nel forum).

è la sequenza tipica del mezzo passo....(half step sui manuali)
si può usare o no dipende un pò da cosa si deve fare :wink:

ecco mettendo a 5 ora gira... pensavo che almeno tremolasse un po', invece sembrava come spento :%

si è un motorino stra-economico, l'ho comprato per imparare e non ho intensione di farci nulla. :grin:

Ciao,
per fare delle prove puoi usare questo codice, io mi ci sono trovato bene :slight_smile:

#include   <Stepper.h>
 
Stepper myStepper(2048,8,10,9,11);
 
void setup() {
 // setSped =giri al minuto
  myStepper.setSpeed(5); // maggiore di 10 non gira
}
 
void loop() {
 // step() muove il motore di n passi (con n negativo il motore ruoterà in senso opposto)
 
    myStepper.step(5);
    analogWrite(8,0);
    analogWrite(9,0);
    analogWrite(10,0);
    analogWrite(11,0);
    
    myStepper.step(0);
  delay(1000);     // delay ritardo in millesimi di secondo