Пропадает com-порт

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Mihay, 26 июл 2016.

  1. Mihay

    Mihay Гик

    Подключил 3 сервопривода, и дал дополнительное питание на ардуино. Написал небольшой скетч управления сервоприводами через Serial с ПК. Но непонятно почему стал отваливаться Com-порт! Причем закономерности нет. Может работать долго, а может через минуту перестать!
    Вот кусок кода:
    Код (C++):

    #include <Servo.h>

    #define SENSOR_PIN9 9
    #define SENSOR_PIN10 10
    #define SENSOR_PIN11 11
    boolean Pr = false;
    boolean Pr_s = false;
    Servo myservo1;
    Servo myservo2;
    Servo myservo3;

    char a[10];
    int b, i = 0;
    int s;
    boolean End = 0;
    void setup()
    {
      Serial.begin(19200);
      analogReference(DEFAULT);
      myservo1.attach(SENSOR_PIN9, 544, 2900);
      myservo2.attach(SENSOR_PIN10, 544, 2900);
      myservo3.attach(SENSOR_PIN11, 544, 2900);

    }

    void loop()
    {
      if(Serial.available())
      {
         delay(2);
         a[i] = Serial.read();
         i++;
         End = 1;
    }
    else if(End == 1)
    {
       a[i] = 0;
       b = atoi(a);
       s = b;
       b = 0;
       i = 0;
       End = 0;  
    }
    if (s==1)
    {
        Pr = true;
    }
        if (s==2)
        {
          Pr = false;
          myservo1.write(60);
          myservo2.write(60);  // Отключать при отключении питания
          myservo3.write(60);  // Отключать при отключении питания
        }
        if ((s > 10)&&(s<20))
        {
            num_s = s;
            //Pr_s = true;
        }
        if (s>=20)
        {
           if (num_s == 11)
           {
              myservo1.write(s-20);
           }
           if (num_s == 12)
           {
              myservo2.write(s-20);
           }
           if (num_s == 13)
           {
              myservo3.write(s-20);
           }
        }
       

    }
     
    Не знаю в чем проблема, Может из-за дополнительного питания? Никогда такого не было а тут бац!
    Кто знает, подскажите пожалуйста!
     
    Последнее редактирование: 27 июл 2016
  2. DIYMan

    DIYMan Guest

    Вы привели неполный код.
     
  3. Mihay

    Mihay Гик

    Вот объявления перемеенных
    Вроде бы дополнил я недостающий код
     
  4. Mihay

    Mihay Гик

    http://amperka.ru/product/wall-plug-1a

    Купил себе этот блок питания - подключил: com-порт пропадает при первом обращении к серводвигателю (FT2312M диапазон 0 - 120 градусов). На работе нашел блок питания левый - com-порт не пропадает до тех пор пока все двигатели не начнут работать с максимальной скоростью туда-сюда. Получается дело в питании! Только вот почему Новый блок питания такой маломощный????
     
  5. DIYMan

    DIYMan Guest

    Да, дело может быть в питании, скорее всего даже, т.к. навскидку в коде блох не видно.
     
  6. Onkel

    Onkel Гуру

    запросто может быть связано с качеством шнурка, тогда любой чих приводит к вылету ком - порта. У меня на более- менее серьезных приборах usb 485 интерфейс воткнут прямо в порт на компе (длина проводов минимальная получается), а связь приборов с пк по rs485. Ну и обложите блок питания и сервы кондерами 0,1 u керамикой и 330 u электролитами. А также посмотрите, нет ли петель по земле в питании серв. Опасная штука.