Подключение шагового двигателя 28BYJ-48 через ULN2003

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем d00m, 19 фев 2013.

  1. d00m

    d00m Гик

    Доброго времени суток.

    Пытаюсь заставить крутиться шаговый двигатель.

    Клон Arduino Nano такой:
    http://www.ebay.com/itm/390525424904?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

    двигатель и драйвер такие:
    http://www.ebay.com/itm/221165829799?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

    подключил вроде правильно:
    1N1 - 8
    1N2 - 9
    1N3 - 10
    1N4 - 11

    5 вольт беру прямо с МК

    скетч залил отсюда: http://xn--d1ahbulud.xn--b1ayhe.xn--p1ai/?p=49
    Код (Text):
    // Собственно библиотека
    #include <Stepper.h>
     
    // количество шагов мотора (получается простым способом деления
    //360 градусов на угол (документация к мотору), на который поворачивается
    //мотор за один шаг. В моем случае (Mitsumi) 48 шагов
    #define STEPS 48
     
    // создает класс шагового двигателя и объявляет какими ножками Ардуино
    // он будет управляться (в моем случае двигатель биполярный 4 вывода)
     
    Stepper stepper(STEPS, 8, 9, 10, 11);
     
    void setup()
    {
      // Установление скорости оборотов двигателя в оборотах в минуту (RPM)
      // мой движок работал в диапазоне 5-400 вполне стабильно.
      stepper.setSpeed(300);
    }
     
    void loop()
    {
      // один полный круг вперед
      stepper.step(1*STEPS);
      delay(1000);
      // один полный круг назад
      //stepper.step(-1*STEPS);
      //delay(1000);
     
    }
    горит одна лампочка на драйвере и если взять мотор в руку то чувствуется что он периодически вибрирует (1 раз в сек примерно)

    что я делаю не так ?
     
  2. hibiki

    hibiki Гик

    питаете от arduino. скорее всего, мощности не хватает - попробуйте отдельное питание на драйвер с мотором
     
  3. d00m

    d00m Гик

    но ведь мотор на 5 вольт.. на нем так написано даже.. и я нагуглил массу инфы что должно работать и от ардуино..
    внешнее питание сильно не хочется прикручивать :(
    неужели не будет работать принципиально ?
     
  4. apomelov

    apomelov Нерд

    Вольты вольтами, а амперы амперами. Какое у него потребление по току? И "5 вольт прямо с МК" -- это с пина 5V или с цифрового выхода?
     
  5. d00m

    d00m Гик

    ааа.. ну да. мощности же не хватает..
    напругу беру с пина 5V конечно..
    правда на драйвере есть какойто странный джампер.. но в описании на ebay сказано, что если его снять то вроде надо 12V подавать.. как оно работает точно - я не понимаю пока.
     
  6. apomelov

    apomelov Нерд

    Пин 5V -- это выход встроенного регулятора напряжения, и МК питается оттуда. Проблема может быть не столько в мощности, сколько в провале напряжения при старте мотора. Контроллер может просто перезагружаться от этого. Можно попробовать параллельно с питанием мотора воткнуть конденсатор для сглаживания краевых эффектов.
     
  7. apomelov

    apomelov Нерд

    Какой, кстати, источник на входе?
     
  8. HighDigital

    HighDigital Гик

    Я знаю вашу проблему!
    Предистория:
    Когда я подрабатывал летом, разбирал счетчики, старые, СССР, (кстати, рекорд самого старого счетчика 1966г.). там были шаговые моторы, я его пробовал от батарейки от телефона запитывать(5V) - не как, он дернется, но не делает оборот, а от БП те же 5V спокойно делал один "тик", потом менял полярность, следующий "тик", и т.д

    Думаю вам мощи не хватает, а не вольтов, попробуйте от иного источника питания запитаться, где мощность побольше (к примеру хороший БП), от Ардуино бесполезно моторы запитывать - уж больно они прожорливы! :)
    Удачи!
     
  9. d00m

    d00m Гик

    usb ноута

    чтож спасибо всем - поищу какойнить БП хоть и не хочется..
     
  10. HighDigital

    HighDigital Гик

    Можно аккумулятор какой-нибудь, типо из игрушечной р/у машинки, но лучше на будущее хороший БП прикупить - полезная вещь! :)
     
  11. d00m

    d00m Гик

    ерунда какаято.. теперь не определяется моя ардуинка.. я мог ее както подпалить нагрузив этим мотором ?
     
  12. d00m

    d00m Гик

    и при подключении к USB на ноге +5v всего 2,7 вольта...
     
  13. d00m

    d00m Гик

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

    при прозвонке на одном контакте диода все 5 вольт есть, а на втором контакте всего 2,7
    я и подумал что проблема в нем и закоротил его..
     
  14. d00m

    d00m Гик

    вобщем заменил диод. подключил внешнее питание для мотора - все равно не крутится. мигают лампочки на драйвере и все. а он даже не вибрирует..
     
  15. HighDigital

    HighDigital Гик

    Я думаю можно тупо перемычку поставить, вместо диода. Если ничего греться не будет, то нормально. Ну конечно на свой страх и риск! :)

    Если вы уже коротили, и у вас ничего не сгорело - можно рискнуть, но лучше конечно поискать, может где то и другой элемент сгорел, поэтому и диод "тупит"
     
  16. d00m

    d00m Гик

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

    HighDigital Гик

    Попробуйте взять светодиод на 5В и резюк на 250Ом, по скетчу "blink" cделайте мигание на всех цифровых пинах, и по очереди перетыкайте светодиод, аналоговые проверьте считывание с потенциометра, типо:
    Код (Text):
    analogRead(A0);
    Serial.println(A0);
    Пробуйте, в ином случае - новый МК.
     
  18. d00m

    d00m Гик

    чертовщина какаято. купил новую arduino nano
    подключил серво для теста
    залил скетч

    Код (Text):
    #include <Servo.h>
    Servo servoMain; // Define our Servo
    int ledPin = 13;
     
     
    void setup()
    {
      servoMain.attach(11);
      pinMode(ledPin, OUTPUT);
    }
     
    void loop()
    {
      servoMain.write(45);  // Turn Servo Left to 45 degrees
     
      digitalWrite(ledPin, HIGH);  // sets the LED on
      delay(1000);                // waits for a second
      digitalWrite(ledPin, LOW);    // sets the LED off
      delay(100);
     
      delay(1000);        // Wait 1 second
     
      servoMain.write(0);  // Turn Servo Left to 0 degrees
      delay(1000);        // Wait 1 second
     
      digitalWrite(ledPin, HIGH);  // sets the LED on
      delay(1000);                // waits for a second
      digitalWrite(ledPin, LOW);    // sets the LED off
      delay(100);
     
    //  servoMain.write(90);  // Turn Servo back to center position (90 degrees)
    //  delay(1000);          // Wait 1 second
    //  servoMain.write(135); // Turn Servo Right to 135 degrees
    //  delay(1000);          // Wait 1 second
    //  servoMain.write(180); // Turn Servo Right to 180 degrees
    //  delay(1000);          // Wait 1 second
    //  servoMain.write(90);  // Turn Servo back to center position (90 degrees)
    //  delay(1000);          // Wait 1 second
    }
    перебираю цифровые пины - не крутит серво ни на одном !
     
  19. apomelov

    apomelov Нерд

    А одиннадцатому пину не надо режим output выставить? Возможно это делается на Servo.attach, но я бы для уверенности выставил явно.
     
  20. HighDigital

    HighDigital Гик

    Да, попробуйте ещё серво как pinMode(servo, OUTPUT); сделать, возможно МК не понимает, что является серво - датчиком или исполнителем.