Ви не увійшли.
Сторінки 1
Привіт, вирішив написати код для управління кроковим двигуном 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); // Пауза перед новим циклом
}
Остання редакція Xao_Asakura (2024-10-20 17:36:16)
Неактивний
1)на малюнку Uno а не esp8266
2)gpio10 у esp8266 не доступний для використання
Як уже вказали вище, у вас щось наплутано з пінами. Або маркування пінів не відповідає дійсності, або скетч компілюється не для тієї плати.
Найперше, що потрібно перевіряти - чи є потрібний сигнал на тому піні, на якому його очікуєте. Якщо нема осцилографа чи хоча б тестера, то можна перевірити за допомогою світлодіода з резистором.
Неактивний
Я змінив DIR_PIN на 5, але проблема все таже
на 5 чи на D5? Як кажуть у нас - це дві великі різниці.
Я змінив DIR_PIN на 5, але проблема все таже
на 5 чи на D5? Як кажуть у нас - це дві великі різниці.
Да проблема була в цьому стояло 5 а мало бути D5. Дякую
Неактивний
Сторінки 1