Не получается управлять серво приводом

Тема в разделе "Arduino & Shields", создана пользователем yasenkov, 15 фев 2022.

  1. yasenkov

    yasenkov Нуб

    Серво привод как то странно дёргается в момент простоя. Так всё вроде бы работает , может кто знает как убрать эти подёргивания :

    Код (C++):

    #include <Servo.h>
    #include <IBusBM.h>

    Servo myservo;
    IBusBM ibus;

    int val;  
    int readChannel(byte channelInput, int minLimit, int maxLimit, int defaultValue) {
      uint16_t ch = ibus.readChannel(channelInput);
        if (ch < 100) return defaultValue;
      return map(ch, 1000, 2000, minLimit, maxLimit);
      }
      bool readSwitch(byte channelInput, bool defaultValue) {
      int intDefaultValue = (defaultValue) ? 100 : 0;
      int ch = readChannel(channelInput, 0, 100, intDefaultValue);
      return (ch > 50);
    }


    void setup() {
      myservo.attach(3);
      Serial.begin(115200);
      ibus.begin(Serial1);
     
      }

    void loop() {
      val =  readChannel(9, -100, 100, 0);
      val = map(val, -100, 100, 0, 180);    
      myservo.write(val);
      Serial.println(readChannel(9, -100, 100, 0));

    delay(100);                        
    }
    вот собственно видео поведения
    https://cloud.mail.ru/public/htJS/DSYa845Gc
     
  2. User248

    User248 Гик

    Последнее редактирование: 16 фев 2022
  3. 64detali

    64detali Нерд

    По большей части это такое качество сервопривода, более менее можно утихомирить обеспечив питание с меньшими пульсациями:
    1. электролит прямо на питание сервы не менее 2000,0 мкФх16В
    2. сам источник питания сменить
    Могу ссылку скинуть с нормальными MG996, но там от 4х штук заказ.