Arduino Uno + A4988 + 17HS3001

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем PushKeeN, 1 авг 2015.

  1. PushKeeN

    PushKeeN Нуб

    Всем привет!
    Есть мысль собрать станок для работы и в связи с этим недавно купил комплект Матрешка Z от Амперки, что бы разобраться как и что. Как в электронике, так и в программировании полный нуб, так что не пинайте сильно.
    Задача подключить шаговик 17HS3001 через драйвер A4988 к Адруино Уно.
    Все собрал на бредборде, для драйвера ШД купил отдельное питание 12В 2.1А. Вроде все примитивно просто и понятно, но почему-то не работает.
    Двигатель начинает беспорядочно дрыгаться в разные стороны независимо от того, какое направление ему указываешь.
    Делал все, как указано тут: http://www.radio-magic.ru/arduino-projects/181-arduino-stepper
    Скетч брал от туда же. Так же пробовал использовать библиотеку Stepper.h, но результат тот же.
    Единственное в чем я не уверен, так это в распиновке мотора. Там 6 контактов. Как я понял, униполярные моторы можно использовать как биполярные, просто не подключая два контакта "из середины". У меня двигатель к драйверу подключен так: 1 - A1, 3 - A2, 4 - B1, 6 - B2.

    В общем, помогите разобраться, пожалуйста. Не понимаю в чем проблема :(
     
  2. vvr

    vvr Инженерище

    проверьте по даташиту на мотор где какие выводы, правильно подключите к драйверу, правильно подключите драйвер и на драйвере потенциометром выставите нужный ток по даташиту на драйвер:)
     
  3. PushKeeN

    PushKeeN Нуб

    Спасибо за Ваш ответ!
    Яндекс - гад!) Не находил мне даташит на мотор с распиновкой! А вот Гугл - молодец) Первой же ссылкой выдал нужный ПДФ)
    Но все равно ничего не работает!)
    Давайте разбираться..
    Даташит на мотор: http://robotdigg.com/upload/pdf/17HS3001-20B.pdf
    Ток 1.2А, первая обмотка контакты 1, 4, вторая обмотка - 3, 6.
    Резистор выставил так, что при измерении напряжения между резистором и землей у меня 0.48В. Вычитал, что это напряжение надо умножить на 2.5 и тогда получится максимальный ток. Выходит как раз 1.2А.
    Даже снял радиатор с чипа на драйвере, что бы проверить маркировку - действительно 4988.
    Теперь по пинам:
    Step и Direction подключены к Ардуино;
    Sleep и Reset замкнуты друг на друга;
    Enable не используется, т.к. когда на нем HIGH, никакого движения вообще не наблюдается;
    с другой стороны драйвера по порядку: +12В от БП, минус от БП, А1, А2, В1, В2, +5В от Ардуино, минус от Ардуино.
    Не едет!
    Еще из наблюдений - у меня тут случайно замкнулись два средних провода, подключенные к мотору и все заработало. Но со странными звуками и повышенной вибрацией. Но за симптом, думаю, сойдет.
    Очевидно, что проблема с коммутацией, но я не понимаю какая..
     
  4. PushKeeN

    PushKeeN Нуб

    Спасибо большое, я разобрался!
    Причиной всему был банальный плохой контакт на одном из пинов моторчика! :)
    Два дня мучений и проблема найдена!
     
  5. 12Х18Н10Т

    12Х18Н10Т Нуб

    Добрый день. Подключал двигатели так: вывод на 12 В к автомобильному зарядному устройству, вывод на 5 В к ардуино. Ну и вывод на шаг и направление к ардуино тоже. Всё работало отлично. Захотел подключить к блоку питания от компьютера, там как раз есть выходы на 12В и на 5В. Подключил, но двигатели дребезжат и слушаются команды с компьютера через раз. Подскажите, пожалуйста, в чём может быть проблема.
     
  6. vvr

    vvr Инженерище

    а сколько мотор кушает
    может просто тока не хватает
     
  7. 12Х18Н10Т

    12Х18Н10Т Нуб

    Двигатель: 17hs4401. Ток 1.7 А
    На блоке питания написано, что выдаёт 13А. Пробовал крутить потенциометр на драйвере, но при минимуме двигатели перестают дребезжать, но и совсем не двигаются.
     
  8. vvr

    vvr Инженерище

    рисуйте схему подключения и давайте код
     
  9. 12Х18Н10Т

    12Х18Н10Т Нуб

    код:

    #include <AccelStepper.h>

    AccelStepper Motor(1,10,11);
    int soob;


    void setup() {

    Serial.begin(9600);
    Motor.setMaxSpeed(500);
    Motor.setCurrentPosition(0);
    }

    void loop() {

    if (Serial.available()>0) {
    soob = Serial.read();
    if (soob == 88){
    Motor.setCurrentPosition(0);
    Motor.moveTo(1000);
    Motor.setSpeed(400);
    if (Motor.distanceToGo() == 0) {

    Motor.moveTo(0);

    }
    }}

    Motor.run();

    Схема подключения:
    }[​IMG]
     
  10. 12Х18Н10Т

    12Х18Н10Т Нуб

    Алло, товарищ. Спасай) Сейчас ещё пробовал ставить конденсатор между 12В и 0, но ничего не поменялось
     
  11. vvr

    vvr Инженерище

    для начала проверь правильность подключения мотора к драйверу
    потом подключение драйвера к дуне
    залей пример из библиотеки
     
  12. 12Х18Н10Т

    12Х18Н10Т Нуб

    Правильность подключения мотора к драйверу гарантирована тем, что мотор уже давно припаян к драйверу и работал без нареканий при применении автомобильного зарядного устройства на 12 В. Соответственно, к ардуине тоже всё правильно подключено, по тем же причинам. Пример из библиотеки - это из accelstepper.h в смысле?
    Мне тут подсказывают, что компьютерный блок питания на выходе даёт "импульсный" ток, как считаете, может ли это быть причиной? И есть ли в свободном доступе выпрямители на 12В и 5В без "импульсного" тока?