Подключение Arduino Mega к SMD-4.2

Тема в разделе "Arduino & Shields", создана пользователем LangoV, 8 фев 2013.

  1. LangoV

    LangoV Нуб

    Добрый день.
    Подскажите как правильно подключить к Arduino Mega(http://arduino.ru/Hardware/ArduinoBoardMega , там же есть принципиальная схема) блок управления шаговым двигателем SMD-4.2(http://electroprivod.ru/smd-4.2.htm). Управлять буду шаг.двигателем AD-200-31 по схеме 2(http://electroprivod.ru/ad-200.htm).

    Консультант в Электроприводе сказал, что нужно подключать к аналоговым входам.
    А какую библиотеку Arduino использовать, Stepper.h?
    И как инициализировать входы в скетче, если подключение будет:
    An1 - Step+
    An2 - Step-
    An3 - Dir+
    An4 - Dir-
    An5 - En+
    An6 - En-

    Заранее спасибо.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Что-то странное сказал вам консультант… Можно, конечно, подключить и к аналоговым входам, но вам нужно будет работать ими всё же, как цифровыми выходами: Arduino выдаёт сигналы на железку, не так ли?! Кроме того пины с «плюсами» должны быть непосредственно притянуты к питанию. Смотрите внимательно на документацию к вашей коробочке.

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

    5V - Step+
    D2 - Step-
    5V - Dir+
    D3 - Dir-
    5V - En+
    D4 - En-

    Библиотека Stepper вам не поможет: коробочка уже умеет как нужно управлять обмотками. Вам остаётся лишь пипать пины 2, 3, 4, чтобы ей управлять на логическом уровне, а она уж сама передаст, всё что вы просили двигателю.

    Концептуально:
    • Ставьте сигнал En (D4) в LOW. Это включает коробочку
    • Ставьте сигнал Dir (D3) в LOW или HIGH в зависимости от нужного направления вращения
    • Пипайте пин Step(D2) в LOW на 3 мкс для совершения 1 шага. Пипайте повторно для создания вращения.
     
  3. LangoV

    LangoV Нуб

    Документации там как кот наплакал((
    Я смогу переговорить с консультантами, но пока что даже не могу вопросы сформулировать.
    Полазил на различных сайтах, посмотрел аналоги подключения(через всевозможные контроллеры, в том числе самодельные) так вот там везде фигурируют только STEP/DIR/EN, и никаких там STEP+/STEP- нет.

    Сейчас попробую. По результатам отпишусь.

    Спасибо.
     
  4. LangoV

    LangoV Нуб

    Попробовал подключить как Вы посоветовали. Не получилось.
    Нашел вот такую ветку http://arduino.cc/forum/index.php?topic=108914.0 Там у автора похожий по внешнему виду на мой контроллер. Там же предложили вариант подключения:
    Digital Pin 2 -> PUL+ // PUL по всей видимости у него аналог STEP
    Digital Pin 3 -> DIR+
    And the PUL-, DIR- to the Arduino GND and ENA- unconnected.

    Моторчик зашумел при таком подключении, но не двигался.

    В том и другом случаи использовал след.скетч:
    Код (Text):

    int stepM1pin = 22;  
    int dirM1pin = 24;  
    int enM1pin = 26;
     
    int Steps = 10;  
    int Delay = 3;     
    int i;
     
    void setup() {
     
    pinMode(stepM1pin, OUTPUT);  
    pinMode(dirM1pin, OUTPUT);  
    pinMode(enM1pin,OUTPUT);
     
    digitalWrite(enM1pin,LOW);
    digitalWrite(dirM1pin,LOW);
    }
     
    void loop() {
          digitalWrite(stepM1pin, HIGH);
          delayMicroseconds(3);
          digitalWrite(stepM1pin, LOW);
          delayMicroseconds(3);
    }
    Я не так написал скетч?
     
  5. nailxx

    nailxx Официальный Нерд Администратор

    Скетч похож на правду. А мотору точно хватает питания? И как именно он шумит: пищит, как электричка при разгоне?
     
  6. LangoV

    LangoV Нуб

    Разобрался))
    Подключил по схеме:
    Digital Pin 2 -> STEP+
    Digital Pin 3 -> DIR+
    Digital Pin 4 -> ENA+
    GND -> PUL-
    GND -> DIR-
    Не подключаю никуда ENA-.

    Ошибка была в задержке, указанного в скетче. Видимо он не может столько шагов делать за секунду. Слишком маленькое прерывание было.

    Задержку сделал 500 микросекунд. Получилось следующее:
    Код (Text):

    int stepM1pin = 22;
    int dirM1pin = 24;
    int enM1pin = 26;
     
    int Delay = 500;     
     
    void setup() {
     
    pinMode(stepM1pin, OUTPUT);
    pinMode(dirM1pin, OUTPUT);
    pinMode(enM1pin,OUTPUT);
     
    digitalWrite(enM1pin,LOW);
    digitalWrite(dirM1pin,LOW);
    }
     
    void loop() {
          digitalWrite(stepM1pin, HIGH);
          delayMicroseconds(Delay);
          digitalWrite(stepM1pin, LOW);
          delayMicroseconds(Delay);
    }
    Nailxx, спасибо за помощь.
     
  7. nailxx

    nailxx Официальный Нерд Администратор

    Довольно странно ибо в документации именно 3 мкс были заявлены. Но что ж… Можно 500 попробовать поуменьшать пока не начнёт тупить. Это и будет оптимальный импульс :)
     
  8. saltofearth

    saltofearth Нерд

    Схожая проблема, не могу заставить ходить ШД FL86STH80-4208
    с 8ю выводами 4-х фазный
    [​IMG]

    подключен через SMD-4.2 драйвер.

    arduino mega 2560
    использую скетч как в предыдущем посте

    подаю на step+ импульсы пробовал различные значения (начиная 5мкс до 10000мкс)

    dir+ пробовал 5v, 0v

    step- на земле
    dir- на земле

    шагает на месте

    меняю частоту импульсов = частота шагов меняется
    но шагать только в перед или только назад не хочет
    шагает на месте или периодически дергается на произвольное количество шагов

    пробовал параллельное и последовательное, а так же подключение 2х из четырех обмоток тот-же результат.
    :confused:

    может, кто, что подскажет ?

    Заранее спасибо.
     
  9. LangoV

    LangoV Нуб

    Привет.
    Если я правильно тебя понял, то у тебя он дергается то в одну сторону, то в другую.
    Попробуй посмотреть "распайку" на моторе - поменять провода.
    Выход на который ты подаешь значение "сделай шаг" он у тебя отвечает сейчас за направление движения.
     
  10. saltofearth

    saltofearth Нерд

    Cпасибо конечно за ответ. Но он мало что объясняет.
    Во первых, зачем подавать что либо на выход ) , подают обычно на входы - а именно на входы драйвера мотора, которые для удобства подписаны:
    dir т.е. Direction - направление
    step шаг

    на step согласно осциллограмме приведенной в инструкции http://electroprivod.ru/pdf/SMD-4.2-pasp.pdf подаются импульсы длинной не менее 3-х микросекунд.
    Импульсы могут быть и длиннее, контроллер срабатывает на фронт импульса т.е. в момент когда на входе напряжение меняется с 0 на 5v.

    на dir подается либо 5v для шагов в прямом либо 0 для обратного направления шагов/
    если не требуется менять направление движения ш.д. можно вообще не подключать к этому входу ни чего или "посадить его на землю"/ тестировал в разных вариациях. Результат тот же.

    схемы коммутации Ш.Д. с драйвером приведены там же в инструкции,
    а именно при параллельном подключении это:

    синий,красный A +
    желтый,черный A -
    коричневый,белый B +
    оранжевый, зеленый B -

    Пробовал (последовательное). Результат тот же.

    И боюсь что несоблюдение конфигурации подключения обмоток Ш.Д. к драйверу на таком токе попросту выведут драйвер из строя.

    Мои предположения. -
    т.к. я использую источик питания GZT-H200S36 36v
    есть сомнения что Ш.Д. FL86STH80-4208 приспособлен к работе c напряжением 36v
    (к сожалению не могу найти информации об этом в спецификациях Ш.Д.)

    либо не корректная работа драйвера.


    так что, вопрос пока остается открытым.
     
  11. saltofearth

    saltofearth Нерд

    Ну что же, проблема решилась неожиданно. Пролистав немного макулатуры о Ш.Д. выяснилось что многофазные двигатели часто входят в ступор на микрошаге на больших токах. Момент удержания у них достаточно высок и самостоятельно из заклиненного состояние они не выходят. Даже после снятия тока с обмоток, так что пришлось поморочится переключая ток и микрошаг. И (о чудо!) он вышел из этого состояния. Теперь функционирует нормально, но на низких оборотах на большом микрошаге и большом токе при резонансе может войти обратно в клин.

    Вот так.
    В следующий раз буду брать двух фазный. (ибо мороки меньше)
     
    Megakoteyka и nailxx нравится это.