Shield Arduino pentru motoare stepper

39,00 Lei
Stoc: 4
In stoc

Durata de livrare: 1 zi

Limita stoc
- +
Adauga in cos
Cod Produs: SHL-75 Ai nevoie de ajutor? 0731 007 832
Adauga la Wishlist Cere informatii
  • Descriere
  • Review-uri (8)

Shield-ul pentru motoare stepper permite controlul a 3 motoare stepper folosind Arduino. Functioneaza impreuna cu Arduino UNO sau Arduino Mega.
 

Shield este special gandit pentru a permite functionarea a 3 drivere Black Edition (sau altele compatibile la pini), ceea ce il face ideal pentru CNC-uri sau alte masini similare.
 

Shield-ul contine condensatorii de protectie pentru drivere, precum si jumperi pentru microstepping (inclusi pe PCB, conectare cu fludor). Sunt conectate din fabrica in regim de microstepping 1:16 (motoarele se misca cel mai lin). 
 

Shield-ul se infige direct in placa Arduino. Shield-ul nu are componentele lipite (necesita lipire). 
Necesita un set de conectori: 
https://www.robofun.ro/conectori/kit-conectori-arduino-r3.html.

 

Shield-ul si implicit motoarele stepper se vor alimenta prin pinii cu surub marcati cu GND si VMOT. Tensiunea de alimentare nominala este de 12 V. Firul negativ de la sursa de alimentare se conecteaza la pinul GND iar firul pozitiv se conecteaza la pinul VMOT.

 

 

Shield-ul contine doar componentele de mai jos. Nu contine driver-ele, nu contine placa Arduino UNO V3 si nu contine pinii pentru conectare cu placa Arduino (trebuie sa le adaugi separat in comanda daca ai nevoie de ele). 

Daca alegi varianta complet asamblata, asigura-te ca adaugi in comanda si  pinii pentru conectare cu placa Arduino .
Pinul VIN (alimentarea placii Arduino) este legat prin shield la pinul VMOT (Arduino se alimenteaza prin shield, din VMOT). Nu folositi mai mult de 12 V pentru alimentarea motoarelor, si NU folositi o sursa independenta pentru alimentarea Arduino (daca aceasta sursa are alt voltaj decat VMOT, atunci diferenta se va descarca pe regulatorul placii Arduino -> va iesi fum). 
Orice conectare a hardware-ului (motoare, drivere) se face DOAR cu sistemul scos de sub tensiune complet. Altfel este probabil ca driver-ele sa se arda.
In timpul reglarii curentului, atentie sa nu faci scurt pe alte elemente din driver.

 

- o placa PCB (culoare albastra)

- 3 condensatoare electrolitice de 100 uF / 35V pentru protectia driverelor

- un conector 2 pini cu surub

- o bareta cu 40 de pini drepti

- 6 barete cu 8 pini mama


Pinii pentru controlul motoarelor sunt ca mai jos :
 

ENABLE MOTOR 1 - pin digital 8 (active LOW)

DIR MOTOR 1 - pin digital 2

STEP MOTOR 1 - pin digital 3

ENABLE MOTOR 2 - pin digital 9 (active LOW)

DIR MOTOR 2 - pin digital 4

STEP MOTOR 2 - pin digital 5

ENABLE MOTOR 3 - pin digital 10 (active LOW)

DIR MOTOR 3 - pin digital 7

STEP MOTOR 3 - pin digital 6


Exista doua moduri de a scrie codul pentru a controla cele 3 motoare. Unul dintre acest moduri este a scrie integral totul in programul tau (exact ca mai jos), iar cel de-al doilea este de a folosi libraria AccelStepper. Utilizarea librariei ofera o multitudine de optiuni (cum ar fi miscare accelerata, printre altele), si reprezinta modalitatea recomandata.

 

Exemplu cod sursa 
 

#define EN_PIN1 8
#define DIR_PIN1 2
#define STEP_PIN1 3

#define EN_PIN2 9
#define DIR_PIN2 4
#define STEP_PIN2 5

#define EN_PIN3 10
#define DIR_PIN3 7
#define STEP_PIN3 6

#define MOTOR1 1
#define MOTOR2 2
#define MOTOR3 3


