Страница 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, нет успехов :dont_know:
У вас на отладочной плате?

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
Всё таки добил шаговик, был не пропай в одном месте