Контроллер для двух мотор колес (BLDC двигателей) – LITIUM 74

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74 Мультикоптеры

Шим и pwm – что это такое?

Дорогой
Бобот, не мог бы ты немного побольше рассказать об
импульсах?

Хорошо, что ты попросил, дружище
Бибот. Так как именно импульсы являются главными носителями
информации в цифровой электронике, поэтому очень важно знать
разные характеристики импульсов. Начнём, пожалуй, с одиночного
импульса.

Электрический импульс – это всплеск
напряжения или тока в определённом и конечном промежутке
времени.

Импульс всегда имеет начало (передний фронт)
и конец (спад).
Ты уже наверняка знаешь, что в цифровой
электронике все сигналы могут быть представлены всего двумя
уровнями напряжения: “логической единицей” и “логическим
нулём”. Это всего лишь условные величины напряжения.
“Логической единице” приписывается высокий уровень напряжения,
обычно около 2-3 вольт, “логическим нулём” считается близкое к нулю
напряжение. Цифровые импульсы графически изображаются
прямоугольными или трапециевидными по форме:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74
Главной величиной
одиночного импульса является его длина. Длина импульса – это
отрезок времени, в течение которого рассматриваемый логический
уровень имеет одно устойчивое состояние. На рисунке латинской
буквой t отмечена длина импульса высокого уровня, то есть
логической “1”. Длина импульса измеряется в секундах, но чаще
в миллисекундах (мс), микросекундах (мкс) и даже наносекундах
(нс). Одна наносекунда – это очень короткий отрезок времени!

Запомни:
1 мс = 0,001 сек.
1 мкс = 0,000001 сек
1 нс
= 0,000000001 сек

Применяются также англоязычные
сокращения: ms – миллисекунда, μs – микросекунда, ns –
наносекунда.

За одну наносекунду я даже пикнуть не
успею!
Скажи, Бобот, а что произойдёт, если импульсов
будет много?

Хороший вопрос, Бибот! Чем больше
импульсов, тем больше информации можно ими передать. У
множества импульсов появляется много характеристик. Самая
простая – частота следования импульсов.
Частота
следования импульсов – это количество полных импульсов в
единицу времени.
За единицу времени принято брать одну
секунду. Единицей измерения частоты является герц, по имени
немецкого физика Генриха
Герца
.
Один герц – это регистрация одного полного импульса
за одну секунду. Если произойдёт тысяча колебаний в секунду
будет 1000 герц, или сокращённо 1000 Гц, что равно 1
килогерцу, 1 кГц. Можно встретить и
англоязычное сокращение: Hz – Гц. Частота обозначается буквой
F.

Существуют ещё несколько характеристик,
которые проявляются только при участии двух и более импульсов.
Одним из таких важных параметров импульсной последовательности
является период.
Период импульсов – это промежуток
времени, между двумя характерными точками двух соседних
импульсов.
Обычно период измеряют между двух фронтов или
двух спадов соседних импульсов и обозначают заглавной
латинской буквой T.

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74
Период следования
импульсов напрямую связан с частотой импульсной
последовательности, и его можно вычислить по формуле:
T=1/F
Если длина
импульса t точно равна половине периода T, то
такой сигнал часто называют “меандр“.

Скважностью импульсов называется отношение периода
следования импульсов к их длительности и обозначается буквой
S:

S=T/tСкважность –
безразмерная величина и не имеет единиц измерения, но может
быть выражена в процентах. Часто в англоязычных текстах
встречается термин Duty cycle, это так называемый
коэффициент заполнения.
Коэффициент заполнения D
является величиной, обратной скважности.
Коэффициент
заполнения обычно выражается в процентах и вычисляется по
формуле:
D=1/S

Дорогой
Бобот, так много разного и интересного у простых импульсов! Но
потихоньку я уже начинаю путаться.

Дружище, Бибот,
это ты верно заметил, импульсы – не так уж и просты! Но
осталось совсем чуть-чуть.

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Если ты меня внимательно
слушал, то ты мог заметить, что если увеличивать или уменьшать
длину импульса и при этом на столько же уменьшать или
увеличивать паузу между импульсами, то период следования
импульсов и частота останется неизменной! Это очень важный
факт, который нам ещё не раз понадобится в будущем.

Но
сейчас ещё хочется добавить другие способы передачи информации
с помощью импульсов.
Например, можно несколько импульсов
объединить в группы. Такие группы с паузами определённой длины
между ними называют пачками или пакетами. Генерируя разное
число импульсов в группе и варьируя его, можно также
передавать какую-либо информацию.

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74
Для передачи информации в
цифровой электронике (ещё её называют дискретной электроникой)
можно использовать два и более проводников или каналов с
разными импульсными сигналами. При этом информация передаётся
с учётом определённых правил. Такой метод позволяет заметно
увеличить скорость передачи информации или добавляет
возможность управлением потоком информации между различными
схемами.

Перечисленные возможности передачи информации
с помощью импульсов могут быть использованы как сами по себе
раздельно, так и в комбинации между собой.
Существуют также множество стандартов передачи информации с помощью
импульсов, например I2C, SPI, CAN, USB, LPT.

