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

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

  1. -Mark-

    -Mark- Гик

    Милейший, я вот сам мучаюсь до сих пор с GPRS шилдом...и я благодарен ему за то что он не работает по вашему (воткнул и работает..мы же с Вами не в борделе ;);))...он заставляет думать!!!
     
  2. -Mark-

    -Mark- Гик

    На правах знаменитого тролля...позволю себе Вас немного поправить...прежде чем "воткнуть"..."все" должно заработать!:oops:
     
    Последнее редактирование: 10 ноя 2013
  3. Unixon

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

    *ROFL*

    Похоже, что программа неправильно переключает обмотки.
    Не в том порядке и/или не на ту длительность и/или не в той полярности.
     
  4. qwenya77

    qwenya77 Нерд

    (воткнул и все работает) это я на эмоциях.
    Думать конечно же надо, но мне что бы понять надо иметь пример правильно работающего шилда или правильно работающей программы.
    А сейчас я столкнулся неизвестно с чем толи программа не правильно работает то ли шилд не правильно работает, то ли мотор не так подключен ( мало вероятно, с этим я разобрался) а может все вместе
    И помочь пока ни кто не может!
    Все же я думаю что нужна поддержка начинающим таким как я!
     
  5. qwenya77

    qwenya77 Нерд

    Может дадите простой но заведомо правильный скетч для проверки?
     
  6. Unixon

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

    Да с радостью, только вот нет сейчас на руках такого мотора, чтобы проверить правильность скетча/подключения экспериментально.
     
  7. -Mark-

    -Mark- Гик


    вот я взял пример из вики..."воткнул" шилд в контролер..."воткнул" пример в контролер...НЕ РАБОТАЕТ! )))) вероятность того, что я не так "воткнул" прогу в контролер - гораздо выше вероятности, что контролер и шилд неисправен...я вообще склонен уже считать, что нет одной правильной программы (скетча) для любого контролера!!! (если это не банальное включение светодиода)
     
  8. -Mark-

    -Mark- Гик

    Никто мне так и не ответил на вопрос: Почему Мегашилд не работает с Софтваре библиотекой когда GPRS шилд подключен к пинам Меги 2560 (13,2)???????????
     
  9. -Mark-

    -Mark- Гик

    (50,2) работает а (13,2) нет )))))))))))
     
  10. Renat

    Renat Нерд

    Проверил шилд на двух коллекторных движках, без проблем все работает. Крутит во все стороны оба канала. Видимо всетаки стандартные библиотеки не подходят для этого шаговика. Буду еще раз внимательно изучать даташит.
     
  11. qwenya77

    qwenya77 Нерд

    Ренат, не забудьте писать сюда о предпринятых шагах в решении этой проблемы, если у меня будет инфа о решении я тоже отпишусь.
     
  12. Renat

    Renat Нерд

    Хорошо.
    Еще раз себя перепроверил изучив даташит, но шаговик не закрутился((. Может в чем то я был всетаки не прав.
    Что было сделано:
    1) В даташите http://files.amperka.ru/datasheets/LDO-36HT20-0504MA.pdf написано что Rotate direction по часовой стрелке это подача напряжения на катушки в следующей последовательности A-AB-B.
    2) Проверил подключение выводов шаговика и шилда. К М1 зеленый к минусу черный к плюсу, к М2 синий к минусу красный к плюсу на шилде.
    3) Прикинул алгоритм вращения и написал скетч. Причем в варианте как в даташите (и свой по логике A-AB-B-BA, в скетче закоментено)
    Вот текст
    int motorPin1 = 4;
    int motorPin2 = 5;
    int motorPin3 = 6;
    int motorPin4 = 7;
    int delayTime = 10;

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

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

    Renat Нерд

    Фуу. заработало!
    Вот с такой расстановкой сигналов.
    int motorPin1 = 4;
    int motorPin2 = 5;
    int motorPin3 = 6;
    int motorPin4 = 7;
    int delayTime = 5;

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

    void loop() {
    digitalWrite(motorPin1, HIGH);
    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,LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3,HIGH);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    /*digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3,HIGH );
    digitalWrite(motorPin4, LOW);
    delay(delayTime);*/
    }
     
  14. Dmitriy Kunin

    Dmitriy Kunin Гик

    Пара вопросов:
    1. Насколько силён получился мотор? (Чиста пальцами остановить)
    2. Сильно греется мост на шилде?
     
  15. -Mark-

    -Mark- Гик

    поправлю уж...я хоть и нупь,но!!! delay (1000) - это задержка на секунду...у Вас стоит delay (delayTime)...в скетче вы какое число ему присвоили??? )))))
     
    Последнее редактирование: 11 ноя 2013
  16. Equivalent

    Equivalent Нуб

    Читайте выше, там delayTime присваивается значение 5
     
  17. Equivalent

    Equivalent Нуб

    Кстати да, ИМХО слишком маленькая задержка 5 миллисек перед изменением порядка подачи напряжения на катушки. Мотор просто не успевает среагировать. Поставьте больше, поэкспериментируйте с этим значением.
     
  18. -Mark-

    -Mark- Гик

    так это я и заметил )))) при переключении режимов (направление вращения) мотор будет дергаться а не вращаться )))
     
  19. qwenya77

    qwenya77 Нерд


    Попробую Ваш вариант вечером, после отпишусь
     
  20. Renat

    Renat Нерд

    Моторчик при int delayTime = 5; конечно слабоватый, но если поставить 10, то пальцами остановит тяжело. При int delayTime = 2 мотор жужит, но если его чуть раскрутить то он крутится, при int delayTime = 1 он уже просто жужжит.
    Крутил мотор около часа без нагрузки , микруха шилда фактически не нагрелась, а вот моторчик потеплел немного.