void setup() {
  pinMode(EN_PIN1, OUTPUT);
  pinMode(DIR_PIN1, OUTPUT);
  pinMode(STEP_PIN1, OUTPUT);

  pinMode(EN_PIN2, OUTPUT);
  pinMode(DIR_PIN2, OUTPUT);
  pinMode(STEP_PIN2, OUTPUT);

  pinMode(EN_PIN3, OUTPUT);
  pinMode(DIR_PIN3, OUTPUT);
  pinMode(STEP_PIN3, OUTPUT);
  
  turnMotorON(MOTOR1);
  turnMotorON(MOTOR2);
  turnMotorON(MOTOR3);
    
}

void loop() {
  rotateDeg(-360, .5, MOTOR1);
  rotateDeg(-360, .5, MOTOR2);
  rotateDeg(-360, .5, MOTOR3);
}


void turnMotorON(int motor) {
  int whichMotor = 0;

  if (motor == MOTOR1) {
    whichMotor = EN_PIN1;
  } else if (motor == MOTOR2) {
    whichMotor = EN_PIN2;
  } else if (motor == MOTOR3) {
    whichMotor = EN_PIN3;
  }
  digitalWrite(whichMotor, LOW);
}

void turnMotorOFF(int motor) {
  int whichMotor = 0;

  if (motor == MOTOR1) {
    whichMotor = EN_PIN1;
  } else if (motor == MOTOR2) {
    whichMotor = EN_PIN2;
  } else if (motor == MOTOR3) {
    whichMotor = EN_PIN3;
  }
  digitalWrite(whichMotor, HIGH);
}




void rotateDeg(float deg, float speed, int motor) {
  int stepPin = 0;
  int dirPin = 0;

  if (motor == MOTOR1) {
    stepPin = STEP_PIN1;
    dirPin =  DIR_PIN1;
  } else if (motor == MOTOR2) {
    stepPin = STEP_PIN2;
    dirPin =  DIR_PIN2;
  } else if (motor == MOTOR3) {
    stepPin = STEP_PIN3;
    dirPin =  DIR_PIN3;
  }


  int dir = (deg > 0) ? HIGH : LOW;
  digitalWrite(dirPin, dir);

  int steps = abs(deg) * (1 / 0.225);
  float usDelay = (1 / speed) * 70;

  for (int i = 0; i < steps; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(usDelay);

    digitalWrite(stepPin, LOW);
    delayMicroseconds(usDelay);
  }
}

 

Microstepping / full step
 

Cele mai multe drivere pentru motoare pas cu suporta suporta un mod numit "microstepping", care mod de functionare permite o miscare foarte lina a motorului. Acest shield este deja configurat pentru modul de lucru "microstepping 1:16", insa permite trecerea in full step prin deconectarea jumperilor cu fludor de pe PCB. Recomandarea noastra este sa pastrati shield-ul in microstepping, motoarele vor functiona cel mai lin. Mai multe detalii aici - http://www.geckodrive.com/microstep-full-step-torque

 

Atentie la conectarea driver-elor ! Conectarea intr-o alta pozitie decat cea de mai jos (adica rotite cu 180) va duce la arderea driver-elor.

 

Montarea condensatoarelor de protectie
 

Cele trei condensatoare de protectie sunt electrolitice, ceea ce inseamna ca este important cum ii lipesti pe placa.  Urmareste poza de mai jos cu atentie (zona bleu, minus spre pini cu surub) si nu INVERS !

 

Limitarea curentului prin driver
 

Limitarea curentului prin driver este un pas foarte important. Acest lucru se face cu o surubelnita cu varf fin, invartind de potentiometrele driver-elor. Mai jos este un link catre youtube unde poti vedea efectiv acest proces. O modalitate simpla de a face acest lucru este sa urci codul sursa pe Arduino, sa conectezi motorul, si in timp ce acesta se invarte sa micsorezi curentul din driver (prin rotirea potentiometrului in sens invers acelor de ceasornic) pana cand motorul nu mai are suficienta forta sa se invarta (prinzi axul cu mana si il opresti). Apoi rotesti potentiometrul in sensul acelor de ceasornic, foarte incet, pana cand cuplul generat de motor este suficient. In final, trebuie sa verifici ca motorul nu se incinge prea tare (ideal ar fi sa ramana rece sau un pic caldut), iar driver-ele nu se incing foarte tare (pot fi calde / fierbinti, dar trebuie sa poti tine degetul pe ele). Daca frig la deget, atunci curentul este prea mare.
 

