Проблема с серводвигателем

Тема в разделе "Arduino & Shields", создана пользователем Savin, 11 май 2021.

  1. Savin

    Savin Нерд

    Добрый вечер. Подключил три одинаковых сервы mg996r к Nano к пинам 7, 11, 12. Один двигатель не реагирует на сигнал. Подключил к тестеру - все три крутятся как положено. Перепробовал во всех вариантах, один и два мотора к разным пинам, повышал/понижал напряжение, именно один конкретный двигатель молчит. Опять же, тестер его крутит. Как можно его ещё проверить? Померял напряжение на выходе с тестера на двух разных моторах - всё в порядке, одинаково.

    3servo.jpg
     
  2. parovoZZ

    parovoZZ Гуру

    как это?

    какие конкретно напряжения?

    Как?

    Такое ощущение, что автору ответ не нужен. Всё клещами надо вытягивать.
     
  3. Savin

    Savin Нерд

    Пардон, сейчас расскажу всё как на духу. 220В - БП 12В - далее с помощью вот такого волшебного устройства
    P_20210511_211326.jpg
    (к слову сказать, ним же и менял напряжение от 5 до 6 В). Напряжение на входе сервотестера было 4.99 В, на выходе 4.94.
    p.s. Ранее эта схема работала и даже от двух крон. В защиту обвиняемого могу сказать, что мотор бездействовал месяц. Может смазка подзастыла? Планирую ток еще померять. Предполагаю, что сигнал с тестера посильнее, чем с платы.
     
  4. 64detali

    64detali Нерд

    В мониторе порта, что происходит?
     
  5. AlexU

    AlexU Гуру

    Из перечисленных пинов только 11-ый умеет PWM -- т.е. должна работать только одна серва. Или может Вы подключили к 7, 10 и 11-му?
     
  6. 64detali

    64detali Нерд

    Стоп, стоп, разве на 7 серва не заработает?
     
  7. AlexU

    AlexU Гуру

    Только, если у Вас какая-нибудь особенная Nano....
     
  8. 64detali

    64detali Нерд

    Блин работает. Я сейчас здесь сижу свою проблему ищу, возможно это ответ. В общем подключил серву на 7 пин, у меня все отлично работает, у заказчика моросит время от времени. Хотя она по сути не должна вообще работать на этом пине?
     
  9. AlexU

    AlexU Гуру

    Суть в том, что сервой нужно управлять с помощью PWM (по-русски ШИМ -- широтно-импульсная модуляция).
    В Arduino есть аппаратная поддержка PWM на некоторых пинах. На этих пинах сервы будут работать нормально (но нужно принять во внимание пины таймера Timer0 -- он используется для RTC -- поэтому могут быть особенности). На остальных пинах PWM реализуется программно (как именно -- надо смотреть используемую бибилотеку Servo, до определённой версии эта библиотека умела только на 9 и 10 пинах управять сервами, потом научилась на всех). Но программная реализация -- это не аппаратная -- там будут, так называемые "джиттеры" -- т.е. задержки в переключении порта. Всё зависит от остальной прошивки. Поэтому на пинах без аппаратной поддержки PWM сервы могут и не работать. Или работать со сбоями.
     
    64detali нравится это.
  10. 64detali

    64detali Нерд

    Вроде всё продумал: питание, пайку, компановку, простоту подключения и даже надежность - обкатывал устройство у себя несколько месяцев, а на такой ерунде споткнулся. Век живи, век учись. Спасибо большое, попробую перекинуть серву на 11й пин.
     
  11. AlexU

    AlexU Гуру

    Серва управляется не просто PWM сигналом, а сигналом определённой частоты/периода. А так же может играть роль величина "джиттера". Для той же mg996r, что у ТС, нужен период 50 миллисекунд и "джиттер" должен быть не более 5 микросекунд. Сходу не скажу, может ли Arduino выдать такую частоту -- надо считать. Если память не изменяет, нельзя сделать период больше ~16 миллисекунд (а нужно 50). Хотя серва вроде как нормально переваривает повышенную частоту PWM (уменьшенный период).
     
    Savin нравится это.
  12. 64detali

    64detali Нерд

    Вся проблема, что в сети полно примеров, где цепляют сервы на любой цифровой порт и не объясняют такой специфики, всё надо перепроверять.
     
  13. AlexU

    AlexU Гуру

    На таймере Timer1 (пины 9 и 10) можно сделать период до ~65 мс. Т.е. теоретически можно получить заветные 50 мс, но только на одном пине. Речь про аппаратную поддержку.
     
    64detali нравится это.
  14. AlexU

    AlexU Гуру

    Этого можно добиться программно (т.е. на любом цифровом пине), но нужно внимательно следить за кодом всей прошивки и используемых библиотек. Не должно быть запрета прерываний, долгих обработчиков прерываний и т.п. Иначе периоды и "джиттеры" на программных PWM начнут "гулять".
     
    64detali нравится это.
  15. 64detali

    64detali Нерд

    Лучше исключить эту ситуацию подключением к специализированному пину. Самое главное проблемы начинаются как раз при обработке прерываний, ардуинка в мониторе порта нормально отрабатывает нужный угол, а серва не реагирует...
     
  16. parovoZZ

    parovoZZ Гуру

    Логическое продолжение - отказ от дурины. Как только вы это сделаете, пред вами предстанет абсолютно другой мир. Мир полный красок, волшебства и поистине безграничных возможностей. Дурина - это кирпичные стены со всех сторон. И без окон.
    Не хватает ШИМ выводов? Attiny861 в помощь. Хочется построить ИИП на контроллере или рулить мостом полностью с МК - Attiny 1-ой серии к вашим услугам.
    К слову, все библиотеки доступны и в обычном варианте. А также куча других, которых нет в дурине.
     
  17. Savin

    Savin Нерд

    Благородные доны, прошу заметить, мы несколько отвлеклись. Так вот, я понятия не имею, что там в мониторе порта, но наверняка будет, то, что я туда послал, а не то, что чувствует мотор при этом. Так же напоминаю, что я подключал хворый мотор ко всем из перечисленных пинов - тишина. Остальные двое моторов прекрасно себя чувствуют на 7 пине.
     
  18. akl

    akl Гуру

    библиотека servo позволяет подключать к любому пину и так до 10 серв. там всё очень просто - сервы обрабатываются по очереди по таймеру

    по теме - если все другие сервы работают на всех пинах, а эта не работает ни на одном, то это как бы намекает. ну либо это чудо
     
    Последнее редактирование: 12 май 2021
  19. Savin

    Savin Нерд

    Да, но тестер-то крутит все три и любой по отдельности!
     
  20. Savin

    Savin Нерд

    Да не, 7,11,12. Впрочем, надо перепроверить, но я ж говорю, скетч не переделывал, а там именно эти порты.