Звуковые эффекты и усиление

Варьирование коэффициента заполнения импульсного сигнала в синтезаторе позволяет получить интересные тембры. Точка 50% (истинная прямоугольная форма сигнала) была характерна потому, что нечетные гармоники по существу исчезают при 50% на некоторых синтезаторах.

Классический саундтрек видеоигры обычно состоит из импульсных волн 50%, 25% и 12,5%. При использовании в синтезе музыки, ШИМ описывает соотношение высокого и низкого уровня вторичного сигнала, модулируемого низкочастотным осциллятором.

Все более популярными становятся аудиоусилители с принципом ШИМ. Известные как усилители класса D, они генерируют ШИМ-эквивалент аналогового входного сигнала, который подается на громкоговоритель через сеть фильтров для блокировки несущей и достижения оптимального качества звука.

Обладая очень хорошим КПД (*90%), эти усилители также компактны/легки при высокой выходной мощности. С 1940-х годов промышленные и военные ШИМ-усилители широко используются для управления серводвигателями. Относительно мощный ШИМ-усилитель управляет катушками градиента поля в аппаратах МРТ.

Исторически сложилось так, что для воспроизведения цифрового звука PCM на колонках ПК использовалась грубая форма ШИМ, которая управлялась только двумя уровнями напряжения, обычно 0 В и 5 В. Тщательно рассчитывая длительность импульсов и полагаясь на физические фильтрующие свойства колонок (ограниченная частотная характеристика, самоиндукция и т.д.), можно было получить приблизительное воспроизведение моно образцов PCM, хотя и с очень низким качеством, и с очень разными результатами в разных реализациях.

Недавно был представлен метод цифрового кодирования звука Direct Stream Digital, который использует обобщенную форму широтно-импульсной модуляции, называемую модуляцией плотности импульсов, с достаточно высокой частотой дискретизации (обычно порядка МГц), чтобы охватить все акустические частоты с достаточной достоверностью.

История

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

Помимо того, что энергия тратится в виде тепла на резисторный элемент реостата, эта схема также была неэффективной. Однако это было допустимо, поскольку общая потребляемая мощность была низкой. В то время как реостат был относительно недорогим и эффективным способом управления мощностью (см. раздел “Автотрансформаторы и вариаторы” для получения дополнительной информации), дешевый и эффективный способ переключения/регулирования мощности все еще отсутствовал.

Механизм также должен был быть способен приводить в действие вентиляторы, насосы и роботизированные сервоприводы, и он должен был быть достаточно компактным, чтобы взаимодействовать с регуляторами яркости. В ответ на эту проблему было разработано решение на основе ШИМ.

Впервые ШИМ была использована в Sinclair X10, 10-ваттном аудиоусилителе, доступном в виде набора в 1960-х годах. В тот же период ШИМ начали использовать для управления двигателями переменного тока.

Следует отметить, что примерно в течение столетия некоторые двигатели с регулируемой скоростью имели приличный КПД, но они были несколько сложнее двигателей с постоянной скоростью и иногда требовали громоздких внешних электрических устройств, таких как группа резисторов с регулировкой мощности или вращающиеся преобразователи. например, диск Уорда-Леонарда .

Как и чем управлять

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

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Нам нужно послать импульсы длительностью 0,1 мс с интервалом 20 мс, если мы хотим установить привод в крайнее левое положение. Если мы хотим установить его в крайнее правое положение, импульсы будут длительностью 2,1 мс, интервал будет таким же. Регуляторы скорости, как выяснилось, управляются аналогично. Те, кто работает в этой области, скажут, что это

В местном магазине была сервомашинка, и я купил для нее макетную плату ATtiny13, с помощью которой я тестировал сервомашинку. Для этого я нашел сервомашинку в местном магазине и построил для нее так называемый сервотестер на макетной плате с использованием ATtiny13. Оказалось, что ШИМ не совсем прост, а полон подводных камней.

Из рисунка выше видно, что рабочий цикл (отношение ширины импульса к длительности периода) составляет от 5% до 10% (крайними значениями я буду считать длительности импульсов в одну миллисекунду и две миллисекунды), а для 256-символьного счетчика ATtiny13 это соответствует значению от 25 до 50.

Но это при условии, что для заполнения счетчика требуется 20 мс, а на самом деле все не так, и для частоты 9,6 МГц и делителя 1024 необходимо ограничить счетчик до 187 (TOR), в этом случае мы получим частоту 50,134 Гц. Большинство (если не все) сервомашинок не имеют точного генератора опорной частоты, поэтому частота управляющего сигнала может быть немного переменной.

Частота управляющего сигнала будет 36,76 Гц, если счетчик TOR оставить равным 255. Некоторые приводы могут работать (с некоторыми сбоями), но не все. В итоге нам нужен счетчик, который имеет 187 разрядов и 5-10% соответствует значениям между 10 и 20 – так что всего у нас будет 10 значений. Если вы решите поэкспериментировать с тактовой частотой и делителем, вот сравнительная таблица для 8-битного ШИМ:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74
Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Вопрос точности позиционирования можно считать решенным, поскольку для китайского сервопривода нет существенной разницы между значениями 600 и 1200.

