Arduino CNC Shield je rozšiřovací modul pro desky velikosti Arduino UNO. Tento Shield je primárně určen pro stavbu 3D tiskárny, CNC stroje a podobně. Obsahuje celkem 4 sloty pro drivery krokových motorů, svorky pro připojení externího zdroje napětí pro motory a vyvedenou pinovou lištu s doplňky jako jsou endstopy a podobně.
Co se týká externího napájecího napětí, tak to lze použít v rozsahu 12-36 Voltů, podle typu použitých motorů. Sloty pro drivery můžeme osadit jak typem A4988, tak DRV8825, jen je potřeba si zkontrolovat správné osazení dle naznačeného pinu EN na shieldu.

Arduino CNC Shield + driver A4988 + motor 28BYJ-48

Já jsem pro tento návod vyzkoušel CNC Shield společně s jedním driverem A4988 a jedním krokovým motorem 28BYJ-48. Jako první krok zapojíme CNC Shield do Arduino UNO desky a poté driver do Shieldu. Jak jsem zmínil v úvodu, zkontrolujte si, že zapojujete EN pin driveru (popisek na spodní straně) do EN pinu na Shieldu, viz obrázek. Druhý krok je nastavení nižší hodnoty ovládacího proudu do motoru, které se provádí nastavením trimru na driveru.

Arduino CNC Shield + driver A4988 + motor 28BYJ-48

Správné nastavení ovládacího proudu lze zkontrolovat tak, že zapojíme Arduino do počítače a připravíme si voltmetr. Tím následně změříme napětí mezi záporným pólem na vstupních svorkách a přímo krytem trimru. Výchozí hodnota je většinou okolo 0,5 Voltu, přičemž pro náš motor je doporučená hodnota mezi 0,1-0,15 Voltu. Zkuste tedy otočit trimrem o čtvrt otáčky proti směru hodinových ručiček a měli byste se dostat na zmíněných cca 0,1 Voltu.
Jako druhý krok je zapojení motoru. Jak si můžete všimnout na obrázku, tak motor má 5 drátů, zatímco na Shieldu jsou na konektoru pouze 4 vodiče. U motoru je nutné NEpřipojovat červený drát a prohodit žlutý a růžový drát jako na obrázku.
A jako poslední krok před nahráním programu připojte napětí z externího zdroje pro motor, v mém případě tedy 12 Voltů na modré svorky.
POZOR: Je nutné dodržet zmíněný postup ve správném pořadí. Pokud budete používat driver bez připojeného motoru, může dojít k jeho zničení. Z toho důvodu tedy připojte externí napětí až po zapojení motoru do driveru.

Ukázkový program obsahuje na svém začátku nastavení čísel propojovacích pinů pro jednotlivé osy.
Ve funkci setup provedeme jejich nastavení jako výstup a následně zapíšeme logickou nulu na pin Enable, díky čemu povolíme řízení pro všechny drivery.
Nekonečná smyčka loop poté ukazuje jednoduchou práci s osou X, kdy s připojeným motorem budeme otáčet nejdříve v jednom směru a po sekundové pauze druhém směru, vždy o půl otáčky. Pro pohyb je použita funkce pohybOsy, která uvnitř obsahuje zápis směru na daný pin společně s for smyčkou, která po zadaný počet kroků řídí motor.

// Arduino CNC Shield + Driver A4988
// + krokový motor 28BYJ-48
// navody.dratek.cz

// nastavení čísel projovacích pinů
#define ENABLE 8
#define X_STEP 2
#define Y_STEP 3
#define Z_STEP 4
#define X_DIR  5
#define Y_DIR  6
#define Z_DIR  7

void setup() {
  // nastavení směrů pro všechny piny
  pinMode(X_STEP, OUTPUT);
  pinMode(Y_STEP, OUTPUT);
  pinMode(Z_STEP, OUTPUT);
  pinMode(X_DIR,  OUTPUT);
  pinMode(Y_DIR,  OUTPUT);
  pinMode(Z_DIR,  OUTPUT);
  pinMode(ENABLE, OUTPUT);
  // povolení řízení pro všechny drivery
  digitalWrite(ENABLE, LOW);
}

void loop() {
  // posun osy X v jednom směru o půl otáčky
  // (2048 kroků na celou otáčku)
  pohybOsy(false, X_DIR, X_STEP, 1024);
  delay(1000);
  // posun osy X ve druhém směru o půl otáčky
  pohybOsy(true,  X_DIR, X_STEP, 1024);
  delay(1000);
}

void pohybOsy(boolean smer, byte dirPin, byte stepPin, int kroky) {
  // zápis směru na příslušný pin DIR
  digitalWrite (dirPin, smer);
  delay(50);
  // smyčka pro provedení předaného množství kroků
  for (int i = 0; i < kroky; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds (800);
    digitalWrite(stepPin, LOW);
    delayMicroseconds (800);
  }
}

Po nahrání uvedeného ukázkového kódu do Arduina s CNC Shieldem a připojeným motorem byste měli pozorovat pravidelné otáčení osičky motoru o jednu půlotáčku v jednom směru a následně druhém.

Arduino CNC Shield je šikovné rozšíření Arduino UNO desky pro stavby různých strojů, které pracují ve více osách s krokovými motory. Můžeme dle našich preferencí použít různé drivery motorů a také připojit ochranné prvky. Ukázkový program je velice jednoduchý a slouží hlavně pro první seznámení a otestování CNC shieldu.
Pokud byste se zajímali o pokročilejší práci s CNC Shieldem, můžete se podívat do projektu GRBL, který už obsahuje pokročilejší funkce. https://github.com/Protoneer/GRBL-Arduino-Library

Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1132-arduino-shield-pro-3d-tiskarny.html
https://dratek.cz/arduino/1133-motor-driver-a4988-pro-reprap-3d-tiskarny.html
https://dratek.cz/arduino/5041-krokovy-motor-28byj-48.html

FB tw

Další podobné články