#1 Re: Програмування Arduino » Проблеми з платою esp8266 » 2024-10-21 15:50:21

Я прикладав демонтративне фото, переробив для своєї плати:
https://ibb.co/VNP10sc
Я змінив DIR_PIN на 5, але проблема все таже, навіть коли виймаю провод з DIR pin,кроковий двигун ніяк не реагує, все так же крутиться тільки в одну сторону

#2 Re: Програмування Arduino » Проблеми з платою esp8266 » 2024-10-21 15:48:10

Я прикладав демонтративне фото, переробив для своєї плати:
https://ibb.co/VNP10sc
Я змінив DIR_PIN на 5, але проблема все таже, навіть коли виймаю провод з DIR pin,кроковий двигун ніяк не реагує, все так же крутиться тільки в одну сторону

#3 Програмування Arduino » Проблеми з платою esp8266 » 2024-10-20 17:34:45

Xao_Asakura
відповідей: 5

Привіт, вирішив написати код для управління кроковим двигуном nema23 на драйвері TB6600 для плати esp8266 Wemos D1 R1.
При написанні кода зіткнувся з проблемою в підключені пінів, чомусь двигун рухаєтся тільки в одному напряму, хотя код написаний для обох напрямів, здається проблема в підключені DIR піна.
Підключення пінів на фото
https://ibb.co/9qkj8fB

// Піни керування кроковим двигуном
#define STEP_PIN         4   // GPIO4
#define DIR_PIN          10  // GPIO5

// Налаштування часу
#define move_forward_time 3000    // час руху вперед у мс
#define move_back_time 3000       // час руху назад у мс
#define pause_time 4000           // час паузи у мс
#define frequency 2250            // час між імпульсами у мкс

// Таймер для millis()
uint32_t timer = 0;

void setup() {
  pinMode(STEP_PIN, OUTPUT);       // Налаштовуємо піни керування
  pinMode(DIR_PIN, OUTPUT);
  Serial.begin(115200);            // Для налагодження через Serial Monitor
}

void loop() {
  // Напрямок вперед
  Serial.println("Напрямок: Вперед");
  digitalWrite(DIR_PIN, HIGH);      // Встановлюємо напрямок обертання вперед
  delay(100);                       // Невелика затримка для стабілізації

  timer = millis();                 // Запускаємо таймер
  // Обертаємо двигун move_forward_time мс
  do {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(frequency);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(frequency);
  } while (millis() - timer < move_forward_time);

  delay(pause_time);                // Пауза pause_time мс

  // Напрямок назад
  Serial.println("Напрямок: Назад");
  digitalWrite(DIR_PIN, LOW);       // Змінюємо напрямок обертання
  delay(100);                       // Невелика затримка для стабілізації

  timer = millis();                 // Знову запускаємо таймер
  // Обертаємо двигун move_back_time мс
  do {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(frequency);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(frequency);
  } while (millis() - timer < move_back_time);

  delay(pause_time);                // Пауза перед новим циклом
}

Підвал форуму