Смотрите про коптеры:  TELECRANE 24 серия (джойстиковое) - Радиоуправление Telecrane® - Каталог продукции : ООО УралКранДеталь

Калибровка ручек управления

Вам необходимо откалибровать контроллер, чтобы он мог работать с вашими ручками газа и тормоза. Это необходимо сделать только один раз, после чего информация сохраняется в энергонезависимой памяти. При смене ручек управления их необходимо обучить заново. Описание калибровки.

Звуковое информирование и сигналы ошибки контроллера

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

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

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

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

Многоканальное управление

Для самолета нам нужно как минимум три сервопривода и регулятор скорости. Более простым решением было бы взять микроконтроллер с четырьмя 16-битными каналами ШИМ, но такой контроллер будет дорогим и может занять много места на плате.

Второй вариант – написать программный ШИМ, но это занимает много процессорного времени. 80% времени диаграммы сигналов пустые. Поэтому, чтобы задать только импульс 1-2мс, разумнее будет ШИМ.

Если рабочий цикл изменяется в таком узком диапазоне, не проще ли формировать и считывать импульсы с рабочим циклом не менее 10-90%? Нам нужен этот неинформативный кусок данных, который занимает 80% времени, зачем? Возможно, эти 80% могут занимать импульсы для других исполнительных механизмов, и тогда этот сигнал разделяется на несколько разных сигналов.

Это означает, что за 20 мс может быть 10 импульсов длительностью 1-2 мс, затем этот сигнал может быть разделен каким-нибудь демультиплексором на 10 различных импульсов с периодом 20 мс каждый. Вот схема, которую я нарисовал в PROTEUS:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

На вход E подаются импульсы с выхода микроконтроллера через 74HC238. Они имеют период 2 мс (500 Гц) и рабочий цикл 50-100%. В зависимости от состояния канала, каждому импульсу присваивается свой рабочий цикл. Как показано здесь, сигнал на входе E выглядит следующим образом:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Для того чтобы микросхема 74HC238 знала, на какой выход подается токовый сигнал, мы используем PORTC микроконтроллера и входы A, B, C демультиплексора. В результате эти сигналы появляются на выходах:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Мы получаем выходные сигналы с правильной частотой (50 Гц) и рабочим циклом (5-10%). Для 16-битного счетчика требуется частота ШИМ 500 Гц и рабочий цикл 50-100%. Вот таблица для установки предварительной задержки и TOR 16-битного счетчика:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74


Интересно, что возможное количество значений ШИМа ровно в 1000 раз меньше частоты таймера.

Передающая часть

Нет проблем с самолетной частью, но есть проблема с наземным оборудованием. Данные передаются по UART, по одному байту на канал, как уже объяснялось ранее. Сначала я подключил свою систему проводом через

К компьютеру и посылать команды через терминал. Чтобы декодер мог определить начало посылки и в дальнейшем выбирать адресованные ему посылки, он сначала получает байт-идентификатор, затем 8 байт, указывающих на состояние канала. После выключения передатчика двигатели дико дергались, поэтому я перешел на использование радиомодулей.

К десятому байту я делаю XOR всех 9 байтов, чтобы отфильтровать шум. Однако он имеет более слабые функции, например, добавление еще одного таймера для байтов. Если таймаут превышен, все сообщение игнорируется, и прием начинается снова, в ожидании идентифицирующего байта.

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74


Число в нижнем левом углу — контрольная сумма. Передвигая ползунки на компе двигались рули на самолете! Вообщем отладил я все это и стал думать о пульте ДУ, купил для него вот такие джойстики:

image

Но потом мне пришла в голову одна мысль. Одно время я увлекался всевозможными авиасимуляторами, включая “Ил-2 Штурмовик”, “Lock On”, “MSFSX” и “Ка-50 Черная акула”. В частности, я использовал джойстик Genius F-23, подключенный к вышеописанному программному обеспечению с ползунками. Погуглил и нашел вот это

И это сработало! Наличие джойстика вместо пульта дистанционного управления делает управление самолетом гораздо более приятным. В принципе, то, что показано на первой фотографии, – это нетбук, джойстик, преобразователь FT232 и соответствующий передатчик HM-T868.

Принцип

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Рис.1:

Импульсной волны.

С помощью определения , и D.

умин{ displaystyle y _ { text {min}}}уМаксимум{ displaystyle y _ { text {max}}}

Широтно-импульсная модуляция использует прямоугольную импульсную волну , ширина которой модулируется, что приводит к изменению среднего значения формы волны. Если мы рассмотрим импульсный сигнал с периодом , низким значением , высоким значением и рабочим циклом D (см. Рисунок 1), среднее значение формы сигнала будет выражаться следующим образом:
ж(т){ displaystyle f (t)}Т{ displaystyle T}умин{ displaystyle y _ { text {min}}}уМаксимум{ displaystyle y _ { text {max}}}

