ARDUINO Ардуино играет музыку на бокалах

CyberLab

★✩✩✩✩✩✩
7 Сен 2018
47
26
Москва
Может ошибка как раз в отсутствии паузы ?
Сделать что то типа
STEP_1;
пауза 1-4 мкс.
STEP_0;
пауза пауза на движение.
Попробовал с паузой и без. нет разницы. Если тупо подать высокий уровень подождать 1000мкс и сбросить на низкий , то мотор так же отрабатывает 1 шаг как и с импульсом. Никакой разницы во врщении не заметил. Но думаю лучше сразу сделать как нужно, что бы в дальнейшем проблем не возникало
 

CyberLab

★✩✩✩✩✩✩
7 Сен 2018
47
26
Москва
Добился максимальной скорости, при задержке 780 мкс
Опорное напряжение 1В при R100

Видео тестов


Код который я использовал
C++:
#define STEP_1 PORTB |= B00000010
#define DIR_1  PORTB |= B00000001
#define STEP_0 PORTB &= B11111101
#define DIR_0  PORTB &= B11111110

#define step_num 400        // количество шагов на 1 оборот
#define step_impuls 10    // импульс для запуска шага в мкс
#define step_duration 800  // длительность шага

void setup()
{
 
  pinMode(8, OUTPUT); // DIR
  pinMode(9, OUTPUT); // STEP
  STEP_0;
  DIR_0; 
}

void loop()
{

steps(800);
delay(1000);
steps(-800);
delay(1000);
steps(400);
delay(1000);
steps(-400);
delay(1000);
}

//******************
void steps(int shag)
{
  if(shag>0){DIR_1;} else {DIR_0; shag=abs(shag);}
   for(uint16_t i = 0; i < shag; i++)
   {
    STEP_1;
    delayMicroseconds(step_impuls);
    STEP_0;
    delayMicroseconds(step_duration-step_impuls);
  }
}
 
Изменено:

CyberLab

★✩✩✩✩✩✩
7 Сен 2018
47
26
Москва
Подправил код, что бы можно было использовать без библиотек
В полношаговом режиме задержка для 1 шага 1500 мкс
В полушаговом 800*2=1600 мкс
Разница во времени действительно небольшая.

Скрин из даташита на А4988
a4988.png
 
Изменено: