Подключение шагового двигателя к Motor Shield

Тема в разделе "Arduino & Shields", создана пользователем Alex19, 20 ноя 2013.

  1. Alex19

    Alex19 Гуру

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

    Появился вопрос, как подключить шаговые двигатели к Motor Shield.
    Arduino Motor Shield (L298N).
    http://www.dfrobot.com/wiki/index.php/Arduino_Motor_Shield_(L298N)_(SKU:DRI0009)
    Покупал, год тому наверное, в Амперке.

    А вот с моторами беда, нужно подключить именно его.
    У меня мешок моторов Crouzet 28910.0, описание на увы не нашел.
    От него идет 4 провода, 2 синих, 2 белых. По парно белый и синий. На против белых стоят римские II, на против синих I.

    Моторы были с платами управления, на которых были разъемы к промышленному контролеру.
    На платах стоят SAA1042 http://teal.gmu.edu/courses/ECE447_OLD/component_specs/saa1042_Stepper_Driver.pdf.

    Как выяснилось эта микросхема управления 2 фазным биполярным двигателем.
    Можно ли подключить эти двигатели к Arduino Motor Shield (L298N)?

    Подключал, к выходам на M1+, M1-, M2+, M2-. Использовал внешний источник питания. Перемычки установил на внешнее питание использовал как режим PWM и PLL.

    Код использовал стандартный
    Код (Text):

    #include <Stepper.h>

    // change this to the number of steps on your motor
    #define STEPS 48

    // create an instance of the stepper class, specifying
    // the number of steps of the motor and the pins it's
    // attached to
    Stepper stepper(STEPS, 4, 5, 6, 7);

    // the previous reading from the analog input
    void setup()
    {
      // set the speed of the motor to 30 RPMs
      stepper.setSpeed(10);
    }

    void loop()
    {
      stepper.step(480);
      delay(1000);  
    }
     
    Диоды мигаю как на елке, а он дергается туда сюда.
    Такое ощущение, что перепутаны обмотки, но мне кажется я все варианты подключения перебрал.

    В чем может быть проблема?
     
  2. Dmitriy Kunin

    Dmitriy Kunin Гик

  3. Alex19

    Alex19 Гуру

    Не смог вчера проверить.
    Был уже дома. Надо тягать домой платы.

    Сейчас проверил работает, но без этой библиотеки StepperRenat (у меня не заработала) или Stepper.
    Большое спасибо!

    Перехожу в ту ветку, без библиотеки не удобно, нужно позиционировать элементы.
     
  4. nyos.ru

    nyos.ru Нерд

    разобрался со связкой моторчик от cd-rom с червячной передачей (4 контакта) + драйвер L298n + arduino uno

    питание (1) на ардуино через usb и (2) дополнительный блок 12v на драйвер плюс и земля

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

    скетч получился следующий, долго парился но дошёл до следующего :) 20 шагов крутит вперёд и 8 назад .. по расстоянию примерно одинаково получается туда сюда

    Код (C++):
    /* Управление шаговым мотором
    Вал шагового мотора будет поворачиваться вслед за поворотом ручки
    потенциометра (или в соответствии с изменением данных от другого
    датчика, стоящего вместо потенциометра), подключенного к 0-ому
    входному аналоговому контакту.
    http://www.arduino.cc/en/Reference/Stepper
    Этот код не защищен авторским правом.
    */

    #include <Stepper.h>
    // Поменяйте это число на количество «шагов» вашего мотора:
    #define STEPS 20
    // Создаем экземпляр класса Stepper, указываем количество шагов
    // и контакты, к которым подсоединен шаговый мотор:

    // едем вперёд
    Stepper stepper1( STEPS, 3, 4, 5, 6 );
    // едем назад
    Stepper stepper2( STEPS, 6, 5, 4, 3 );

    int sp = 150;

    void setup()
    {
      // Задаем скорость вращения мотора на "sp" оборотов в минуту:

      // едем вперёд
      stepper1.setSpeed( sp );

      // едем назад
      stepper2.setSpeed( sp );

    Serial.begin( 19200 );

    }

    int s = 0;
    void loop()
    {

    // едем вперёд
      if( s < 20 )
      {
      stepper1.step( s );
      Serial.print( 1 + ' ' );
      }
      else
      {
        // едем назад 8 шагов
        if( s > 20 && s < 28 )
        {
        // Двигаемся на количество шагов согласно данным от датчика:
        stepper2.step( s );
        Serial.print( 2 + ' ' );
        }
        else
        {
        Serial.println( 3 );
        }
      }

    s++;

    }
    фотки тут
    http://prntscr.com/b77oe4
    http://prntscr.com/b77ong
    http://prntscr.com/b77ovy
    http://prntscr.com/b77p2l
     
    Последнее редактирование: 23 май 2016