у¯знак равно1Т∫0Тж(т)dт{ displaystyle { bar {y}} = { frac {1} {T}} int _ {0} ^ {T} f (t) , dt}

Как и пульсовая волна, ее значение для и для . Приведенное выше выражение становится таким:
ж(т){ displaystyle f (t)}уМаксимум{ displaystyle y _ { text {max}}}0<т<D⋅Т{ Displaystyle 0 <т <D cdot T}умин{ displaystyle y _ { text {min}}}D⋅Т<т<Т{ Displaystyle D cdot T <t <T}

у¯знак равно1Т(∫0DТуМаксимумdт ∫DТТуминdт)знак равно1Т(D⋅Т⋅уМаксимум Т(1-D)умин)знак равноD⋅уМаксимум (1-D)умин{ displaystyle { begin {align} { bar {y}} & = { frac {1} {T}} left ( int _ {0} ^ {DT} y _ { text {max}} , dt int _ {DT} ^ {T} y _ { text {min}} , dt right) & = { frac {1} {T}} left (D cdot T cdot y_ { text {max}} T left (1-D right) y _ { text {min}} right) & = D cdot y _ { text {max}} left (1- D right) y _ { text {min}} end {align}}}

Это последнее выражение можно довольно упростить во многих случаях, когда as . Отсюда среднее значение сигнала ( ) напрямую зависит от скважности D.
уминзнак равно0{ displaystyle y _ { text {min}} = 0}у¯знак равноD⋅уМаксимум{ displaystyle { bar {y}} = D cdot y _ { text {max}}}у¯{ displaystyle { bar {y}}}

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Пример перекрестной ШИМ: сигнал (здесь красная синусоидальная волна) сравнивается с синей пилообразной волной для создания последовательности импульсов ШИМ. ШИМ-сигнал (пурпурный) находится в высоком состоянии (1), когда последний меньше первого. В противном случае он находится в низком состоянии (0).

Для ШИМ-сигнала метод кроссовера является самым простым – требуется только пилообразный или треугольный сигнал (легко генерируется) и компаратор.

Радиокот :: радиоуправление самолетом на mrf49xa

РадиоКот >Схемы >Цифровые устройства >Игрушки >

Радиоуправление самолетом в системе MRF49XA

Эй, все вместе!

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

Как начинающему радиолюбителю мне еще со школы хотелось научиться создавать радиоуправление. Данная область привлекала возможностью своими руками создавать интересные игрушки с редкими функциями, вроде запуска ракеты с лодки на озере, электромеханической руки у машинки для перетаскивания грузов, или еще чего.
Нашлось время для хобби в нынешние дни – вот и решил исполнить детскую мечту. Вспомнил навыки паяния, почитал про схемотехнические основы в П.Хоровиц У.Хилл “Искусство схемотехники”, попрактиковался с микроконтроллерами, и взялся за дело.

Итак, что же должно представлять из себя радиоуправление.
Во-первых, это управляющий радиосигнал. Полистав многие статьи из советских радиолюбительских журналов, мне стало ясно что там люди изрядно заморачивались темой передачи, приема радиоволн, настройки антенн, чувствительности приемников, и т.д. Конечно, без радиоволн тут никуда. Но если по серьезному, то данную тему нельзя изучить по-быстрому. Она требует отдельного и очень глубокого изучения, вплоть до физического и математического фундамента. Было бы легче, если б выучился я на радиофаке или физфаке… Но ситуация другая. Заморачиваться физикой радиоволн я не захотел. Да и нет большой нужды, ведь КПД самодельной аппаратуры достаточно невысок зачастую. Без грамотности в этих вопросах, да и дома на коленке сложно хорошо отладить приемник и передатчик. Вдобавок мне захотелось, чтобы самолет слал какую-то телеметрию, хотя бы самую простую, а значит передача должна идти в оба конца, и при этом команды от обоих передатчиков не должны смешиваться в эфире, а четко различаться обоими. Это еще больше усложняет ситуацию.
Выход был найден через использование компактных чипов-радиотрансиверов. Их особенность в высокой экономичности (по потерям энергии), по чувствительности према(т.е. дальности действия), не нужно сильно заморачиваться с радиопередачей, и вдобавок не нарушите законы об разрешенных для любителей радиочастотах и предельных мощностях передатчиков.
В моем случае я решил попытать счастья с MRF49XA. Кто-то скажет, что с ним работать несколько неудобно. В общем-то, есть свои недостатки, но не так уж все мрачно. В принципе подойдет. Да и как показывает практика команды уверенно принимаются с расстояния 200-220 метров (специально замерял). Вполне подойдет для самолета летающего в зоне визуальной видимости пилота.

