Сервопривод неправильно работает
- Войдите на сайт для отправки комментариев
Сб, 09/03/2019 - 23:54
День добрый, появилась такая проблема с недавно купленной сервой 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. И с каждым переключением количество возвращений увеличивается. При повторном разборе всё снова нормально
Не сталкивался с таким поведением. Питание, подключение .. все сделано "честно"? Какова нагрузка на серву, нет ли затыков по питанию на Ардуино? .. надеюсь это всё проверено, раз полезли разбирать и смазывать..
У нас уже давным-давно штатный 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в. Помогает, если какая-то нагрузка на короткий период просаживает питание в ноль.