Помогите, проблема с сервой

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

  1. grx1a

    grx1a Гик

    Серва управляется потенцеометром(джойстик) через функцию map, иногда когда отпускаю джойстик серва начанает вибрировать, иногда стоит на месте как должна стоять, прочитал сигнал на серву через serial monitor и выяснил что в случае когда все нормально показания постоянны (89градусов), когда тресется гуляют (89-90 градусов) джойстик не трогаю. Джереми блум говорит в видеоуроке по этому поводу что надо сделать фильтр аппаратно или програмно, подскажите пожалуйста как решить проблему?
     
  2. roggedhorse

    roggedhorse Гик

    ссылку на Блюма дайте плиз
     
  3. grx1a

    grx1a Гик

    ссылки нет, у меня есть только видео 0502 называется моторы и транзисторы, в этом уроке он крутит серву по средствам IR дальномера
     
  4. roggedhorse

    roggedhorse Гик

    самый простой способ - экспоненциальный фильтр
     
  5. grx1a

    grx1a Гик

    это что такое?
     
  6. roggedhorse

    roggedhorse Гик

    Код (Text):
        smoothedValue = (double) (1.0 - SMOOTHING_FACTOR) * smoothedValue + instantValue * SMOOTHING_FACTOR;
     

    где
    smoothedValue - сглаженное значение
    instantValue - значение, полученное от IR-сенсора (в вашем случае джойстика)
    SMOOTHING_FACTOR - коэффициент сглаживания. Он должен быть меньше единицы. И чем он меньше, тем существеннее сглаживание, но тем больше запаздывание фильтра

    Можете в MS Excel построить график и поэкспериментировать со значением SMOOTHING_FACTOR
     
    grx1a нравится это.
  7. grx1a

    grx1a Гик

    Огромное спасибо! Попробую поэксперементировать
     
  8. roggedhorse

    roggedhorse Гик

    [​IMG]

    Красное - значение сенсора
    Остальное - сглаженное значение с разными коэффициентами сглаживания
     

    Вложения:

    Megakoteyka нравится это.
  9. grx1a

    grx1a Гик

    да , коофициент здорово влияет
     
  10. Nikodim

    Nikodim Нерд

    Здравствуйте.
    Наверно у меня похожая беда..
    Взял скетч с интернета. Залил на Ардуино UNO/

    Ардуино UNO - Тройка шилд - потенциометр - сервопривод.


    Когда НЕ кручу потенциометр. на мониторе порта проскакивают небольшие скачки. Допустим :


    при этом серва слегка шуршит и если держать серву в руках, чувствуются какие - то колебания внутри. Скорее всего. вдобавок кушает...электричество.

    Никаких помех вроде быть не должно. Ардуино UNO - Тройка шилд - потенциометр - сервопривод(БЕЗ нагрузки). Больше ничего нет.

    Кстати да, у Джереми Блюма в серии "моторы и транзисторы. Часть вторая". На пятой минуте...5;24 видно, что качалка у сервы ходит. дергаеться



    Но у него, может от дальномера серва дергаеться. А при потенциометре почему она также не стоит на месте? Говорит, что это просто исправить. А как? Нет ответа. Или он не про это. И в чем может быть причина? Скажите, пожалуйста. Сервопривод брал здесь, FS5106B/

    С экспоненциальным фильтром, я не понял, простите.
     
  11. roggedhorse

    roggedhorse Гик

    Существует несколько причин дрейфа сервы. Первые несколько:
    - механический контакт бегунка и резистора в самом потенциометре
    - навесной монтаж (хлипкий контакт в цепях)
    - погрешность АЦП
    - пульсации питающего напряжения
    - особенности реализации самой сервы
    - нестабильность ШИМ ардуины

    Как следствие, вы получаете 37, 37, 37, 38, 37 и т.д.

    Фильтрация входящих данных применяется для сглаживания сигнала, когда нехарактерные или случайные значения отбрасываются или нормируются.

    На примере:
    вы намеряли 5 значений: 37, 37, 37, 38, 37.

    Среднее значение = (37 * 4 + 38) / 5 = 37,2
    Если вместо непосредственно измеренного значения при управлении сервой использовать среднее значение, то у вас получился бы такой ряд (очень грубо): 37.2, 37.2, 37.2, 37.2, 37.2 - серва не дергается.
    Вычислять среднее несколько более затратно, чем применить on-the-fly фильтрацию типа экспоненциальной, когда вы скармливаете фильтру измеренное значение, а он вам возвращает усредненное, которые вы потом должны использовать при управлении сервой.
     
  12. Nikodim

    Nikodim Нерд

    Спасибо.
    Сейчас. опираясь на ваш ответ, ищу причину. Поменял потенциометр и на всякий случай отдельно запитал серву. Качалка визуално, перестала дергаться. Но когда берешь в руки, внутри как будто шевеления. Мне уже кажется, что я придираюсь к серве и что какие то легкие подергивания внутри должны быть.

    Попытался собрать код для фильтра по среднему показанию с потенциометра. Вот что получилось.

    однако, что то не очень помогло. Не дергается, но шуршит чего.

    Про фильтрацию типа экспоненциально. хотел погуглить. Но там статьи и рефераты по высшей математике что ли. испугался и убежал оттуда

    Поэтому я попытался вставить вашу формулу как есть в имеющийся у меня код.

    я по -видимому, пытаюсь угадать, методом тыка. Потому что, это тоже не прошло.

    На днях собираюс поставить новую серво. и еще думаю, Ардуино запитать отдельно от компа. Возможно. как вы писали у меня
    действительно комп не новый и иногда. когда подключаешь внешний жесткий диск, он виснет. Может от этого?
    Спасибо вам за ответ. Буду искать.
     
  13. grx1a

    grx1a Гик

    экспонентциальный фильтр в данном случае не понацея от данной проблемы, если данные гуляют 48,47,48, 48, 48, думаю лучше если такой мелкий разбег то написать код к серве таким образом что бы была зона не чувствительности +/-1 градус, думаю человеческим глазом и рукой на чувствительность обьекта управляемого сервой не повлияет. А вообще по моему мнению экспоненциальный фильтр который показал roggedhorse это очень хорошая вещь с большой буквы !!!! За что ему огромное спасибо!!!
    Дело в том что рано или поздно придется столкнутся с проблемой. Просто бывает такие ситуации когда надо читать стабильные показания с сенсора(не важно кокого типа), на который поступает сигнал в виде не стабильных колебаний, в определенном диапозоне(к примеру давление масла прыгает от 1,5кг/см3 до 2,5кг/см3, при понижении читаемого параметра оно меняется с 1,0кг/см3 до 1,3кг/см3), тут то и офигенно нужна экспонента, вещь в автоматике просто оболденная!!!
     
  14. Unixon

    Unixon Оракул Модератор

    Можно просто емкость повесить на среднюю точку...