Во-вторых, пульт управления должен уметь преобразовывать движения рук пилота в радиокоманды, (т.е. кодировать управление пилота) а бортовой приемник понимать эти команды и на их основе управлять моторами (т.е. декодировать), лампочками, или еще чем.
Т.е. пульт и приемник превращаются по-сути в два миникомпьютера. Для этих целей я использовал микроконтроллеры PIC18F4431 для приемника и PIC18F2550 для пульта. Первый взял потому, что начитался про его Power PWM модуль, т.е. улучшенный модуль ШИМ-генераторов. И хотя у него аж целых 8 ножек для PPWM, как выяснилось из datasheet, все ж генераторов только 4 (по две ноги на каждый). ШИМ сигналы нужны для управления оборотами несущего двигателя, а так же сервомашинками, двигающими рули и элероны. На большинство самолетов нужен набор: один несущий мотор, два сервомотора для двух элеронов на крыльях, и по одному сервомотору на рули высоты и направления на хвосте. И того требуется 5 ШИМ сигналов (по одному на каждый мотор). Сначала была идея отдельно управлять элеронами по-отдельности (так и сталось в прошивках), хотя как стало ясно позже на практике для элеронов вполне достаточно иметь единый сигнал для двух моторов. Но изначально я захотел иметь 5 ШИМ сигналов и еще 3 запасных для возможных расширений функциональности. Т.е. всего требовалось 8 разных ШИМ сигналов. Но для этого их генерацию пришлось реализовывать самому в прошивке, и замечательный Power PWM остался не у дел. Это все выяснилось уже после того, как мне привезли PIC18F4431. Но девать было некуда, вот и решил пустить его в ход, тем более, что ножек там с запасом – можно пофантазировать.
А что касается PIC18F2550, то тут привлекла возможность приделать к пульту USB разъем, и чтобы управлять самолетом можно было с компьютера нажатием на клавиши. Весьма оригинально, на мой взгляд. Хотя и не очень практично, как выяснилось. Однако, если развивать эту тему и создать не просто самолет, а беспилотник, который будет сам летать по GPS или ГЛОНАСС, то такой USB разьем пригодится для передачи с компа на самолет координат точек в пространстве, через которые он должен пролететь. Согласитесь, интересно…

Смотрите про коптеры:  Памятка по декодированию PWM и PPM сигнала | Записки программиста

<b>В-третьих</b>, понимать движения рук рук пилота пульт должен через джойстики и регуляторы (вроде переменных простых резисторов). Джойстики нужны непосредственно для управления положением рулей самолета, а регуляторы для подстройки средних положений этих рулей, т.е. положений, в которые они встают, когда пилот отпускает джойстики. Иногда ведь бывает, что руль при изготовлении настроен не идеально, и немноrо приподнят или опущен, либо в полете выясняется, что самолет немного кренит в какую-нибудь сторону, и чтобы компенсировать, надо чуть-чуть подстроить рули.
Я использовал джойстики такого вида. Они аналоговые. Подводишь напряжение, и на двух ножках джойстики выдают напряжения от земли до уровня питания, соответствующие осям X и Y.
В качестве регуляторов я использовал обычные переменные резисторы. Замечали, что у нах три ножки? Вот если к двум крайним подвести питание, то на средней напряжение будет меняться в зависимости от положения ручки. Т.е. резистор будет выступать в роли регулируемого делителя напряжения. Круто? Не то слово. Замечательная вещь… Здесь только надо не переборщить с сопротивлением резистора. Как видно ниже на схеме, я его напрямую подключал к аналоговой ножке микроконтроллера. А у нее входное сопротивление не бесконечное. И если взять слишком высокоомный переменный резистор, это небесконечное сопротивление будет сказываться в виде нелинейности зависимости выходного напряжения регулятора от положения его ручки. Я сначала пробовал использовать 100 КОм, и напряжение менялось от нуля до максимума лишь на 30 градусах поворота ручки. Неудобно. Если взять слишком мало, то будет пустая нагрузка на батарею питания, т.к. через регуляторы постоянно будет течь большой никому не нужный ток. В схеме ниже я использовал резисторы на 5 КОм. Работает отлично. Но народ часто использует 10 КОм в заводской аппаратуре, как я понял из одного разобранного покупного пульта. К тому же, в джойстиках что я использовал так же применяются 10 КОм-ные переменные резисторы. Не пробовал с ними. Надо попробовать. Думаю, линейность не испортится, а вот нагрузка на батарею немного спадет.

Я включил функцию запуска ракеты с самолета как уникальную функцию, которую вы не можете получить с другими самолетами. Затем откройте на секунду мощный транзистор и пустите большой ток от бортовой батареи к запальнику. В качестве запальника можно скрутить в пружинку кусочек тонкой нихромовой нити (0,1-0,2 мм квадрат) длиной несколько сантиметров, затем надеть ее на швейную иглу (в форме пружинки она лучше воспламеняется). При нажатии кнопка сгорает. Китайская пиротехническая ракета имеет фитиль, зажигающийся от искры. Есть возможность использовать китайскую пиротехническую ракету. Хотя я еще не проверял ее функциональность, поэтому не могу комментировать. Одно могу сказать точно: нужно быть очень осторожным, потому что ракета со стабилизатором полетит только вверх (но стабилизатор тяжелый и неудобный для самолета), а без него полетит по непредсказуемой траектории (эти ракеты делают на кривошипе в Китае, и никто не может гарантировать, что струя газа будет толкать ракету прямо) и может привести к самым негативным последствиям. Вот почему я не рекомендую возиться с этим. Хотя эта функция может быть легко адаптирована для метания муляжа бомбы или чего-то еще, где грузом будет какой-то механизм, например, электромагнит, который будет удерживать/отпускать муляж бомбы. Тем не менее, если отпереть транзистор, произойдет короткое замыкание бортовой батареи. Вначале ток будет ограничен сопротивлением магнитного поля электромагнита, но затем он резко возрастет, что приведет к опасному результату. Транзистор может сгореть, батарея испортиться или даже взорваться (обычно это происходит с литий-полимерными батареями). В этом случае нужно быть предельно осторожным.

