Помогите с алгоритмом ШИМ

Тема в разделе "Arduino & Shields", создана пользователем ДмитрийД, 12 июл 2015.

  1. ДмитрийД

    ДмитрийД Нерд

    Есть RC-пульт, регулятор и бесколлекторный мотор.

    с RC-пульта завожу канал газа и на выходе выдаю сигнал на регулятор.
    пульт дает сигнал от 1000 до 2000 едениц, где 1500 это нейтраль, 1000 макс скорость назад, 2000 макс вперед.

    Задача - плавно рулить мотором, несмотря на резки колебания стика пульта, т.е. допустим резко дали газ, а двигатель раскручивается плавно.
    Грубо говоря за 1 секунду дали газ вполовину вверх, т.е. с 1500 дали 1750, и надо это плавно растянуть на 3 секунды.
    Плюс есть дребезг курка и колебания могут скакать, поэтому изменения до 5 едениц нужно не учитывать.
    Возможно есть какие то фильтры алгоритмы о чем я не знаю)
    ткните куда копать)
     
  2. vvr

    vvr Инженерище

    есть библиотека SoftPWM.h - поиграйтесь с ней
     
  3. ИгорьК

    ИгорьК Гуру

    Алгоритм таков:
    - создаете объект, который имеет:
    текущее значение PWM,
    целевое PWM,
    способ изменения (например шаг: +/- 10 единиц и проверка - если новое целевое значение отличается от старого на 5 то оно не меняется) и
    скорость изменения;​
    - при проверке положения стика - просто меняете целевое значение PWM, а затем постоянно вызываете объектную функцию его достижения.
     
    Последнее редактирование: 13 июл 2015