Помогите разогнать контроллер Шагового мотора ST300V2 (Toshiba TB6560 )

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012

Решил сьекономить и купил китайскую плату на базе ToshibaTB6560 от фирмы Saintssmarts.

Ссылка на мануал.

http://www.sainsmart.com/zen/documents/20-019-201/ST330%20%20Stepper%20Motor%20Driver%20Board%20User%20Manual.pdf

Подключил. не работает как надо. Трясется, шумит, дергается. После 3 часов попыток выяснил,что требуется  пауза между шагами в 2 милискекунды. А я меньше давал... Вот работающий код:

void Steps400(int steps)
{
  digitalWrite(ENABLE_PIN, HIGH);     // Set the direction.
  digitalWrite(DIR_PIN, LOW);     // Set the direction.
  delay(100);

Serial.println(">>");
  for (i = 0; i<steps; i++)       // Iterate for 4000 microsteps.
  {
    digitalWrite(STEP_PIN, LOW);  // This LOW to HIGH change is what creates the
    delayMicroseconds(5);
    digitalWrite(STEP_PIN, HIGH); // "Rising Edge" so the easydriver knows to when to step.
    delay(2);     
//    delay(2);      // This delay time is close to top speed for this
  }                              // particular motor. Any faster the motor stalls.

  digitalWrite(DIR_PIN, HIGH);    // Change direction.
  delay(100);
  Serial.println("<<");
  for (i = 0; i<steps; i++)       // Iterate for 4000 microsteps
  {
    digitalWrite(STEP_PIN, LOW);  // This LOW to HIGH change is what creates the
    delayMicroseconds(5);
    digitalWrite(STEP_PIN, HIGH); // "Rising Edge" so the easydriver knows to when to step.
    delayMicroseconds(2000);

  }
   digitalWrite(ENABLE_PIN, LOW);  // particular motor. Any faster the motor stalls.
  //delay(1000);
} 

Переписал код с прерыванием по таймеру, работает. Ставишь паузу меньше 1.5 милисекунд - брррррр.

Возможноли как-нибудь избавиться от 2 миллисекунд задержки? Мне нужно 800 шагов в секунду, а получается максимум  400.  Мотор вроде как позволяет, блок питания только на 50% нагрузки (1,2 А при 15 в)  ,  Тошиба тоже, ей нужно 30мкс.

Хотя в мануале на плат St330  aш 5 микросекунд указано... В немецких форумах написано, что это тормозят оптроны, но что то мне в это не верится.

Кто как решает эту проблему. Спасибо.

 

 

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012
maksim
Offline
Зарегистрирован: 12.02.2012

AccelStepper

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012

maksim пишет:

AccelStepper

Что ты хочешь мне сказать? Что нужно использовать Эту библиотеку? Видел ее. Не использую в первую очередь из за того, что  у меня продвинутый контроллер. Ему нужно сказать только  оп 1 шаг, направление 1или 0. А эта библиотека дредназначеня для обычного  H-Brigge. другими словами, синус генерирует для меня сам контроллер, а не AccelStepper

Я специально написал тестовый код, что бы было просто и наглядно.

Моя проблема:  Я не понимаю,  почему мне нужно делать такую большую паузу между шагами. По документации можно в 80-100 раз быстрее...  Идеи?

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

achest пишет:

Что ты хочешь мне сказать? Что нужно использовать Эту библиотеку? Видел ее. Не использую в первую очередь из за того, что  у меня продвинутый контроллер. Ему нужно сказать только  оп 1 шаг, направление 1или 0. А эта библиотека дредназначеня для обычного  H-Brigge. другими словами, синус генерирует для меня сам контроллер, а не AccelStepper

Я специально написал тестовый код, что бы было просто и наглядно.

ТЫкать перестань, продвинутый ты наш. http://arduino.ru/forum/apparatnye-voprosy/pomogite-razobratsya-chainiku

maksim
Offline
Зарегистрирован: 12.02.2012

А разгонять надо не контроллер, а шаговик. Подбираете соответствующее ускорение и нужную скорость.

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012

maksim пишет:

А разгонять надо не контроллер, а шаговик. Подбираете соответствующее ускорение и нужную скорость.

Спасибо за идею!  Ты имеешь в  виду, что задержка 2мс связана с тем, что я пытаюсь слижком быстро мотор ускорить и ему "плохо" от такого ускорения?   Что проблема не в контроллере, а в связке мотор/контроллер.Если его медленно раскручивать и тогда он сможет больше чем 400 шагов.

 Спасибо за ссылку на дискуссию. Попробую вечером.

maksim
Offline
Зарегистрирован: 12.02.2012

Двигателю не плохо, а он физически не может успеть за вращаением поля так как якорь имеет инерцию и поэтому двигатеть не может с нуля мгновенно разогнаться до 800 шагов, его нужно разгонять.

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012

maksim пишет:

Двигателю не плохо, а он физически не может успеть за вращаением поля так как якорь имеет инерцию

Сорри за Сленг. Но ты меня понял.

У меня появился другой вопрос: Откуда контроллер знает, как долго  длится шаг. Ведь для медленного шага надо делать медленную смену фаз , а для быстрого -быструю.  А я питаю его только стартовыми импульсами... 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Шаг длится до следующего шага.

achest
achest аватар
Offline
Зарегистрирован: 01.10.2012

maksim пишет:

Шаг длится до следующего шага.

Как это? Мне казалось, что шаг состоит из подачи двух управляющих импульсов на обмотки. С некотрым смещением по времени...

 

maksim
Offline
Зарегистрирован: 12.02.2012

Вам казалось.