СХЕМЫ АППАРАТУРЫ:
Вот схемы получившихся устройств.

Приемники

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Передатчик пульта дистанционного управления:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Про обозначения на схеме:
MD – Main Drive, т.е. несущий двигатель самолета.
EL – Элероны, т.е. управляющие ими сервомоторы.
TH – Tail Height, т.е. сервомотор хвостового руля высоты.
TT – Tail Turn, т.е. сервомотор хвостового руля направления.

Джойстик J1 управляет элеронами по оси X и рулем высоты по оси Y. Джойстик J2 управляет рулем направления по оси X, а ось Y осталась неиспользованной.
Регулятор MD-P2 управляет скоростью вращения несущего мотора. Регуляторы EL-P1, TT-P3, TH-P4 регулируют среднее положение рулей самолета. Да, для обоих элеронов я все-таки использовал общее значение. Практика показывает, что этого вполне достаточно. А для раздельной подстройки мне не хватило еще одной подходящей аналоговой ножки у PIC18F2550.
Кнопка S7-OnOff включает и выключает несущий мотор самолета. Если выключен, то не работает, если включен, то вращается со скоростью, выставленной в MD-P2. Если включен, то загорается зеленый светодиод.
Кнопка S5-Adj включает и выключает режим подстройки среднего положения рулей. При включении загорается желтый светодиод, и считываются значения с регуляторов. При выключении считывание прекращается, и последние считанные данные записываются в энергонезависимую EEPROM память микроконтроллера. При включении пульта эти значения считываются из памяти и используются при управлении. Так сделано с той задумкой, чтобы лишний раз не настраивать среднее положение рулей при каждом включении, ведь при транспортировки пульта ручки могут сдвинуться. Правда, это и не удобно для подстройки рулей во время полета самолета. Вопрос вкуса…
Кнопка S6-Rock запускает условную ракету (т.е. открывает мощный МОП транзистор IRF630N на борту самолета).
Кнопка S8-Max запускает несущий двигатель на максимальные обороты на время нажатия. При отпускании кнопки обороты возвращаются на значение выставленное в MD-P2. Мне показалось, это будет полезным при взлете. Правда, как выяснилось, не всегда контроллеры бесколлекторных моторов справляются со столь резким перепадом оборотов. Иногда вообще не реагируют. Таким образом, данную величину лучше менять плавно.

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

Схема питается от батарейки 9 В Duracell “Крона”. На входе пилота установлен регулятор LM78M05 для питания схемы напряжением 5 В. А также LM1117-3.3 для питания MRF49XA напряжением 3,3 В. Кстати, MRF49XA неплохо работает при напряжении 5 В. В первой версии моего приемника питание осуществлялось именно таким образом. И он все еще работает, если я не запускал его в течение последних шести месяцев.

В конфигурации по умолчанию MRF49XA имеет двухпроводную линию питания. В результате прочтения статей товарища Blaze и этой, я решил использовать штырь в качестве антенны. В данном даташите описан адаптер, или Balun (от Balanced-Unbalanced), который преобразует двухпроводную линию питания антенны в однопроводную. Наилучшие характеристики приема и передачи в данном случае будут достигнуты при использовании антенн с волновым сопротивлением 50 Ом. На мой взгляд, четвертьволновый штырь является здесь лучшим и самым простым решением. Там сопротивление где-то около 40 Ом, я думаю. Для этого радиоприемника я выбрал максимально возможную несущую частоту, т.е. 915 МГц, поэтому лучи прямой видимости находятся дальше друг от друга. Как вы, наверное, знаете, чем выше частота, тем дальше может быть воспринят сигнал, но тем меньше вероятность преодоления препятствия. Согласно техническому паспорту, значения, указанные для Balun, получены из схемы. Была использована антенна из куска провода длиной в четверть волны. Для частоты 915 МГц это около 82 мм.

