collegamento motore 23HS8610B

Ciao a tutti!

come da topic ho acquistato un motore passo passo,credo bipolare, come diceva l'inserzione.. con 6 fili, il driver per controllarlo è un Pololu A4988, quindi ho seguito http://www.jcecom.it/Pdf/SM264988.pdf per la connessione tra i due ove non contemplata l'opzione del motore BIpolare con 6 fili ma di motori UNIpolari con 6 fili, quindi ho seguito queste indicazioni:

  • collegare il terminale A all'uscita del driver contrassegnata con 1A
  • terminale C (sempre della stessa fase) all'uscita 1B
  • terminale B all'uscita 2A
  • terminale D all'uscita 2B.
  • lasciare scollegati i terminali A' e B'

attacco l'alimentazione e il motore parte a girare pur non avendo scritto alcuno sketch.. è corretto tutto ciò?

grazie :slight_smile:

Il circuito è corretto, imposta il segnale STEP come uscita e portala HIgh, dovrebbe fermarsi

La descrizione non coincide coll'immagine.
Prendendo come riferimento il disegno devono restare liberi i collegamneti centrali dei avvolgimenti ( 0 e 0') cavi YELlow e WHiTe
1A e 1B vanno attacati a A e A'
2A e 2B vanno attacati a B e B'

Se ti riferisci al documento linkato la Tua descrizione é giusta.

Dubito che il Driver (A4988) é adatto al motore. Il A4988 é un driver in corrente e percui ha bisogno che funzioni in corrente e percui funzionino i microstep che il motore abbi una tensione nominale bassa e l' alimentazione alta ( ca 4x la tensione nominale dal motore).

Che motore hai? Che tensione di alimentazione usi?

[EDIT]
aia, il modello era messo nel titolo

È da 8,6V e 1A e ha una bellissima asse di 1/8 inch.

Secondo me il driver non ti funzionerá in modo sodisfacente in modalitá microstep; Funzionerá in modo accetabile a full step.
[/EDIT]
Ciao Uwe

non c'è problema allora, mi serve in full step :slight_smile:

immagino mi serviranno solo i pin "step" e "direction" .. appena trovo il tempo piglio una mille fori e ci saldo sopra il driver e dei morsetti a vite collegati da piste di stagno cicciottelle così sono tranquillo per la corrente che deve passarci e faccio un test più serio!

a presto!

ecco fatto

adesso riesco a controllare il motore! :slight_smile: dopo un pò che ho collegato l’alimentatore del motore qualcosa ha fatto “puff” ma tutto continua a funzionare bene, è possibile che sia partito il condensatore che ho messo in parallelo all’alimentazione del motore come consiglia nello sheet del driver A4988?

come verifico che il condensatore funzioni? è possibile che io l’abbia danneggiato durante la saldatura delle piste? magari ho tirato troppo i piedini o che so io…?

grazie

dimenticavo, il condensatore è 47microfarad 12v..

sostituito il condensatore, tutto ok..!

#define stp 3 //pin 3 a step del driver a4988
#define dir 2 //pin 2 a direction del driver a4988
#define relepin1 8 // pin 8 al relè N.1 (orario)
#define relepin2 9 // pin 9 al relè N.2 (antiorario)
//int ms1 = 4; //microstep 1/8
//int ms2 = 5; //microstep 1/16
#define buttonstart 11 //tasto avvio tavolino
#define finecorsapianoaperto 10
int valbuttonstart = 0; //conservo lo stato del pin buttonstart
int vecchiovalbuttonstart = 0; //mi servirà per verificare lo stato precedente del pin buttonstart
int statobuttonstart = 0; //ricorda lo stato del relè

int valfinecorsapianoaperto = 0;
int vecchiovalfinecorsapianoaperto = 0;
int statofinecorsapianoaperto = 0;

void setup() {
  pinMode (stp, OUTPUT); 
  pinMode (dir, OUTPUT);
  pinMode (relepin1, OUTPUT);
  pinMode (relepin2, OUTPUT);
  pinMode (buttonstart, INPUT);
  pinMode (finecorsapianoaperto, INPUT);
  digitalWrite (relepin1, HIGH);
  digitalWrite (relepin2, HIGH);
  
}

void loop() {
  valbuttonstart = digitalRead(buttonstart); //leggo lo stato del buttonstart
    
  if ((valbuttonstart == HIGH) && (vecchiovalbuttonstart == LOW)) {
    statobuttonstart = 1 - statobuttonstart;
    delay(50);
  }
 
  vecchiovalbuttonstart = valbuttonstart;
  
  valfinecorsapianoaperto = digitalRead(finecorsapianoaperto); //leggo lo stato del finecorsa
  
  if ((valfinecorsapianoaperto == HIGH) && (vecchiovalfinecorsapianoaperto == LOW)) {
    statofinecorsapianoaperto = 1 - statofinecorsapianoaperto;
    delay(50);
  }
 
  vecchiovalfinecorsapianoaperto = valfinecorsapianoaperto;
  
  
  if (statobuttonstart == 1) {
    digitalWrite (dir, HIGH); //accende il motore (orario) quindi apre il piano
    digitalWrite (stp, HIGH); 
    delay(20);  //definisce la velocità
    digitalWrite (stp, LOW);
    delay(20);   
 }
  else {
    digitalWrite (stp, HIGH);
  }
  
  if (finecorsapianoaperto == 1) {
    digitalWrite (dir, LOW);
    digitalWrite (stp, HIGH);
    delay(10);
    digitalWrite (stp, LOW);
    delay(10);
    digitalWrite (relepin1, LOW); //accende il relè (contatti inversi) 
  }
  else {
   digitalWrite (relepin1, HIGH); //spegne il relè
  }
}

il "buttonstart" funziona perfettamente (sto utilizzando per le prove dei fine corsa da pcb)

il finecorsapiano invece non va:/ quando lo premo non succede quello che ho scritto nel codice, non capisco il perchè..

non sono un esperto programmatore ma sto provando ad ambientarmi.. =) help me :>

Hai messo una resistenza pullup?
Ciao Uwe

non si chiamava resistenza di pulldown? boh

comunque ho collegato i due finecorsa che vedi in foto esattamente alla stessa maniera, uno dei piedini del finecorsa è collegato al pin 10 (impostato come input), quindi ho inserito una resistenza tra GND e lo stesso piedino. L'altro piedino è collegato ai 5v che escono da arduino (tramite breadboard)..

ho alimentato arduino sia da usb che da alimentatore esterno e non funziona comunque, il finecorsa l'ho verificato scrivendo un altro sketch per accendere semplicemente il relè e funziona, quindi il problema sta nel programma :confused:

p.s. le resistenze sono da 10k..

Si chiamano Pulldown se la resistenza é collegata a massa e Pullup se colegata a +5V.
Sembrano collegati in modo corretto.
Ciao Uwe

grazie, mi sono documentato dopo il tuo commento sull’argomento pulldown/pullup… continuo a non capire perchè il mio codice non funzioni sul finecorsa :confused: mentre il mio “buttonstart” vada perfettamente…

come posso debuggare la situazione?

consigli? :slight_smile: