Плата расщирени для драйвера

Добрый день подскажите пожалуйста. у меня есть плата расширения для шагового двигателя на плате есть переключатель шагов приложил фото и отметил как ими можно упровлять электроно через UNO или ее выпаять и какойто компонент подключить мне нужно что бы я мог включать на шаг 1/16.

Тебе нужно включить программно или механически? Если механически то подвигай белые клювики в нужное положение.

Добрый вечер мне их нужно включать програмно может мне нужно их выпаять и какойто компонент поставить

Просто у меня не получается управлять двигателем у меня есть код для ардуино к нему подключены две кнопки одно отвечает за быстрые обороты двигателя а вторая за медленные как на демонстрационом столике. но при нажатии медленых оборотов двигатель врашаеться медлено но его тресет что я уже не перепробывал и даже с помошью ИИ непомогает а вот когда я преключаю эти тумблеры на шаги 1/16 тогда медленое врашение работает плавно а вот быстроее нет

Нужно входы MSn драйвера завести на ардуину и подавать на них микроконтроллером HI/LO , выставляя микрошаг.

можно не выпаивать. Отключить и к 3 ногам уны подпаять к тем концам которые к микросхеме идут. Но проще по уарт одним проводом если драйвер TMC2209 - и программно и всего 1 нога.

драйвер у меня А4988 как это на нем сделать поможете? если не сложно по подробней просто навичок и не могу понять

На сколько отличаются обороты медленно и быстро? И программу можно увидеть?

Первый же рисунок показывает как подключить.

// Пины управления шаговиком
#define STEP_PIN 2
#define DIR_PIN 3
#define ENABLE_PIN 4

// Пины кнопок
#define NORMAL_BUTTON 6
#define SLOW_BUTTON 7

// Параметры для нормального режима
#define MAX_FREQUENCY_NORMAL 320 // Минимальное время между импульсами в мксек (максимальная скорость), уменьшено на 10%
#define MIN_FREQUENCY_NORMAL 1200 // Максимальное время между импульсами в мксек (минимальная скорость)
#define RAMP_UP_STEPS_NORMAL 40 // Количество шагов для плавного набора скорости
#define STEP_SIZE_NORMAL 10 // Шаг изменения частоты для плавности

// Параметры для медленного режима
#define MAX_FREQUENCY_SLOW 1944 // Минимальное время между импульсами в мксек (максимальная скорость), уменьшено на 160%
#define MIN_FREQUENCY_SLOW 7776 // Максимальное время между импульсами в мксек (минимальная скорость)
#define RAMP_UP_STEPS_SLOW 80 // Количество шагов для плавного набора скорости
#define STEP_SIZE_SLOW 5 // Шаг изменения частоты для плавности

// Логические флаги для рабочего режима
bool normal_is_running = false; // Флаг включения двигателя в нормальном режиме
bool slow_is_running = false; // Флаг включения двигателя в медленном режиме
bool is_ramping_up_normal = true; // Флаг набора скорости для нормального режима
bool is_ramping_up_slow = true; // Флаг набора скорости для медленного режима

// Частоты импульсов
unsigned int current_frequency_normal = MIN_FREQUENCY_NORMAL;
unsigned int current_frequency_slow = MIN_FREQUENCY_SLOW;

void setup() {
pinMode(NORMAL_BUTTON, INPUT_PULLUP); // Подтягиваем основную кнопку к питанию
pinMode(SLOW_BUTTON, INPUT_PULLUP); // Подтягиваем кнопку медленного режима к питанию

pinMode(STEP_PIN , OUTPUT); // Настраиваем пины управления
pinMode(DIR_PIN , OUTPUT);
pinMode(ENABLE_PIN , OUTPUT);

digitalWrite(ENABLE_PIN , HIGH); // Выключаем мотор, чтобы не грелся
}

void loop() {
int normal_button_state = digitalRead(NORMAL_BUTTON); // Состояние нормальной кнопки
int slow_button_state = digitalRead(SLOW_BUTTON); // Состояние кнопки медленного режима

if (!normal_button_state) { // Если нажали на нормальную кнопку
normal_is_running = !normal_is_running; // Переключить состояние двигателя
delay(50); // Задержка для предотвращения дребезга контактов
}

if (!slow_button_state) { // Если нажали на кнопку медленного режима
slow_is_running = !slow_is_running; // Переключить состояние двигателя
delay(50); // Задержка для предотвращения дребезга контактов
}

if (normal_is_running) { // Если включена нормальная кнопка
digitalWrite(ENABLE_PIN , LOW); // Включить двигатель
digitalWrite(DIR_PIN , HIGH); // Задать направление вращения

if (is_ramping_up_normal && current_frequency_normal > MAX_FREQUENCY_NORMAL + STEP_SIZE_NORMAL) {
  // Набор скорости
  current_frequency_normal -= STEP_SIZE_NORMAL;
} else {
  // Достигли максимальной скорости
  is_ramping_up_normal = false;
}

// Выполнить шаг
digitalWrite(STEP_PIN    , HIGH);
delayMicroseconds(current_frequency_normal);
digitalWrite(STEP_PIN    , LOW);
delayMicroseconds(current_frequency_normal);

} else if (slow_is_running) { // Если включена кнопка медленного режима
digitalWrite(ENABLE_PIN , LOW); // Включить двигатель
digitalWrite(DIR_PIN , HIGH); // Задать направление вращения

if (is_ramping_up_slow && current_frequency_slow > MAX_FREQUENCY_SLOW + STEP_SIZE_SLOW) {
  // Набор скорости
  current_frequency_slow -= STEP_SIZE_SLOW;
} else {
  // Достигли максимальной скорости
  is_ramping_up_slow = false;
}

// Выполнить шаг
digitalWrite(STEP_PIN    , HIGH);
delayMicroseconds(current_frequency_slow);
digitalWrite(STEP_PIN    , LOW);
delayMicroseconds(current_frequency_slow);

} else {
digitalWrite(ENABLE_PIN , HIGH); // Выключить двигатель

// Сбрасываем все флаги и параметры после выключения двигателя
normal_is_running = false;
slow_is_running = false;
is_ramping_up_normal = true;
is_ramping_up_slow = true;
current_frequency_normal = MIN_FREQUENCY_NORMAL;
current_frequency_slow = MIN_FREQUENCY_SLOW;

}
}

Программа написана кривенько.

digitalWrite(STEP_PIN    , HIGH);
delayMicroseconds(current_frequency_slow);
digitalWrite(STEP_PIN    , LOW);
delayMicroseconds(current_frequency_slow);

попробуй поменять в 2 местах.

digitalWrite(STEP_PIN    , HIGH);
delayMicroseconds(20);
digitalWrite(STEP_PIN    , LOW);
delayMicroseconds(current_frequency_slow);

и

digitalWrite(STEP_PIN    , HIGH);
delayMicroseconds(20);
digitalWrite(STEP_PIN    , LOW);
delayMicroseconds(current_frequency_normal);

Если что - 4мс хватить должно для переключения.

Да. По паспорту 1мкс. Но это с запасом, тем более что там вообще до 7 мс были.

Действительно. Давно я даташиты не открывал…

Что это значит?