Далее… Главный недостаток MRF49XA, на мой взгляд, это его маленький буфер приема – всего 2 байта. Думаю, авторы чипа считали, что при приеме микроконтроллер должен считывать приходящий пакет по байту-двум за цикл. Но в моем случае ситуация сложнее. ШИМ я реализовал логически простым способом: ставим единицу на одну ШИМ-ножку, ждем нужное время длительности сигнала, и переводим в ноль, а затем следующую ножку аналогично, и так по циклу. Управляющий ШИМ для моторов в классическом понимании представляет из себя цифровой импульс длительностью от 1 до 2 миллисекунд, повторяющийся с периодом в 20 миллисекунд. Период может быть другим. Если взять меньший, то моторы чуть быстрее реагировать будут, если побольше, то медленнее. А вот длительность импульса – та самая управляющая величина. Так вот длительность одного главного цикла меняется в пределах от 5 миллисекунд до 10 миллисекунд (5 ШИМ-ножек, по 1-2 мсек на каждую). Т.е. если пульт будет посылать байты чаще, чем по 2 в 10 мсек, то скорее всего они будут теряться. Таким образом, за один цикл мы можем посылать не более 2-х байт. Сначала я хотел посылать пакеты по 4 байта: байт номера устройства – упрощенный аналог IP адреса, байт номера функциональности (которой выставляем значение), байт самого значения, и байт чексуммы – число битов в первых трех байтах. Но безуспешно повозившись с этой затеей, забил и сделал просто по 2 байта: байт номера функциональности, и байт значения.
Значение каждой функциональности меняется в интервале от 0 до 100 (т.е. измеряемое с джойстиков значение напряжения в логике микроконтроллера меняется по шкале от 0 до 100), причем принятое значение 0x00 считается за непринятый пустой байт и всегда отбрасывается. Передаваемое значение 0 кодируется и декодируется как 101. Это позволило избавиться от ситуации, когда второй байт теряется и не доходит, а принятое значение 0 заставляет мотор резко “прыгать” в нуль.
Номера функциональностей меняются от 110 до 200. Остальные значения байта считаются зарезервированными.

Смотрите про коптеры:  Настройки роутера для Ростелеком: wi-fi, iptv, подключение

Что касается телеметрии, возникла проблема, которую я не смог решить с моим оборудованием. Пакеты от приемника криво доходят до пульта. В процессе разработки я разработал два приемника. В обоих направлениях каждый из них успешно передает пакеты. Прошивки двух приемников идентичны, но ни один из них не может отправить пакет на пульт. Порты ввода/вывода настроены правильно. Первый байт всегда заменяется на число больше 100, но меньше 250. В чем смысл этого? Хотя я поменял один раз модуль передатчика пульта (старый глючил) и проблема осталась. В общем, сплошная загадка.

Передача по USB так же осуществляется командами по 2 байта аналогично. Значения также меняются от 0 до 100, а номера функциональностей от 0x60 до 0x71. Правда, кодирование нуля тут отсутствует – USB и так передает надежно. Протокол передачи я использовал CDC. Мне понравилась идея общаться с устройством через COM порт на компе. Это удобнее, чем с HID, на мой взгляд. Особенно из-за несложной привязки методов к event-ам прихода на комп пакета. Прогу для компа писал на .NET с Windows Forms. Главный недостаток CDC устройства это найти для него драйвер. Себе на комп я когда-то поставил, но где взял и как делал, не помню. Сейчас найти не могу…
Желающим повозиться в HID в коде имеются заготовки. По крайней мере, устройство полностью определяется компом.
Код для USB и HID протоколов брал из семплов официальной библиотеки MLA компании Microchip.

Вот фотографии получившихся устройств.

Приемник :

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Дистанционный пульт управления:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Правда, приемник на фото первой версии – на нем отсутствует LM1117-3.3. Второй версии уже стоит на самолете.:)
На микроконтроллер PIC18F4431 пришлось поставить самодельный минирадиатор, выпиленный из радиатора от старой видеокарты. Уж больно греется он. Для этих же целей частоту тактовую использовал не максимальную в 40МГц (10МГц * PLL), а частоту самого кварца в 10МГц. Падение производительности неощутимо, а вот греться стал существенно меньше.

С помощью Pickit3 я программировала микроконтроллеры.

Он имеет штифт, который делает вращение джойстика более точным и плавным.

САМОЛЕТ:
Несколько слов о самолете. Делал модель Cessna 150 из потолочной плитки толщиной 3мм по известным урокам Сергея Шевырина “Изготовление Цессны из Потолочки”. Вот чертежи к нему. Кстати, отдельное спасибо Сергею! Замечательные уроки! Вот только не полностью раскрытым остался вопрос выкоса двигателя. Любознательным рекомендую почитать про это тут.

Составная электронная часть самолета:
– Несущий двигатель EMAX CF2822. Для такого самолета вполне подходит, но, я бы сказал, предельный вариант по мощности для данной модели. Менее мощный мотор точно брать тут не стоит.
– Воздушный винт использую композитный APC 9×4.7 (на пределе возможностей используемого двигателя).
– Сервомоторы TowerPro Microservo SG90.
– Регулятор не знаю какой на 30 ампер. Недорогой, но пашет хорошо.
– Аккумулятор 3-х баночный в 12V на 1000 мА/ч. Не очень емкий, но зато относительно легкий.

Самолет получился тяжеловат – 533 грамма. Но мотор на максимальных оборотах вполне тянет его вертикально вверх.
Вот фото:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Окно перед пропеллером сделано специально для обдува теплоотвода приемника (где греется PIC18F4431).