Este important sa nu atingi cu varful surubelnitei alte piese sau contacte de pe driver, in afara potentiometrului, probabil ca vei distruge driver-ul. 
 

https://www.youtube.com/results?search_query=adjust+current+stepper+pololu+driver+

 

 

 

 

Inca un lucru la care trebuie sa fii atent sunt pinii ICSP ai placii Arduino, care sunt exact sub pinii de la ultimul driver. Nu infige prea tare shield-ul in Arduino, risti sa ai un contact nedorit. Alternativ, poti pune o bucata de izolatie in aceasta zona.

 

Schema electrica a placii poate fi descarcata aici - shield-stepper-schematic.png

 

 

Viorel [ROBOFUN],

@Vasile Guta-Ciucur Salut, Am adaugat in pagina (la final de tot) un link catre schema electrica a placii. V-am dat acum un email, orice sugestie de imbunatatire aveti pentru acest shield, o voi transmite personal producatorilor placii. Viorel

A fost util acest review?

Vasile Guta-Ciucur,

Oameni buni, unde gasesc schema electrica a shield-ului? Intentionez sa-l modific pentru GRBL. A propos, era cat pe ce sa-l conectez la sursa mea de 36 volti... Proasta alegere, produsul asta...

A fost util acest review?

Mircea Vrednicu,

@ Victor Hantelmann pune te rog undeva mai multe informatii despre modificarile aduse placii pentru GRBL @Robofun, kitul de conectori propus, cumparat si primit contine 2 seturi cu 8 si 2 seturi cu 6 conectori, in prezentarea shield-ului aveti 2 conectori cu 6, unul cu 8 si unul cu 10 pini. Pana la urma varianta corecta este care???

A fost util acest review?

Viorel [ROBOFUN],

@Liviu Va asigur ca nu este un produs chinezesc, ci este un produs fabricat in EU :) Referitor la observatiile lui Victor, sunt foarte pertinente, si le-am transmis catre producatorii placii. Va mai dura insa ceva pana cand va fi gata o noua revizie compatibila GRBL... Viorel

A fost util acest review?

Liviu,

@Victor Hantelmann Nu s-ar putea face conexiunile de care spuneti pe spatele placii shield ? Este un produs chinezesc &quot;clasic&quot;, executat relativ bine dar negandit si netestat indeajuns de mult sau de catre specialisti adevarati ! Ar trebui vorbit cu chinezii ... daca-i gaseste cineva ?!

A fost util acest review?

Viorel [ROBOFUN],

@Marius Cred ca da, nu vad nici un motiv sa nu .

A fost util acest review?

Marius,

Salut, pot folosi acest shield si pe intel galileo? Multumesc

A fost util acest review?

Victor Hantelmann,

Nu este compatibila GRBL ... A trebuit sa tai pinul de enable si sa fac legaturi pe deasupra placilor de driver pentru a avea un singur enable pe Arduino digital pin 8 ... Deasemenea este necesara modificarea configuratiei pinilor STEP/DIR in cpu_map_atmega328p.h In final este posibil dar este chinuitor si minutios in mod nejustificat. Daca este un produs al ROBOFUN ar trebui sa reproiecteze placa astfel incat sa poata sa fie utilizat GRBL in mod default. Aceasta este singura modalitate pentru a creste vanzarile in zona DIY, altfel librariile propuse sunt inutile deoarece nu trateaza codul G in conformitate cu standardele RS274D sau RS274X in cerinta Sinumerik 840D macar. Este mare pacat deoarece aceasta placa ar putea fi foarte utila pentru pasionatii de CNC si a face un nou layout nu este asa de greu.

A fost util acest review?

Scrie un review


Suport clienti Magazinul este deschis luni - vineri, intre orele 11:00 si 17:00.

0731 007 832 contact@robofun.ro
close

Comparare

Trebuie sa mai adaugi cel putin un produs pentru a compara produse.

close

A fost adaugat in wishlist!

A fost sters din wishlist!