Добрый вечер, сегодня взял у вас две сервы FS5106B. Обе вроде работают, правда при удержании угла звук как у трансформатора и вибрируют, но это ладно. Написал скеч, что бы при нажатии кнопки серва поворачивался на 0 градусов, если сейчас стоит 180 и наоборот. Срабатывает это через раз, хотя кнопку притянул к земле, а так же поставил тестовый светодиод, который загорается при нажатии(может дело в помехах, забыл взять триггер Шмитта ). Но основная проблема, что при работе этого кода с участием одной из этих серв Arduino уходит в перезагрузку (перед этим гул в серве мелено уменьшается). Если надо могу приложить код, фото схемы, и видео.
UPD. Теперь и со второй сервой проблемы: Треск при повороте к 0 градусам, треск начинает с 3 градусов (т.е. в самом конце поворота к 0). Гул и вибрация пропадает, когда выставил ее на 90 градусов(без нагрузки), Заметно греется низ сервы. Я не претендую на какие-то сверх требования к этой серве, т.к. есть более дорогие и качественные аналоги, но она же должна хоть как-то нормально работать =)
Код выложил на Pastebin, на мой взгляд там читать легче( http://pastebin.com/zqm0ThcW). Принципиальная схема и собранная на плате: Видео: Когда снимал видео, вторая серва перестала трещать при приближении к 0. Но начала первая, это слышно.
Для начала добавьте отладочный вывод в монитор: Код (Text): Serial.print("..."); Некоторые сервы нервно себя ведут в крайних положениях, попробуйте 10 и 170, например.
Добавил вывод в порт в тело условия: Код (Text): if (digitalRead(pinSwitch) == HIGH){ Serial.print("1"); ...... Светодиод загорается, но "1" не всегда выводится, но это, наверное можно списать на помехи. Можно попробовать использовать аналоговый вход и смотреть "величину сигнала". По Вашему совету сделал 170 и 10, серва перестала жужать и вибрировать. Спасибо, запомню это. Это болезнь всех серв или бюджетников? Серва #2 вроде при этих условиях нормально работает, у сервы #1, жужание начинается с 165 градусов. Очень жаль, что сервы так работают, это считается браком?
Подключил кнопку к аналоговому порту, помех нет, когда кнопка не нажата analogRead(); возвращает 0, при нажатии 1023, что логично. Но я понял в чем ошибка(буквально сейчас), в неправильном коде функции loop. У меня есть код: Код (Text): if (a180 == true){ myservo1.write(160); delay(2000); }else{ myservo1.write(10); delay(2000); } Причина - delay(2000);, который выполняется в любом случае. Но насчет серв вопрос еще открыт =)
Вместо delay() используйте millis() и переменную для хранения времени начала отсчета. Сильно дорогие сервы не трогал, но обычные, вроде "авиамодельных", этим часто страдают. У меня 4 сервы из самолета - нервничают как хотят )) Просто учитывайте это в механике и не используйте крайние положения. Не думаю, что из-за этого их по гарантии заменят По сервам лучше покурить робофорум - там они должны быть обсосаны со всех сторон.
Сейчас попробовал двумя сервами под нагрузкой управлять, сервы питаются от Arduino. Arduino в ребут уходит, когда обе сервы с нагрузкой крутятся. Попробоватл мультиметром мерить напряжение вывода 5v на Aurdino, перед ребутом падение до 3 вольт. Запитал сервы отдельно, китайским БП с возможностью установки напряжения, у него тоже падение напряжение происходит, чуть ли не до 1,5 вольт (с 5,5В). Могу предположить, что это косяки китайского БП, надо брать лабораторный =) Как я понимаю нет смысла управлять сервой через транзистор(если питать их от другого БП), или все же есть? Да и вообще как-то странно, что бы питать серву отдельно, везде читал, что напрямую с ножки МК можно.
А китайский БП сколько тока умеет выдавать? Arduino питается от USB? Говорят, что данные сервы жрут до 400мА. USB выдает до 500мА.
Каюсь, самое очевидное не догадался проверить. Китайский БП, если верить кривой наклейке на корпусе, должен выдавать до 500мА. Обе сервы у меня под нагрузкой, поэтому в худшем случае жрут 800мА, при этом питаются от Arduino, которая подключена к USB. Запитал одну серву от китайского БП, другую оставил питаться от Arduino. В итоге при предельных нагрузках китайский БП не справляется, падение напряжение с 5,5В до 1,5В =) В той теме, которую вы указали, 18 серв потребляют 7 ампер, как я понимаю батарейки с такой нагрузкой не справятся, или я ошибаюсь?