motore step e arduino

Buongiorno a tutti ragazzi,

ho acquistato questa board per controllare il motore: http://www.waveshare.com/motor-control-board.htm

che è un 28BYJ-48 5V

sto impazzendo perché a parte M1A e M1B che ho collegato al pin digitale IN/OUT di arduino 8 e 9 e GND al GND di arduino non so dove collegare il VCC e l'M1.

Inoltre il mio motore ha 5 cavetti come si può vedere qui: https://learn.adafruit.com/adafruit-arduino-lesson-16-stepper-motors/breadboard-layout e non ho capito come collegarli. Ho cercato in rete e ci sono diversi esempi con il singolo chip ma sulla board nessuno e dato che sono alle prime armi sto avendo difficoltà.

Qualcuno può aiutarmi? Grazie

Premesso che quel Driver e quello stepper fanno a cazzotti... perchè lo Stepper è unipolare e il driver è per motori bipolari..

Prova a collegarlo così

e come codice usa Questo

ho seguito le tue indicazioni per i collegamenti ma non si muove nemmeno un mezzo giro :(

Per favore puoi indircarmi qualche board acquistare per questo motorino possibilmente presente nel catalogo di futurashop che è relativamente vicino da raggiungere fisicamente.

Grazie mille.

quella scheda non è buona per motori pp, intanto non hai un controllo sulla corrente e rischi di bruciare il motore prima ancora di provare ad usarlo, inoltre quel motore non lo puoi pilotare in modo bipolare in quanto il comune delle due fasi sono uniti insieme, per questo ha 5 fili e non 6, per usarlo come bipolare devi aprirlo e tagliare lo stampato dove unisce i due comuni delle due fasi, ma non è semplice aprirlo senza correre il rischio di romperlo.

Quel tipo di motore di solito viene pilotato con un ULN2003 come questo del link

ho seguito le tue indicazioni per i collegamenti ma non si muove nemmeno un mezzo giro

Non è possibile, o hai collegato male qualcosa o da monitor seriale non gli dici di quanto deve muoversi

Comunque volevo ringraziarti tantissimo per il tuo aiuto Brunello.

Riprovo a ricollegare il tutto e ti dico. Credo che l'unico problema sia forse dovuto al fatto che i colori del tuo schema relativamente al motorino non corrispondono perfettamente al mio motorino quindi forse ho commesso qualche errore.

Il mio motorino ha i seguenti colori:

blu rosa rosso arancio giallo

Quello che non ho collegato è il rosso centrale ma ho provato anche a collegare al suo posto quello giallo.

Altro dubbio è sulla board. I collegamenti li dovrei fare a fili scoperti che dovrei agganciarli alla board avvitando le viti. Dato che sto utilizzando i cavetti colorati di prototipizzazione con i piolini li ho inseriti nei buchini in alto accanto alla vite, forse li non avviene il contatto. Così li ho inseriti come fossero dei fili scoperti e avvitati ma niente.

Riprovo adesso.

nulla purtroppo non va :(

Rosa - Arancio = Motore1 Blu - Giallo = Motore2 Rosso = lasciare libero

Se il motore vibra, ma non si muove, invertire i pin 10 e 11 su Arduino Aprire il monior seriale e digitare quanti step deve fare ( 2048 = giro completo )

Allego foto dei collegamenti, purtroppo nessun segno di vita dal motore

IMG_0492.JPG

IMG_0493.JPG

IMG_0494.JPG

Mmm ... ma hai [u]verificato con un tester[/u] che tra il buco dove infili il pin del tuo cavetto e la vite del relativo morsetto ci sia veramente continuità ? ? ?

Guglielmo

gpb01: Mmm ... ma hai [u]verificato con un tester[/u] che tra il buco dove infili il pin del tuo cavetto e la vite del relativo morsetto ci sia veramente continuità ? ? ?

Guglielmo

perdonami, sono un super neofita, ma come faccio? Metto lo spinotto rosso sulla parte metellica come la vite e il nero? Va bene il settaggio del tester a 20V continua?

ho scoperto che

if (Serial.available())

non diventa mail true. questo è il codice che sto usando

#include <Stepper.h>
 
int in1Pin = 12;
int in2Pin = 11;
int in3Pin = 10;
int in4Pin = 9;
 
Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);  
 
void setup()
{
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
  pinMode(in3Pin, OUTPUT);
  pinMode(in4Pin, OUTPUT);
 
  // this line is for Leonardo's, it delays the serial interface
  // until the terminal window is opened
  while (!Serial);
  
  Serial.begin(9600);
  motor.setSpeed(20);
}
 
void loop()
{
  Serial.println(Serial.available());
  if (Serial.available())
  {
    int steps = Serial.parseInt()+1;
    Serial.println(steps);
    motor.step(steps);
  }
}

arduone: perdonami, sono un super neofita, ma come faccio? Metto lo spinotto rosso sulla parte metellica come la vite e il nero? Va bene il settaggio del tester a 20V continua?

Devi misurare la "continità" quindi ... [u]scolleghi il motore dal cavetto[/u] e lasci il cavetto infilato nel buco dove lo hai infilato, metti il tester su una portata Ohmica per misurare la "resistenza" e verifichi che tra il capo del filo lasciato libero e la vite la resistenza sia praticamente zero ... ovvero che quel buco ed il morsetto a vite siano la stessa cosa ...

Guglielmo

Brunello:
Rosa - Arancio = Motore1
Blu - Giallo = Motore2
Rosso = lasciare libero

Se il motore vibra, ma non si muove, invertire i pin 10 e 11 su Arduino
Aprire il monior seriale e digitare quanti step deve fare ( 2048 = giro completo )

Gentilissimo Brunello,

ho sostituito il codice che usavo con un altro e finlmente il motore ha dato segni di vita vibrando!!
Allora ho invertito i pin 10 e 11 su Arduino come hai scritto qui e ha funzionato!!!

Ecco il codice:

//declare variables for the motor pins
int motorPin1 = 12;    // Blue   - 28BYJ48 pin 1
int motorPin2 = 11;    // Pink   - 28BYJ48 pin 2
int motorPin3 = 10;    // Yellow - 28BYJ48 pin 3
int motorPin4 = 9;    // Orange - 28BYJ48 pin 4
                        // Red    - 28BYJ48 pin 5 (VCC)

int motorSpeed = 1200;  //variable to set stepper speed
int count = 0;          // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};

//////////////////////////////////////////////////////////////////////////////
void setup() {
  //declare the motor pins as outputs
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  Serial.begin(9600);
}

//////////////////////////////////////////////////////////////////////////////
void loop(){
  if(count < countsperrev )
    clockwise();
  else if (count == countsperrev * 2)
    count = 0;
  else
    anticlockwise();
  count++;
}

//////////////////////////////////////////////////////////////////////////////
//set pins to ULN2003 high in sequence from 1 to 4
//delay "motorSpeed" between each pin setting (to determine speed)
void anticlockwise()
{
  for(int i = 0; i < 8; i++)
  {
    setOutput(i);
    delayMicroseconds(motorSpeed);
  }
}

void clockwise()
{
  for(int i = 7; i >= 0; i--)
  {
    setOutput(i);
    delayMicroseconds(motorSpeed);
  }
}

void setOutput(int out)
{
  digitalWrite(motorPin1, bitRead(lookup[out], 0));
  digitalWrite(motorPin2, bitRead(lookup[out], 1));
  digitalWrite(motorPin3, bitRead(lookup[out], 2));
  digitalWrite(motorPin4, bitRead(lookup[out], 3));
}

Grazie infinie per il tuo aiuto, se passi dalle mie parti giuro che ti offro un bicchiere di vino.

Grazie