Сервопривод неправильно работает

cezarus
Offline
Зарегистрирован: 07.01.2019

День добрый, появилась такая проблема с недавно купленной сервой MG995. Сначала она не работала вообще, плюс, если механически руками крутить, докручивалась до определённой точки и ни туда ни обратно. Разобрал, смазал, залил скетч (предварительно проверенный на sg90). Тумблер переключает с 0 до 160:

#include <Servo.h>
Servo ser;
int serpin = 33;
int toggle = 35;

void setup() {
  ser.attach(serpin);
   pinMode(toggle, INPUT);
  

}

void loop() {

  boolean wristPos = digitalRead(toggle);
  if(wristPos)
  {
    ser.write(160);
  }
  else
  {
    ser.write(0);
  }

}

В разобраном виде работает нормально, но как только собираю, начинает глючить: первые несколько переключений всё правильно, затем доходит до 160, возвращается до 0, потом снова до 160. И с каждым переключением количество возвращений увеличивается. При повторном разборе всё снова нормально

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не сталкивался с таким поведением. Питание, подключение .. все сделано "честно"? Какова нагрузка на серву, нет ли затыков по питанию на Ардуино? .. надеюсь это всё проверено, раз полезли разбирать и смазывать..

У нас уже давным-давно штатный setup() имеет такую вставку:

#define pinLed 13

void doRestarted()
{
  pinMode(pinLed, OUTPUT);
  digitalWrite(pinLed, LOW);
  do{
    everyMillis(250, {
      digitalWrite(pinLed, !digitalRead(pinLed)); 
    });
  }while( millis() < 3000UL );
}

void setup()
{
  doRestarted();
  // ... далее продолжаем настройки ..
}

Как-то так, давно не лазил в это место .. суть в том, что при любой перезагрузке Ардуино платы, она 3 сек. мигает встроенным светодиодом перед началом работы. В случае косяков и перезагрузок по питанию, это сильно помогает: плата внезапно "замирает" и начинает моргать светодиодом.

Были усохшие аккумуляторы Ni-MH, которые показывали что "заряжены", но в нагрузку не отдавали больше 2А от слова "совсем". Подключаешь - вроде все работает .. вот, пока не воткнули такую фигнюшку, так и гадал "что происходит".

Теперь не только это стоит, но ещё и питание на плату в обязательном порядке подавется через диод, включенный в прямом направлении и ставим доп. конденсатор на входе в 1000,0х16в. Помогает, если какая-то нагрузка на короткий период просаживает питание в ноль.