Как сделать робота объезжающего препятствия?

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем АрТуР02, 12 мар 2014.

  1. АрТуР02

    АрТуР02 Нуб

    Как сделать робота объезжающего препятствие? Я просто новичок в этом деле, и у меня есть: arduino uno rev 3, микросхема l293dne, моторчики, Микросервопривод FS90 и ультразвуковой датчик HC-SR04. Я бы хотел попросить у вас схему подключения деталей и код, для этого робота.
     
  2. omadonex

    omadonex Нерд

    Есть великолепная статья на хабре по этой теме http://habrahabr.ru/post/142156/

    П.С.: я сейчас похожей темой сам занимаюсь, только я решил организовать управление с компьютера/телефона/планшета по WiFi. Статья отлично расскажет то, что нужно знать :)
     
  3. АрТуР02

    АрТуР02 Нуб

    я смотрел эту статью но мне она не очень понятна.
     
  4. omadonex

    omadonex Нерд

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

    В общем совет - потести каждую составляющую в отдельности. Придет понимание как они работают, а потом и поймешь статью до конца.
     
  5. omadonex

    omadonex Нерд

    Смотри при подключении моторов важно следующее:
    Микросхема - 16 пинов.
    Особняком стоят 8й и 16й пины. 8й пин - сюда подаешь напряжение, питающее моторы. (Питание на моторы должно быть отдельное). 16й пин - сюда ты подаешь 5В от Ардуино.
    Пины 1 - 7 абсолютно идентичны пинам 9 - 15.

    На 1й ты подключаешь пин с PWM (у меня 10 на Ардуино)
    На 2й и 7й ты подключаешь два любых цифровых пина (у меня 3 и 4 на Ардуино). Подавая попеременно, то Low, то High ты заставишь мотор крутиться в разные стороны.
    В 3й и 6й ты подключаешь провода от самого мотора.
    4й и 5й ты просто соединяешь с землей.

    Пины 9 - 15 абсолютно также (это подключение второго мотора) - можешь по распиновке посмотреть.
    Теперь смотри, чтобы включить первый мотор нужно подать HIGH на 1й пин (идентично на 9й для второго). А вот в какую сторону он будет крутиться - зависит от того, что ты подаешь на 2й и 7й пины. (Как он будет крутиться можно посмотреть в той же статье, там есть табличка)

    П.С.: все земли должны быть соединены (и от Ардуино, и от батареек)
     
    Последнее редактирование: 12 мар 2014
  6. АрТуР02

    АрТуР02 Нуб

    я подключил пока 1 мотор (см. фото) все правильно?
     
  7. omadonex

    omadonex Нерд

    Не вижу фото
     
  8. АрТуР02

    АрТуР02 Нуб

    вот фото
     

    Вложения:

    • мотор.jpg
      мотор.jpg
      Размер файла:
      480,2 КБ
      Просмотров:
      1.095
    • мотор1.jpg
      мотор1.jpg
      Размер файла:
      733,6 КБ
      Просмотров:
      1.229
  9. omadonex

    omadonex Нерд

    Верхний ряд крайний правый пин - это пин №9 - сюда надо подключать пин с PWM от Arduino для второго мотора (так как у тебя 1 мотор - сюда ничего не надо).
    Верхний ряд крайний левый пин (у тебя он не подключен) - это пин №16 - сюда надо 5В от Ардуино.
    Верхний ряд два пина по центру - желательно тоже соединить с землей (я честно говоря не пробовал оставлять их неподключенными).

    Нижний ряд первый пин слева (оранжевый провод) - должен подключаться к пину с PWM на Ардуино например 10.
    Нижний ряд 2 и 7 пины (два длинных красных провода) должны идти к цифровым пинам Ардуино (например 3 и 4).
    Нижний ряд крайний правый пин (короткий желтый провод) - сюда внешнее питание (например от батареек)
     
  10. omadonex

    omadonex Нерд

    Земли соедини от батарейки и Ардуино обязательно!

    Остальное все правильно, кроме верхнего ряда, как исправить я написал. Выложи фотки как сделаешь
     
  11. АрТуР02

    АрТуР02 Нуб

    Спасибо, пока попробую сделать робота по той статье. Если будут вопросы можно спросить у тебя?
     
  12. omadonex

    omadonex Нерд

    Можешь попробовать заюзать скетч:

    Код (Text):
    const int motor1EnablePin = 10;
    const int motor1Pin1 = 3;
    const int motor1Pin2 = 3;

    void setup() {
      pinMode(motor1EnablePin, OUTPUT);
      pinMode(motor1Pin1, OUTPUT);
      pinMode(motor1Pin2, OUTPUT);
    }

    void loop() {
      //Крутим в одну сторону
      digitalWrite(motor1EnablePin, HIGH);
      digitalWrite(motor1Pin1, HIGH);
      digitalWrite(motor1Pin2, LOW);
     
      delay(3000);
     
      //Крутим в другую сторону
      digitalWrite(motor1EnablePin, HIGH);
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, HIGH);
     
      delay(3000);
    }
     
  13. АрТуР02

    АрТуР02 Нуб

    Спасибо ))
     
  14. АрТуР02

    АрТуР02 Нуб

    А еще вопрос: сколько В нужно подавать на моторы
     
  15. omadonex

    omadonex Нерд

    Не за что :)

    Зависит от мотора, можно и спалить :)
    Я думаю чисто по внешнему виду для твоего мотора норм будет 4.5 - 6В, но это только предположение :)
    Крону для питания моторов лучше не использовать. Кроны обычно дают ~200 - 300 mAh, так что посадишь ее очень быстро, лучше обычные AA или AAA аккумуляторы
     
  16. АрТуР02

    АрТуР02 Нуб

    а какой примерно конденсатор стоит на той статье?
     
  17. omadonex

    omadonex Нерд

    электролитический 10 - 100 мкФ 50В. Я поставил 50мкФ 50В
     
    Последнее редактирование: 19 мар 2014
  18. АрТуР02

    АрТуР02 Нуб

    Спасибо, а подойдет ли код из той статьи для робота для меня, просто у него ардуино нано а у меня уно
     
  19. omadonex

    omadonex Нерд

    Я честно говоря тот код не смотрел. Но разницы не должно быть, что уно, что нано. Разве, что в настройках среды не забудь поставить, что у тебя уно
     
  20. АрТуР02

    АрТуР02 Нуб

    спасибо