dodání 2 krokového pohonu do kódu

Odpovědět
david739
Příspěvky: 4
Registrován: 03 dub 2022, 08:47

dodání 2 krokového pohonu do kódu

Příspěvek od david739 »

Ahoj může mi prosím někdo pomoc tito dva kódy spojit zda je to možné s úpravou pro 2 pohon

Hardware
// Arduino CNC Shield + Driver A4988
// + krokový motor 28BYJ-48

muj kod

Kód: Vybrat vše

#include <Ticker.h> // Nástroje → Spravovat knihovny (zkratka Ctrl+Shift+I) → Vyhledat „SimpleTicker" (by „JSC electronics”), verze 2.0.0.

#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

#define T_ROTATION  60000 // ms, doba rotace v milisekundach

jsc::Ticker rotationTicker(T_ROTATION);

void pohybOsyCas(void);

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);

  pohybOsyCas();
}

void loop() {

}

void pohybOsyCas(void) {
  digitalWrite (X_DIR, HIGH);
  delay(50);
  while ( rotationTicker.elapsedTicks() == 0 ) {
    digitalWrite(X_STEP, HIGH);
    delayMicroseconds (4000);
    digitalWrite(X_STEP, LOW);
    delayMicroseconds (4000);
  }
}
#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);
  }
}
kod co bych chtěl zakomponovat tak aby fungoval 2 pohon

Kód: Vybrat vše

#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);
  }
}
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: dodání 2 krokového pohonu do kódu

Příspěvek od jrt »

Krokový motor 28BYJ-48 se nedá bez úpravy k driveru A4988 připojit.
jrt
Odpovědět