Странное поведение при разных источниках питания.

Тема в разделе "Arduino & Shields", создана пользователем blackcatw, 20 июн 2015.

  1. blackcatw

    blackcatw Нерд

    Купил шасси и драйвер моторов. собрал и на базе примера с IR датчиком свой экземпляр для управления пультом.
    Код (Text):
    #include <IRremote.h>
    #include <CyberLib.h>
    #include <avr/wdt.h>

    #define robot_pins {D4_Out; D5_Out; D6_Out; D7_Out;}
    #define robot_go {D4_Low; D5_High; D6_High; D7_Low;}
    #define robot_back {D4_High; D5_Low; D6_Low; D7_High;}
    #define robot_left  {D4_Low; D5_High; D6_Low; D7_Low;}
    #define robot_right {D4_Low; D5_Low; D6_High; D7_Low;}
    #define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}

    IRrecv irrecv(8);  //вход для ик приемника
    decode_results results;
    unsigned long  ir_go = 0xFF619E ; // 0xFF817E - вверх (0xFF619E - 2) вперёд
    unsigned long  ir_back = 0xFF718E ; // 0xFF11EE - вниз(0xFF718E - 8) назад
    unsigned long  ir_left = 0xFFD12E ; // 0xFF09F6 - влево (0xFFD12E - 4) влево
    unsigned long  ir_right = 0xFF916E ; // 0xFF41BE - вправо (0xFF916E - 6) вправо
    unsigned long  ir_stop = 0xFF51AE ; // 0xFF9966 - ок (0xFF51AE - 5) стоп
    unsigned long  ir_tmp ;


    void setup()
    {
      robot_pins; //управление мотрами
      D11_Out; //пищалкка
      ir_tmp = 0xFFFFFF;

      robot_stop;
     
      irrecv.enableIRIn(); // включить приемник
      irrecv.blink13(true);  // включить мигание светодиода при приеме
     
     
        beep(50,100);
        beep(50,1000);
        beep(50,500);
        beep(50,300);
        beep(50,500);
        beep(50,600);
        beep(50,200);
        beep(50,170);
        beep(50,900);
        beep(50,1000);


    wdt_enable (WDTO_8S);    //Сторожевая собака 8сек.      
    }
     
    void loop()
    {  Start

      if (irrecv.decode(&results))  //если был сигнал с пульта
        {
            ir_tmp=results.value;
           
          if(ir_go==ir_tmp) //если принятый код равен коду который в памяти то вперед
            {
              robot_go;
              beep(100,300);
              beep(100,200);
              beep(100,300);
            } else
           
          if(ir_back==ir_tmp) //если принятый код равен коду который в памяти то назад
            {
              robot_back;
              beep(100,400);
            beep(100,200);
            } else
           
          if(ir_left==ir_tmp) //если принятый код равен коду который в памяти то назад
            {
              robot_right;
              beep(100,450);
            beep(100,200);
            } else
           
          if(ir_right==ir_tmp) //если принятый код равен коду который в памяти то назад
            {
              robot_left;
              beep(100,500);
            beep(100,200);
            } else      
           
          if(ir_stop==ir_tmp) //если принятый код равен коду который в памяти то стоп
            {
            robot_stop;
            beep(10,300);
            beep(10,400);
            beep(10,300);
            }
        irrecv.resume();            //очистить входящий буфер
       
        }
     
    wdt_reset(); //покормить собаку, что бы она не сбежала  
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void beep(byte dur, word frq)
    {
      dur=(1000/frq)*dur;  //расчет длительности бипа
      for(byte i=0; i<dur; i++)
      {
      D11_High;
      delay_us(frq);
      D11_Low;
      delay_us(frq);
      }
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////
    И, зараза, работает нормально только тогда, когда подключен шнурок USB от компьютера. А вот от батареек никак не хочет. То через раз "понимает" команды с пульта, а то вообще только первую команду... И всё "зависает"... Т.е. нажал кнопку для того чтобы ехал вперёд. Едет вперёд, но на другие команда ВООБЩЕ никак не реагирует...
    Как к USB подключится, то всё нормально.
    Почему так? Кто-то может подсказать?
     
  2. Arduiner001

    Arduiner001 Гик

    Если используете Крону, то учтите, что ток Кроны маленький
    Может быть по этому и не работает!!!
     
  3. blackcatw

    blackcatw Нерд

    Там в комплекте к шасси бокс на 4-е пальчиковых батарейки АА.
     
  4. geher

    geher Гуру

    Как организовано питание всего этого добра? В частности интересно, как подключен к питанию драйвер моторов?
    Второе, при подключении к USB батареи и моторы отключены? Как при этом оценивается работоспособность системы, по пищанию beep?
     
  5. X-Dron

    X-Dron Гик

    Ардуино китайское? Сдох регулятор напряжения AMS1117. На своих платах уже на двух заменил. Симптомы: если отключить всю периферию с платы, то на пятивольтовой линии будет только 4.5вольта. Если добавить, скажем, приемник 433МГц, то падает до 4.2В. Добавление модуля реле просаживает до 4.0В. При попытке включения реле просаживается до ребута контроллера.
    Дохнет при переполюсовке питания на входе или при КЗ на шине 5В.
    Лечится перепайкой стабилизатора на LM1117MPX 5.0V или аналог.
    Есть так же шилды с внешним питанием. У них на входе разъем питания, который запитывает электронику шилда и перифирию (моторы) и так же выдает питание через свой регулятор напряжения на линию 5В сборки сборки.
     
  6. X-Dron

    X-Dron Гик

    С телефона не удается редактировать. Поэтому новый пост.
    Выпаивать нужно осторожно, чтобы не повредить дорожки. Лучше просто греть корпус, одновременно пытаясь снять пинцетом.
     
  7. blackcatw

    blackcatw Нерд

    И arduino плата и драйвер моторов подключается к питанию в одном месте. Один GND к минусу а Vin (Arduino) VCC (драйвер моторов) к плюсу.
     
  8. blackcatw

    blackcatw Нерд

    Пробовал несколько разных плат. Но симптомы везде одинаковые. Поэтому вряд ли сдох регулятор напряжения. Я могу предположить, что не хватает напряжения по току, но как это "лечить" не понимаю. И ведь при подключении питания от компьютера хватает. Почему не хватает при подключении бокса с батарейками?
     
  9. Arduiner001

    Arduiner001 Гик

    4 пальчиковые батарейки выдают 6 вольт, ардуине нужно в минимум 9, а в крайним случае - 7.
     
  10. blackcatw

    blackcatw Нерд

    Но по USB порту подаётся только 5 вольт. Но никак не 7 или 9. Есть бокс на 10 батареек. Там будет уже 15 вольт. Но как тогда лучше подцепить питание драйвера моторов? Запитать всё из одной точки или через 5-и вольтовый выход на ардуине?
     
  11. Arduiner001

    Arduiner001 Гик

    Вы не понимаете как устроена питательная часть ардуины. После джека питания
    ([​IMG] ) ток попадает на стабилизатор, на входе которого 9-12 (а в крайнем случае 7-18) вольт, на выходе же - 5 вольт. 5 вольт нужно мкроконтроллеру([​IMG]). А с входа USB ровно 5 вольт, поэтому стабилизатор не нужен. Если на джеке питания
    ([​IMG] ) будет меньше 7 вольт, вся система - на смарку! Ничего не будет работать!
     
  12. geher

    geher Гуру

    Короче, при питании от батареек нужно подключать к VIn ардуины через повышающий преобразователь, или добавить еще батареек к блоку последовательно.
     
    Arduiner001 нравится это.
  13. Arduiner001

    Arduiner001 Гик

    Да!
     
  14. geher

    geher Гуру

    А драйвер моторов выдержит 15 В? А моторы, подключенные к драйверу, выдержат?
    Если да, то можно питать из одной точки. Только всяко лучше как-нибудь снизить напряжение до 12 В (а еще лучше до 7.5 В).
    Хоть и пишут, что уна держит до 20 В на входе, но все лишнее будет уходить в тепло. Да и перегреться регулятор может.
    От пина 5 В ардуины драйвер лучше не питать. Слишком большой ток для регулятора напряжения ардуины будет.
     
  15. vvr

    vvr Инженерище

    4 пальчиковых АА аккумулятора на 5 вольт дуни и вперёд (получится 4.8вольта - дуня работает)
     
  16. Arduiner001

    Arduiner001 Гик

    Да и мотор скорее всего не на 5 вольт.
     
  17. Deniss

    Deniss Гик

    Там же в теме (которую сам показал) написано как подключать батарею
    [​IMG]
    Еще параллельно плате можно запитать саму ардуину
     
  18. Deniss

    Deniss Гик

    Мотор как раз на 5v
     
  19. blackcatw

    blackcatw Нерд

    Ну это уна а про мини 3.0?
     
  20. Deniss

    Deniss Гик

    В про мини подключай с торца, куда переходник usb to com подключаешь