как подключить шд к ардуино уно через мотор шилд

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

  1. Renat

    Renat Нерд

    Проверить нет возможности но РЕВЕРС должен работать так:
    int motorPin1 = 4;
    int motorPin2 = 5;
    int motorPin3 = 6;
    int motorPin4 = 7;
    int delayTime = 6;

    void setup() {
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
    }

    void loop() {
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin4, lOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3,LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1,LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin4, HIGH);
    delay(delayTime);
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3,LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    }
     
  2. Renat

    Renat Нерд

    Проверте кто нибудь и отпишитесь плз.
     
  3. Renat

    Renat Нерд

    И еще народ подскажите , мож я чего недопонимаю. В даташите написано что MAX slewing PPS -2500 PPS, по идее это значит что он может сделать 2500 шагов в секунду, тобишь если он 200 шаговый значит 12,5 оборотов в секунду (Для моего задуманного устройства надо было их до 5-7). НО максимальные обороты которые я смог получит на своем моторе со своей программой от силы 2 оборота в секунду delay(delayTime)=2;. Что тогда вообще считать за понятие ШАГ?
     
  4. fr0ster

    fr0ster Гик

    Обычно это единичный поворот, минимальный. Для некоторых двигателей это за 200 шагов оборот на 360, для некоторых 400.
     
  5. Renat

    Renat Нерд

    А что же тогда MAX slewing PPS ?
     
  6. fr0ster

    fr0ster Гик

    ХЗ, тоже думаю максимальная скорость поворота. Возможно на ограниченном секторе и без нагрузки.
     
  7. qwenya77

    qwenya77 Нерд

    Проверено, работает.
    А теперь как это все объединить чтоб сначала в одну сторону потом в другую?
     
  8. Renat

    Renat Нерд

    Ну отлично, теперь надо чтобы знающие люди написали библиотечку. За основу надо взять Stepper.h и поменять там последовательность подачи сигналов, алгоритмы изменения скорости и направления вращения там уже прописаны наверно)))) . Жаль только тех ардуинеров, у которых биполярные степперы в устройствах уже работают с неправильной библиотекой.
     
  9. qwenya77

    qwenya77 Нерд

    Почему шаг смещается все время?
     
  10. Renat

    Renat Нерд

    Какой шаг? Где?
     
  11. qwenya77

    qwenya77 Нерд

    если использовать код предложенный nailxx то каждый оборот смещается (не получается что бы он останавливался на одном и том же месте)
     
  12. fr0ster

    fr0ster Гик


    Да написать библиотечку дело нехитрое.
    Одно плохо, авторы Stepper`а упаковали кишки в private, а не protected, теперь просто унаследовать от стандартной и переопределить один метод нельзя, надо копировать стандартную либу, что не есть гуд.

    Приложил модифицированную либу. Распаковать вместо стандартного Stepper`а Вместо Stepper.h писать надо StepperRenat.h
    Соответственно класс Stepper - стандартный ардуиновский, класс StepperRenat - наследник стандартного с переопределенным методом с последовательностью Рената.
    То есть вместо
    Код (Text):

    #include <Stepper.h>

    Stepper motor = Stepper(200, 4, 6, 5, 7);

    void setup()
    {
        motor.setSpeed(50);
    }

    void loop()
    {
        motor.step(100);
        delay(1000);
    }
     
    следует писать
    Код (Text):

    #include <StepperRenat.h>

    StepperRenat motor = StepperRenat(200, 4, 6, 5, 7);

    void setup()
    {
        motor.setSpeed(50);
    }

    void loop()
    {
        motor.step(100);
        delay(1000);
    }
     
    Примеры компилятся, но у меня нет ни шилда ни шагового мотора, так что кто может, проверьте.
     

    Вложения:

  13. Renat

    Renat Нерд

    Спасибо за помощь.Я тоже смогу только вечером до своей техники добраться, вечером проверю и отпишусь.
     
  14. Alex19

    Alex19 Гуру

    День добрый.
    Увы такая же проблема.

    Шил покупался когда-то давно в амперке, с двигателями нормально, а вот с шаговыми беда.
    DFRobot 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 фазным биполярным двигателем.
    Пример от Renat заработал
    Хоть и сильно греется мотор, но тянет хорошо.

    А вот пример fr0ster с библиотекой StepperRenat увы нет.
    Дергается.

    Что можно сделать, чтобы он работал нормально, где можно было бы задавать скорость и кол-во шагов?
     
  15. Alex19

    Alex19 Гуру

    Да пример от nailxx, он же стандартный, не заработал.

    Попробовал изменить строку
    Код (Text):
    void Stepper::setSpeed(long whatSpeed)
    {
      this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed;
    }
    О которой писал fr0ster, хоть в ней ни чего не понимаю:(.

    1000L поменял на 5, он не запустился.
    60L поменял на 5, он крутится, но проблемы с точностью, даешь круг туда и обратно, он не возвращается от куда стартовал.
    И жутко греется после 5-10 минут работы, как мотор, так и шилд.

    Поэтому от дальнейших тестов с этой строкой воздержался.
     
  16. Renat

    Renat Нерд

    Всем привет! К сожалению долго не мог отписаться, но вчера я всетаки добрался до техники и выяснил что библиотека StepperRenat.h не работает. Движок как и в случае с библиотекой Stepper.h просто дергался. НО! Я на днях получил и протестировал контроллер А4988. Подключал с библиотекой acelstepper, работает идеально (сильный и тихий)! Единственное что НЕ НУЖНО делать при проверке работоспособности контроллера А4988, это проверять силу кручения степпера против направления вращения! В этом случае степпер сам вырабатывает довольно большой ток и пробивает мост в микросхеме контроллера. Симптомы того что контроллер можно выкидывать - движок подключенный к контролеру без питания тяжело прокручивается. Один по незнанию спалил))), но зато второй изучил досканально и работает он изумительно. Причем без всяких там радиаторов. Час работы движка с периодической нагрузкой нагрел микруху контроллера до 32 градусов (измерял тепловизором).
     
  17. Alex19

    Alex19 Гуру

    Понятно, жаль, что не работает. Думал может я, что-то сделал не так.

    Контролер L298N, как я понял, как повезет иногда он нормально работает с шаговым иногда нет.
    И если не повезло, надо переписывать библиотеку или писать функции в самом коде.

    Как понимаю, если хочу использовать этот контролер надо писать самому реализацию.
    В общих чертах, как сделать регулировку скорости?
    Просто надо использовать позиционирование деталей. Шаг примерно понимаю из кода, а вот скорость.

    И пару общих вопросов, у меня из опыта, только 1 пром. станок на ардуине. Он проработал неделю и потом его не включили.
    1. Ардуина пригодна для пром. использования, работа 24 часа в сутки и 365 дней в году?
    2. Существую ли надежные решения, для работы с ШД, которые можно купить в Москве, подключил, залил код со странице поддержки и работает или это мечты?
    2.1 Если да можете подсказать где?
     
  18. Alex19

    Alex19 Гуру

    К вопросам 2 и 2.1 разумеется двигатели, могу купить любые, чтобы доп. проблем не было
     
  19. Megakoteyka

    Megakoteyka Оракул Модератор

    А причину нашли?

    Ардуина - это просто микроконтроллер AVR, засунутый в удобную плату. На AVR автоматизируют очень много всего, нужно только грамотно его использовать. Возможно, для варианта с промышленным станком имеет смысл производить отладку кода на Ардуине, а рабочее устройство изготавливать отдельно. Делать необходимую защиту, разводить под свою задачу нужную плату, заказывать ее изготовление, ставить надежные разъемы - ведь даже банальная грязь (или окисление контактов) может стать причиной неработоспособности станка. Если все предусмотреть, получите достаточно надежное устройство.
    Если производство не терпит простоев, есть смысл подумать о резервировании.

    Что-то вроде такого? Этой штукой тоже нужно управлять как-то. С компьютера, например, или с той же ардуины.

    А почему не используете для такой серьезной задачи, как автоматизация станка, решения на базе ПК?
    Приделать нужные интерфейсы к ПК в наше время не проблема, а для пущей надежности можно взять ПК в промышленном исполнении.
     
  20. Alex19

    Alex19 Гуру

    Заговорился, он работает как часы, просто сейчас не используется.
    Там много проблем с ардуиной вылезло, начиная от того, что про прерывания придется забыть, все перепробовал кроме дроселей и экранированных проводов, но так их не запустил. Они работали но не стабильно итогом программы постоянные падения. Пришлось переписать.

    И т.д., остальные решили эта повисла.

    В нем все предусмотрели, просто не было необходимости использовать его в таких режимах.
    А просто гонять дорого, как по электричеству, так и по сырью. Там нагревательные элементы, пневматика, вакуум.

    Но моторов не было, сейчас замахнулись на несколько произв. линий.

    Фирма толковая знаю, много пневматики от нее.

    Основная кадры, ну нет у нас кадров, скорость и ремонтопригодность.
    По уму такие вещи делают или как вы сказали или на контролерах omron, siemens.