Проблема с приводом постоянного вращения

Тема в разделе "Arduino & Shields", создана пользователем kilroy, 6 июн 2013.

  1. kilroy

    kilroy Нуб

    Купил вот такой привод http://amperka.ru/collection/servo/product/servo-fs5113r

    К примеру вставляю вот такой код:
    PHP:
    #include <Servo.h>

    Servo myservo;  // создаём объект для контроля сервы
         
    void setup()
    {
      myservo.attach(9);  // серва подключена к 9-му пину
       
    }
     
    void loop()
    {
      myservo.write(0);
     delay(350);
      myservo.write(90); // остановить вращение.
      delay(15000);  
        myservo.write(180);
      delay(350);  
     myservo.write(90); // остановить вращение.
      delay(3000);
       myservo.write(0);
     delay(350);
      myservo.write(90); //остановить вращение.
      delay(1000);  
        myservo.write(180);
      delay(350);  
     myservo.write(90); // остановить вращение.
      delay(3000);

     }
    почему выполняется только первые три команды, вот эти
    PHP:
     myservo.write(0);
     delay(350);
      myservo.write(90); //остановить вращение.
      delay(15000);  
        myservo.write(180);
      delay(350);  
    и дальше они по кругу идут.
    не понимаю...
     
  2. kilroy

    kilroy Нуб

    Прям мистика какая то.
    Есть еще у меня 2 сервопривода обычных.
    Думаю, дай хоть их попробую подключить(ранее работали нормально), подключаю, вставляю скетч из примеров.
    Нуль эмоций. Ни один ни второй. Вообще не крутятся.
    Нагнетающая обстановка накаляется.
    Что бы наверняка, поигрался со светодиодами на тех пинах на которых тестил сервы - все работает.
    У меня паника...
     
  3. XCB

    XCB Гик

    Может с питанием серв что то не так? если вдруг питаете их от +5 с платы контроллера то может виснуть.
    ну если вдруг ошибка в вашем скетче и можно загрузить скетч из папки примеров arduino, уж они должны корректно работать
     
  4. kilroy

    kilroy Нуб

    Да, питаю с платы.
    Но вчера еще было норм все, сегодня какой то бардак.
    Попробую с отдельным питанием вечером.
     
  5. Mitrandir

    Mitrandir Гуру

    когда питал свою серву от +5 ардуины с мк творилось черти что, даже от питания от кроны.
     
  6. Megakoteyka

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

    Так ведь крона вроде не умеет много тока отдавать, у нее совершенно другое назначение - долго жить без просадки напряжения, отдавая мелкий ток. Где-то обсуждалось уже.
     
  7. roggedhorse

    roggedhorse Гик



    Откуда именно питаете серву ?
    С какой ноги ардуино ?
     
  8. roggedhorse

    roggedhorse Гик

    Микроконтроллер скорее всего уходит в рестарт.
    Чтобы убедиться в этом, поставьте в самом начале функции setup() следующие строки:

    Код (C):

    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
     
    Если МК уходит в рестарт, то светодиод будет моргать (загораться при старте и тухнуть при рестарте). Если нет рестарта - будет гореть все время
     
  9. kilroy

    kilroy Нуб

    Как то я немного запутался...не понимаю логику работы обоих серв.
    Прошиваю скетч Sweep.
    Работает как обычный серв так и с постоянным вращением, все ок.
    Вставляю свой скетч.
    Обычный серв нуль эмоций.
    С постоянным вращением - выполняет 3 команды и уходит в рестарт(попробовал 13 пин, он помигивает).

    Питаю серву от МК, я прошиваю через ПК, потом подключаю МК через усб к внешнему источнику питания +5 (блок питания от телефона с усб разьемом).
    Питаю серв соотвественно от ноги +5 с МК.

    UPD:
    Беру пример Sweep, меняю в нем любое значение, параметр, пытаюсь просто изменить хоть чуть чуть - сразу же идут ресеты МК.
    Как так??
    Чуть изменил код, сделал остановку и задержку на 3 сек - все. Он все равно ресетится, ему что то не нравиться...
    Код (C):
    #include <Servo.h>
     
    Servo myservo;
     
    int pos = 90;  
     
    void setup()
    {
      myservo.attach(9);  
    }
     
     
    void loop()
    {
      for(pos = 0; pos < 180; pos += 1)
      {                            
        myservo.write(pos);        
        delay(15);                   
      }
      myservo.write(90);           
      delay(3000);
      for(pos = 180; pos>=1; pos-=1)     
      {                            
        myservo.write(pos);          
        delay(15);                   
      }
    }
     
  10. roggedhorse

    roggedhorse Гик

    Попробуйте не использовать USB блок питания. Стандартный USB порт ПК позволяет нагрузить на него 500 мА. Этого вполне должно хватить для питания сервы. Т.е. после прошивки скетча нет надобности переключаться на другой источник питания