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 control ul 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
Related products
Conectare
Driver
Mecanice
Mecanice
Encoder