После прочтения этой статьи у меня возникла идея построить свой собственный самолет. Я составил готовые планы и заказал у китайцев двигатель, аккумулятор и пропеллер. Во-первых, это было интереснее. Во-вторых, мне нужно было чем-то занять себя, пока они доставляли другие детали. В-третьих, мне дали возможность сделать что-то оригинальное и добавить всякие мелочи. Обратите внимание на фотографии!
Как и чем управлять
Обычные люди берут приемник, подключают сервопривод, регулятор скорости, двигают рычажок на пульте управления и наслаждаются жизнью, не задумываясь о принципах своей работы и не вникая в детали. В нашем случае этого недостаточно. Нашей первой задачей было узнать, как управляется сервопривод. Все оказалось довольно просто, сервопривод имеет три провода: + питание, — питание и сигнал. По сигнальному кабелю проходит прямоугольный импульс с переменной частотой. Таким образом, если приводной блок находится в крайнем левом положении, он должен посылать импульсы длительностью 0,9 мс с интервалом 20 мс. Если приводной блок находится в крайнем правом положении, он должен передавать импульсы длительностью 2,1 мс с тем же интервалом. Центральное положение. В конечном счете, регулятор скорости управляется таким же образом. Те, кто в курсе, знают, что это обычный ШИМ и может быть реализован на любом микроконтроллере. И я решил сделать это, поэтому я купил сервопривод в местном магазине и собрал так называемый сервотестер ATtiny13 на макетной плате. И оказывается, что ШИМ не так прост, но есть и подводные камни. Как видно из приведенной диаграммы, рабочий цикл (отношение ширины импульса к длительности цикла) счетчика ШИМ 256 на микросхеме ATtiny13 составляет от 5% до 10% (в дальнейшем импульсы длительностью 1,0 мс и 2,0 мс принимаются за крайние значения). Для значений от 25 до 50. Однако это предполагает, что для заполнения счетчика требуется 20 мс, но на практике так не получается, и при частоте 9,6 МГц и частоте делителя 1024 счетчик равен 187 (TOR), поэтому частота составляет 50,134 Гц. Поскольку большинство (если не все) сервоприводов не имеют точного опорного генератора частоты, частота управляющего сигнала может незначительно отличаться. Если счетчик TOR оставить равным 255, частота управляющего сигнала составит 36,76 Гц. Для некоторых приводов это работает (в случае сбоев), но не для всех. Теперь у вас есть 187-разрядный счетчик, где 5-10% соответствует общему значению 10-20-10, который работает несколько дискретно. Если вы думаете поэкспериментировать с тактовыми частотами и делителями, далее приводится сравнительная таблица 8-битных ШИМ.
Однако большинство микроконтроллеров имеют 16-битные (и выше) таймеры для генерации ШИМ. Здесь быстро решается проблема разрешения и можно точно настроить частоту. Не буду долго объяснять, сразу дам таблицу:.
Я не думаю, что есть большая разница между ценой 600 и 1200 китайских сервоприводов, так что проблема точности размещения решена.
Многоканальное управление
Сервопривод готов к работе, но для аэроплана нужно как минимум три и регулятор скорости. Простым" решением является использование микроконтроллера с четырьмя 16-битными каналами ШИМ, но такой контроллер стоит дорого и, вероятно, займет много места на плате. Второй вариант — создать программное обеспечение для ШИМ, но затраты процессорного времени также не вариант. Если снова посмотреть на диаграмму сигнала, то разумнее установить ШИМ для самих импульсов длительностью 1-2 мс, так как 80% времени информация не передается. Почему рабочий цикл изменяется в таком узком диапазоне? Не проще ли генерировать и считывать импульсы с рабочим циклом не менее 10-90%? Зачем нужен этот бесполезный сигнал, занимающий 80% времени? Я подумал, что, возможно, 80% времени могут составлять импульсы от других триггеров, которые можно разделить на несколько разных сигналов. Таким образом, вы можете иметь 10 импульсов с периодом 20 мс и длительностью 1-2 мс, и сигнал будет разделен на 10 различных импульсов с шириной периода всего 20 мс с помощью какого-либо демультиплексора. Компания ПРОТЕУС создала следующую схему. Демультиплексор представляет собой 74HC238, а на вход E подаются импульсы с выхода микроконтроллера. Эти импульсы представляют собой ШИМ с периодом 2 мс (500 Гц) и рабочим циклом 50-100%. Каждый импульс имеет различный рабочий цикл, указывающий на состояние каждого канала. Сигнал на входе E выглядит следующим образом: чтобы узнать, на какой выход 74HC238 подается текущий сигнал, используется PORTC микроконтроллера и входы A, B и C демультиплексора. В результате на выходе получаются следующие сигналы Сигналы на выходе принимаются с правильной частотой (50 Гц) и рабочим циклом (5-10%). Поэтому необходимо генерировать ШИМ частотой 500 Гц и рабочим циклом 50-100%. Это таблица для установки предварительной задержки и TOR 16-битного счетчика. Интересно, что возможное количество значений ШИМ составляет ровно 1/1000 от частоты таймера.
Программная реализация.
Для ATmega8 с тактовой частотой 16 МГц программа AtmelStudio6 реализуется следующим образом: сначала установите значение счетчика для конечного положения сервопривода: значение счетчика устанавливается равным 1.
Далее генератор ШИМ инициализируется таймером/счетчиком 1.
Осталось реализовать праздник:.
Включите прерывания глобально, и вы готовы: введите значение от LOW до HIGH и измените значение канала.
Применение к оборудованию
Теперь, когда теория готова, пришло время применить ее на практике. В качестве мозга системы был выбран ATmega8A (не потому, что требуется 16000 позиций сервоприводов, а потому, что они есть поблизости). Управляющие сигналы МК получает через UART. В результате получается следующая схема. Через некоторое время была создана следующая плата: два трехконтактных вывода не припаяны, так как они не нужны. Они также не припаяны последовательно, так как отсутствуют металлизационные отверстия. В нижней части разъемов с обеих сторон можно заменить кабели, но программное обеспечение без проблем выводит сигналы на любой из разъемов. Также отсутствует мотор-регулятор 78L05 со встроенным стабилизатором (VES). Радиомодуль HM-R868 подключен к плате для сбора данных. Изначально была идея подключиться непосредственно к плате, но такая конструкция не соответствовала плоскости, поэтому пришлось сделать это через шлейф. При смене прошивки некоторые системы (например, бортовые огни) могут быть включены/выключены с помощью контактов канала программирования. Доска стоит около 20гн = $ 2,50, а приемник 30гн = $ 3,75.
Раздел вещания
Есть части самолета, которые теперь нуждаются в депонировании почвенного материала. Как было написано ранее, данные передаются через UART, по одному байту на канал. Первоначально система была подключена к компьютеру через адаптер, а команды посылались с терминала. Первый байт ID отправляется декодеру, за ним следуют восемь байтов, определяющих состояние канала, что позволяет декодеру определить принцип работы пакета и впоследствии выбрать адресованный пакет. Впоследствии, когда я воспользовался радиотелефоном и выключил передатчик, все двигатели начали дико сокращаться. Я отфильтровал сигнал от шума с помощью XOR всех предыдущих девяти байтов. После этого все проверки временных ограничений байта игнорировались, и получение сигнала снова ожидало ID байта. Добавление управляющей суммы в виде XOR сделало отправку команд с терминала утомительной, поэтому я быстро создал такую программу в программе регулирования. Число в левом нижнем углу — это контрольный итог. Передвинув ползунок на компьютере, он переместил самолет! Поэтому я оттолкнулся и начал думать о дистанционном управлении. Раньше я был поклонником всех видов авиасимуляторов: "Ил-2 Штурмовик", "Lock on", "MSFSX", "KA-50 Black Shark". Аналогично, был джойстик genius F-23, который я решил добавить к вышеупомянутому краулеру. Я искал в Google. Нашла этот пост и все получилось! Я считаю, что гораздо интереснее управлять самолетом с помощью джойстика, чем с помощью маленькой палочки на пульте управления. В любом случае, на картинке, которую вы видите здесь, нетбук, джойстик, конвертер в FT232 и подключенный к нему передатчик HM-T868. Передатчик подключается к 2-метровому кабелю с помощью принтера, поэтому его можно разместить, например, на дереве.
Первый полет был по асфальту, фюзеляж сломался посередине, и двигатель вылетел. Второй полет проходил над более мягкой поверхностью: фюзеляж сломался посередине, и двигатель вышел из строя.
Даже следующие десять полетов были менее успешными. Я думаю, что основной причиной было сильное различие джойстика — прокрутка давала только 16 значений (вместо 256). Однако в результате испытаний выяснилось, что самолет получил серьезные повреждения и не подлежит восстановлению. -Проверить эту версию правды пока не представляется возможным. Попробуйте снять на видео самолет — самолет летит под наклоном, а затем внезапно наклоняется в противоположную сторону (и нуждается в сглаживании) — также выступает за эту версию. Вот более наводящее на размышления видео:.
Дальность действия оборудования составляет около 80 метров, дальше ловит, но уходит. Эти, спасибо за внимание. Я надеюсь, что эта информация будет полезна кому-то еще. Я буду рад ответить на все ваши вопросы. Этот файл содержит принципиальную схему и макет платы Proteus.