Добрый вечер. Подключил три одинаковых сервы mg996r к Nano к пинам 7, 11, 12. Один двигатель не реагирует на сигнал. Подключил к тестеру - все три крутятся как положено. Перепробовал во всех вариантах, один и два мотора к разным пинам, повышал/понижал напряжение, именно один конкретный двигатель молчит. Опять же, тестер его крутит. Как можно его ещё проверить? Померял напряжение на выходе с тестера на двух разных моторах - всё в порядке, одинаково.
как это? какие конкретно напряжения? Как? Такое ощущение, что автору ответ не нужен. Всё клещами надо вытягивать.
Пардон, сейчас расскажу всё как на духу. 220В - БП 12В - далее с помощью вот такого волшебного устройства (к слову сказать, ним же и менял напряжение от 5 до 6 В). Напряжение на входе сервотестера было 4.99 В, на выходе 4.94. p.s. Ранее эта схема работала и даже от двух крон. В защиту обвиняемого могу сказать, что мотор бездействовал месяц. Может смазка подзастыла? Планирую ток еще померять. Предполагаю, что сигнал с тестера посильнее, чем с платы.
Из перечисленных пинов только 11-ый умеет PWM -- т.е. должна работать только одна серва. Или может Вы подключили к 7, 10 и 11-му?
Блин работает. Я сейчас здесь сижу свою проблему ищу, возможно это ответ. В общем подключил серву на 7 пин, у меня все отлично работает, у заказчика моросит время от времени. Хотя она по сути не должна вообще работать на этом пине?
Суть в том, что сервой нужно управлять с помощью PWM (по-русски ШИМ -- широтно-импульсная модуляция). В Arduino есть аппаратная поддержка PWM на некоторых пинах. На этих пинах сервы будут работать нормально (но нужно принять во внимание пины таймера Timer0 -- он используется для RTC -- поэтому могут быть особенности). На остальных пинах PWM реализуется программно (как именно -- надо смотреть используемую бибилотеку Servo, до определённой версии эта библиотека умела только на 9 и 10 пинах управять сервами, потом научилась на всех). Но программная реализация -- это не аппаратная -- там будут, так называемые "джиттеры" -- т.е. задержки в переключении порта. Всё зависит от остальной прошивки. Поэтому на пинах без аппаратной поддержки PWM сервы могут и не работать. Или работать со сбоями.
Вроде всё продумал: питание, пайку, компановку, простоту подключения и даже надежность - обкатывал устройство у себя несколько месяцев, а на такой ерунде споткнулся. Век живи, век учись. Спасибо большое, попробую перекинуть серву на 11й пин.
Серва управляется не просто PWM сигналом, а сигналом определённой частоты/периода. А так же может играть роль величина "джиттера". Для той же mg996r, что у ТС, нужен период 50 миллисекунд и "джиттер" должен быть не более 5 микросекунд. Сходу не скажу, может ли Arduino выдать такую частоту -- надо считать. Если память не изменяет, нельзя сделать период больше ~16 миллисекунд (а нужно 50). Хотя серва вроде как нормально переваривает повышенную частоту PWM (уменьшенный период).
Вся проблема, что в сети полно примеров, где цепляют сервы на любой цифровой порт и не объясняют такой специфики, всё надо перепроверять.
На таймере Timer1 (пины 9 и 10) можно сделать период до ~65 мс. Т.е. теоретически можно получить заветные 50 мс, но только на одном пине. Речь про аппаратную поддержку.
Этого можно добиться программно (т.е. на любом цифровом пине), но нужно внимательно следить за кодом всей прошивки и используемых библиотек. Не должно быть запрета прерываний, долгих обработчиков прерываний и т.п. Иначе периоды и "джиттеры" на программных PWM начнут "гулять".
Лучше исключить эту ситуацию подключением к специализированному пину. Самое главное проблемы начинаются как раз при обработке прерываний, ардуинка в мониторе порта нормально отрабатывает нужный угол, а серва не реагирует...
Логическое продолжение - отказ от дурины. Как только вы это сделаете, пред вами предстанет абсолютно другой мир. Мир полный красок, волшебства и поистине безграничных возможностей. Дурина - это кирпичные стены со всех сторон. И без окон. Не хватает ШИМ выводов? Attiny861 в помощь. Хочется построить ИИП на контроллере или рулить мостом полностью с МК - Attiny 1-ой серии к вашим услугам. К слову, все библиотеки доступны и в обычном варианте. А также куча других, которых нет в дурине.
Благородные доны, прошу заметить, мы несколько отвлеклись. Так вот, я понятия не имею, что там в мониторе порта, но наверняка будет, то, что я туда послал, а не то, что чувствует мотор при этом. Так же напоминаю, что я подключал хворый мотор ко всем из перечисленных пинов - тишина. Остальные двое моторов прекрасно себя чувствуют на 7 пине.
библиотека servo позволяет подключать к любому пину и так до 10 серв. там всё очень просто - сервы обрабатываются по очереди по таймеру по теме - если все другие сервы работают на всех пинах, а эта не работает ни на одном, то это как бы намекает. ну либо это чудо
Да не, 7,11,12. Впрочем, надо перепроверить, но я ж говорю, скетч не переделывал, а там именно эти порты.