Close

Ako vypnúť motory? Arduino MEGA + CNC shield + DRV8266

Úvodní stránka Fórum Hardware Arduino Ako vypnúť motory? Arduino MEGA + CNC shield + DRV8266

  • Toto téma obsahuje celkem 2 odpovědi. Do diskuze (1 diskutující) se naposledy zapojil uživatel Miroslava a poslední změna proběhla před 5 roky.
Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (celkem z 3)
  • Autor
    Příspěvky
  • #11323
    Miroslava
    Účastník

    Ahojte,

    používam Arduino MEGA spolu s CNC shieldom a DRV8266 ovládače pre motory NEMA 17. Používam tento kód:

    
    
    #define EN 8      /* Enable pin for all stepper outputs */
    
    #define X_DIR 5   /* Direction pin for X axis */
    #define X_STEP 2  /* Step pin for X axis */
    
    #define Y_DIR 6   /* Direction pin for Y axis */
    #define Y_STEP 3  /* Step pin for Y axis */
    
    #define A_DIR 13  /* Direction pin for Aux driver. Requires D13 and A-DIR pins to be shorted */
    #define A_STEP 12 /* Direction pin for Aux driver. Requires D12 and A-STEP pins to be shorted */
    
    #define X_ENDSTOP 9   /* X axis endstop input pin */
    #define Y_ENDSTOP 10  /* Y axis endstop input pin */
    #define Z_ENDSTOP 11  /* Z axis endstop input pin */
    #define ABORT A0  /* Abort input pin */
    #define HOLD A1   /* Hold input pin */
    #define RESUME A2 /* Resume input pin */
    
    boolean Direction = LOW; /* Rotational direction of stepper motors */
     
    void setup() {
    /* Initialize serial */
      Serial.begin(115200);
     
      /* Configure the steper drive pins as outputs */
      pinMode(EN, OUTPUT);
      pinMode(X_DIR, OUTPUT);
      pinMode(X_STEP, OUTPUT);
      pinMode(Y_DIR, OUTPUT);
      pinMode(Y_STEP, OUTPUT);
     
      /* Configure the control pins as inputs with pullups */
      pinMode(X_ENDSTOP, INPUT_PULLUP);
      pinMode(Y_ENDSTOP, INPUT_PULLUP);
    
      pinMode(ABORT, INPUT_PULLUP);
      pinMode(HOLD, INPUT_PULLUP);
      pinMode(RESUME, INPUT_PULLUP);
    
      /* Enable the X, Y, Z & Aux stepper outputs */
      digitalWrite(EN, LOW); //Low to enable
    
    }
    void loop() 
    {
    
        digitalWrite(X_DIR,down); 
        digitalWrite(X_STEP,LOW); 
        delayMicroseconds(500); 
        digitalWrite(X_STEP,HIGH); 
        delayMicroseconds(500);
    }
    
    

    Všetko funguje ako má. Avšak chcela by som aby keď sa motory posunu na miesto kam chcem aby sa vypli – teraz si držia svoju polohu a pri tom počuť nepríjemný pískací zvuk. Preto vidím riešenie vo vypnutí motorov a zase v zapnutí keď ich budem potrebovať. Vedel by mi niekto poradiť ako to spraviť? 🙂

    #11325
    Miroslava
    Účastník

    + sú to dva krokové motory NEMA17, napájam ich z 12V 1,5A adaptéra.. nikdy nebežia súčasne

    #11333
    Miroslava
    Účastník

    Ok vyriešila som to tak, že vždy keď nechcem používať motory použijem príkaz:
    digitalWrite(EN, HIGH); //Low to enable
    Vtedy sú motory voľné a opäť ak ich chcem používať stačí zmeniť pin EN na LOW 🙂

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (celkem z 3)
  • Pro reakci na toto téma se musíte přihlásit.