Страница 1 из 1
STSPIN220 не выдает шаги
Добавлено: Вт май 03, 2022 15:57:52
daaar
Есть такая вот схема:

Набросал тестовый код для атини
Спойлер
Код: Выделить всё
const int EN = 0, STEP = 1, DIR = 2, LED = 3, ACT = 4;
const int SPEED = 1;
void setup() {
// put your setup code here, to run once:
pinMode(EN, OUTPUT);
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
pinMode(LED, OUTPUT);
digitalWrite(DIR, HIGH);
digitalWrite(STEP, LOW);
delay(100);
digitalWrite(EN, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(STEP, HIGH);
delay(SPEED);
digitalWrite(STEP, LOW);
delay(SPEED);
}
Сначала идет инициализация дробления шага, дальше подаю на EN единицу и выдаю шаги. Но какая-то магия не происходит и шаговик даже не напрягается. Шаговик вот
такой
Осциллографом ничего не увидел на выходе драйвера
Датащит stspin220
Re: STSPIN220 не выдает шаги
Добавлено: Пт июн 03, 2022 18:34:07
Sanchogus
Есть успехи? Есть такой драйвер, могу попробовать включить.
Инициализация, если не ошибаюсь по стендбаю идет, а не по EN.
Re: STSPIN220 не выдает шаги
Добавлено: Пт июн 03, 2022 18:35:34
daaar
Sanchogus, нет успехов
У вас на отладочной плате?
Re: STSPIN220 не выдает шаги
Добавлено: Пт июн 03, 2022 18:36:55
Sanchogus
У меня на макетке из известных субстанций.

М.б. после ужина заведу.
Сначала набросал включение EN, затем STBY и никакой реакции от драйвера.
Поменял местами: сначала STBY, затем EN, через задержку и всё заработало.
Без передергивания STBY переинициализация невозможна.
Без дрыгания EN тоже не работает. Похоже надо дрыгать оба и в нужном порядке.
И да, шунты 4,3 Ом перебор. Там входное Vsns +-1 В по даташиту.
Хотя бы до 1 Ома сбросить, ИМХО.
Спойлер
вот таким говнокодом запустил на STM32 (HAL)Код: Выделить всё
/* USER CODE BEGIN 2 */
/*всё выключено*/
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_RESET);
/*инициализации на fullstep*/
HAL_GPIO_WritePin(M1_GPIO_Port, M1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M2_GPIO_Port, M2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M3_GPIO_Port, M3_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M4_GPIO_Port, M4_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_TIM_Base_Start(&htim1); //запуск таймера
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //разрешение ШИМ на M3
HAL_Delay(10000);
/*всё выключаем*/
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
TIM1->CCR1 = 0; //M3 в ноль (через коэф. заполнения ШИМ = 0 )
/*инициализации на 1/32 */
HAL_GPIO_WritePin(M1_GPIO_Port, M1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M2_GPIO_Port, M2_Pin, GPIO_PIN_SET);
TIM1->CCR1 = 0; //M3 в ноль (через коэф. заполнения ШИМ = 0 )
HAL_GPIO_WritePin(M4_GPIO_Port, M4_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET);
HAL_Delay(1);
TIM1->CCR1 = 500; //ШИМ с коэф. заполнения 50%
HAL_Delay(10000);
/*всё выключаем*/
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
TIM1->CCR1 = 0; //M3 в ноль (через коэф. заполнения ШИМ = 0 )
/*инициализации на 1/32 */
HAL_GPIO_WritePin(M1_GPIO_Port, M1_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(M2_GPIO_Port, M2_Pin, GPIO_PIN_RESET);
TIM1->CCR1 = 0; //M3 в ноль (через коэф. заполнения ШИМ = 0 )
HAL_GPIO_WritePin(M4_GPIO_Port, M4_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET);
HAL_Delay(1);
TIM1->CCR1 = 500; //ШИМ с коэф. заполнения 50%
Re: STSPIN220 не выдает шаги
Добавлено: Сб июн 04, 2022 18:19:55
daaar
[uquote="Sanchogus",url="/forum/viewtopic.php?p=4240836#p4240836"]И да, шунты 4,3 Ом перебор. Там входное Vsns +-1 В по даташиту.
Хотя бы до 1 Ома сбросить, ИМХО.[/uquote]
У меня ток на мотор всего 50мА, если возьму резисторы меньше, то просто не смогу подобрать резисторы в делитель. Если я правильно всё посчитал.
Попробую запустить свой как до дома доберусь
Добавлено after 8 hours 20 minutes 26 seconds:
Может я делаю что-то не так, код поправил, перемычку на пин reset кинул, но ничего не движется. Даже нагрев не наблюдаю
Шаговик вот
такой
Спойлер
const int EN = 0, STEP = 1, DIR = 2, RESET = 3, ACT = 4;
const int SPEED = 100;
void setup() {
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
pinMode(RESET, OUTPUT);
pinMode(EN, OUTPUT);
digitalWrite(RESET, LOW);
digitalWrite(EN, LOW);
// set step
digitalWrite(DIR, HIGH);
digitalWrite(STEP, LOW);
delay(10);
digitalWrite(RESET, HIGH);
delay(1);
digitalWrite(EN, HIGH);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(STEP, HIGH);
delayMicroseconds(SPEED);
digitalWrite(STEP, LOW);
delayMicroseconds(SPEED);
}
Re: STSPIN220 не выдает шаги
Добавлено: Вс июн 05, 2022 16:46:49
daaar
Всё таки добил шаговик, был не пропай в одном месте