• ,
  • вход на сайт

    Имя пользователя :
    Пароль :

    Восстановление пароля Регистрация
    Двухканальный преобразователь I2C - ESC (servo-pwm)

      При разработке квадрокоптера возникла необходимость управлять драйверами бесколлекторных двигателей (ESC) по шине I2C с одноплатного компьютера. Так как заводские драйвера обычно управляются сигналом ШИМ, по структуре таким же каким управляются сервоприводы, сначала было решено написать программный ШИМ на 8 каналов, для универсальности платки. Увы такой подход работает для серв, но для управления драйверами нужна более высокая точность сигнала. Дело в том,что для серв не сильно критична будет погрешность в полградуса, а для ESC это грозит тем что моторы будут выдавать разную тягу при одинаковых характеристиках и значению управляемой величины. Практика показала, что программная реализации многоканального ШИМ-сигнала при подаче одинаковых значений управляющего сигнала на все каналы, дает разницу в длительности импульса до ~25мкс между первым и 4м (в четырехканальном варианте). Это конечно катастрофично, но вводит дополнительную погрешность в систему и усложняет работу системе стабилизации.

      И так, что же за особенный ШИМ-сигнал.

     Двухканальный преобразователь I2C - ESC (servo-pwm)

      Этот сигнал имеет несколько особенностей, в отличии от обычного сигнала ШИМ. Во-первых, период сигнала должен быть 20мс, то есть частота сигнала 50Гц. Во-вторых, ширина импульса изменяться в пределах от 0.7..1мс до 2..2.3 мс. Такая ширина импульса соответствует минимальному и максимальному углу отклонения вала сервомотора, а так же минимальной и максимальной тяге авиамодельных двигателей.

     Для реализации использовали аппаратный ШИМ 16-битный таймер на микроконтроллере ATmega8 и ATmega48PA. Так как 8-битный таймер очень низкую дискретность (разрешение) управления, он нам не подходит. К тому же аппаратный ШИМ дает высокую точность в сравнении с програмным.

    Двухканальный преобразователь I2C - ESC (servo-pwm)

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

      Теперь о настройке. если вы решили использовать внутреннее тактирование или кварц на другую частоту, нужно в прошивке указать другую частоту и изменить значение ICR1. Его значение можно рассчитать в онлайновом калькуляторе на этом сайте.

    Исходный код:

     

    Теперь по поводу управления.

    Конвектор принимает пакет данных по i2c на адрес 0x73, который можно исменить в TWI_SLAVE3_ADRESSE. Пакет состоит с 4х байт, по такой структуре: <младший байт двухбайтного числа для первого канала><старший байт двухбайтного числа для первого канала>

    <младший байт двухбайтного числа для второго канала><старший байт двухбайтного числа для второго канала>.

      Алгоритм прост, как только с по шине пришел весь пакет (флаг TWI_SR_MSG_Flag=1) - мы обновляем значение скважности (OCR1) импульса. Данные передаются в "попугаях", то есть задается по i2c не длительность импульса в мс, а количество тиков таймера. Для простоты, задаваемое время можно найти так - t=1,5*"попугаи количество тиков таймера". После чего флаг принятого пакета сбрасывается.

    Двухканальный преобразователь I2C - ESC (servo-pwm)

     

    Двухканальный преобразователь I2C - ESC (servo-pwm)

    Собственно сама печатка. Разводку можно скачать здесь :i2c2esc.lay6.zip [38,38 Kb] (cкачиваний: 55)

     

    Исходный код можно скомпилировать как под ATmega8, так и под ATmega48/88. Для этого нужно изменить в makefile название микроконтроллера.

    В архиве находиться прошивка и код под ATmega8.

    i2c_to_esc-atmega8.zip [2,57 Kb] (cкачиваний: 90)

    Или берем с репозитория : GitHub


    Теги: avr, i2c, Cubieboard
    • 0
    Новость опубликована 24-02-2015, 15:32, её прочитали 3280 раз(а).
    Понравилась тема? Посмотрите эти:
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.