ЗАМЕЧАНИЯ ОТ АВТОРА:
1) Если переделать самодельный ШИМ на приемнике, чтобы одновременно все ножки в единицу ставил, а потом выключал каждую в нужный момент, то можно будет уменьшить интервал посыла пакетов, и тогда и доработать под 4 и более байтовые пакеты, если надо. Но вообще рекомендую nRF24L01 с антенной. Они имеют буфер приема в 32 байта (можно разгуляться) и за счет усилителя мощности передают на расстояние до километра по прямой. Тогда заодно и телеметрия заработать должна (в моем случае). В перспективе можно поиграться и с LoRa (Long Range) радиотрансиверами вроде Semtech SX1272. Но там тоже придется учиться с ним работать.

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

3) Управлять самолетом сложно. Сегодня многие самолеты оснащены гироскопическими стабилизаторами. Я еще не пробовал, но думаю, что это поможет стабилизировать самолет в воздухе. Я предлагаю вам попробовать.

Магазинные самолеты обычно имеют специальный разъем на панели управления для подключения к компьютеру. Программа-симулятор позволяет вам потренироваться на виртуальном самолете, прежде чем вы начнете летать на реальном самолете. Очень удобно для начинающих. Однако в своей самодельной аппаратуре я не сделал такого разъема. Проблема с моим оборудованием в том, что с самого начала нужно тренироваться на настоящем самолете. Поэтому я бы предложил сделать самолет попроще и поменьше, чем тот, который предложил Сергей Шевырин. Я сделал самолет с размахом крыльев 110 сантиметров, и теперь с трудом ремонтирую его после каждого неопытного полета.

5) Микроконтроллер PIC18F2550 имеет 28 ножек, что слишком мало для практичной панели. PIC18F4550 с 44 ножками является его расширенным аналогом. Вместо светодиодов можно заменить их на ЖК-дисплей со всеми его возможностями. Хотелось бы также упомянуть об одном из недостатков PIC18F2550. У них нет регистров ANSEL. Кроме того, аналоговые/цифровые порты сконфигурированы таким образом, что сильно ограничивают возможности разметки платы. В результате на пульте получается беспорядочный клубок проводов, как вы можете видеть на фото выше.

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

7) Из задач на будущее:
– можно поставить приемопередающую аппаратуру с большей дальностью действия, вроде nRF24L01 с антенной,
– если приделать к схеме MEMS чип-гироскоп и GPS/ГЛОНАСС/Galileo чип-навигатор, вроде отечественного ML8088s, то можно научить самолет летать самостоятельно по координатам в пространстве. Правда, тут придется повозиться с алгоритмом полета, чтобы самолет умел не только поворачивать, но и делать это плавно, и выравниваться при порывах бокового ветра. Зато интересно, на мой взгляд.
– можно приделать к самолету FPV, и тогда уж точно не оторвешься от этой игрушки. Правда, дополнительный вес потребует более мощного мотора, контроллера к нему, и более емкого аккумулятора, соответственно.

Надеюсь, моя статья кому-нибудь помогла.

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

Файлы:
PlaneControlCode

Все вопросы в
Форум.



Также вас могут заинтересовать эти статьи:

Реализация в железе

Теперь, когда с теорией разобрались, пришло время применить ее на практике. Основным компонентом системы является микроконтроллер ATmega8A, который работает на частоте 16Mhz (не потому, что я хотел 16000 позиций сервоприводов, а просто потому, что они у меня лежали без дела). Для управления МК будет использоваться UART. В результате получилась вот такая схема:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Через некоторое время появился такой платок:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

Два трехконтактных разъема я не припаивал, так как они мне не нужны, и не подряд они припаяны, так как у меня нет отверстий для металлизации, а в нижней дорожке разъема с обеих сторон можно было бы заменить провод, но программа без проблем выводит сигнал на любой разъем. Еще мне не хватает 78L05, так как в моем моторном стабилизаторе есть встроенный стабилизатор (VES).

Для извлечения данных плата подключается к

HM-R868:

Контроллер для двух мотор колес (BLDC двигателей) - LITIUM 74

В качестве альтернативы мне пришлось сделать его через шлейф, поскольку конструкция не помещалась в самолет напрямую. Штырьки разъема программирования можно использовать для включения/выключения определенных периферийных устройств (бортовые огни и т.д.) при изменении прошивки.

Плата обошлась примерно в 20грн = $2.50, приемник — 30грн = $3,75.

Спектр

Результирующие спектры (для трех случаев) аналогичны, и каждый содержит компонент постоянного тока – базовую боковую полосу, содержащую модулирующий сигнал и модулированные по фазе несущие на каждой гармонике частоты импульса. Амплитуды гармонических групп ограничены огибающей ( функция sinc ) и простираются до бесконечности. Бесконечная полоса пропускания вызвана нелинейной работой широтно-импульсного модулятора. Как следствие, цифровая ШИМ страдает от искажения наложения спектров, что значительно снижает ее применимость в современной системе связи . Ограничивая полосу пропускания ядра ШИМ, можно избежать эффектов наложения спектров.
грех⁡Икс/Икс{ Displaystyle грех х / х}

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

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector