Схема радиоуправляемой машинки на 4 команды. Делаем радиоуправление для самолета. Шифрование или "привязка" пульта к приёмнику



Данное устройство предназначено для управления 4 различными нагрузками (например управление гаражными воротами, эл. освещением и прочее). Допускается одновременное нажатие кнопок в любой комбинации (для режима без фиксации команды). Приемник имеет 2 режима работы: – 1 режим без фиксации команды (перемычка на приемнике убрана) – команды выполняются только в момент удержания соответствующей кнопки (кнопок). – 2 режим с фиксацией команды (установлена перемычка на приемник) – команда выполняется после нажатия кнопки, повторное нажатие кнопки отключает команду.

Передатчик состоит из кодера на микроконтроллере, и радиомодуля для передачи данных по радиоканалу. Модуляция – ШИМ. В передатчик заложен алгоритм помехоустойчивой передачи данных, для защиты от ложных срабатываний. Потребление тока в режиме покоя составляет 0,1мкА в режиме сна, и 11мА во время передачи (от источника напряжения 3В). 0,3мкА в режиме сна, и 15мА во время передачи (от источника напряжения 6В). Для управления на небольшой дистанции достаточно одной литиевой батареи. Для более дальней связи используются 2 литиевых батареи. Плата передатчика – 2-х сторонняя. Обратная сторона используется в качестве экрана. Фольга только удалена под катушкой L2.

Особенности передатчика:

– для сверхнизкого потребления тока в режиме сна в контроллере пришлось отключить одну важную функцию (с этой функцией потребление тока составило бы 60 мкА, что не есть хорошо), поэтому в некоторых ситуациях контроллер при подключении батареи может зависнуть. Для вывода его из этого состояния нужно извлечь батарею, нажать на кнопку SB4 (для разряда конденсаторов), и снова установить батарею до успешного старта контроллера. В нормальном рабочем режиме с установленной батареей зависаний не будет (пока батарея не разрядится).

– если при подключении батареи удерживать кнопку SB1, то передатчик перейдет в режим передачи сигнала 100 % амплитудной модуляцией частотой 1кГц. Это сделано для тех кто самостоятельно будет собирать и настраивать сверхрегенеративный приемник на нужную частоту (по сигналу передатчика удобно производить данную настройку).

– если при подключении батареи удерживать кнопку SB2, то передатчик перейдет в режим постоянной передачи кодовой посылки 0101 (2 светодиода горят, 2 потушены). Этот режим удобен для тех, кто будет тестировать дальность работы устройств.

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

А теперь о дальности работы. При питании передатчика от источника напряжением 6В и нахождении передатчика на 7 этаже мне удавалось передавать команды на расстояние до 1км. Причем внутри дома сигнал передатчика пробивал насквозь 7 этажей (до 1 этажа), прием даже велся в металлическом лифте на пути следования с 7 до 1 этажа. При нахождении передатчика на уровне 1,5 метра от земли сигнал передавался до 300 метров при прямой видимости. В качестве антенн были использованы куски провода по 17см.

Прошивки бесплатны, и не имеют никаких ограничений. Кодер и декодер имеют индивидуальный код (могут быть перестроены на сотни миллиардов различных комбинаций). При программировании контроллеров не забываем о калибровочных константах http://pro-radio.ru/controllers/3131-2/ (у кого PICkit – могут о этом не беспокоиться, программатор сам все сделает).

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

Эта схема позволяет при помощи ДУ последовательно переключать четыре объекта. Причем, число объектов может быть увеличено до девяти (достаточно отключить вывод 1 от вывода 15 D2, а вывод 15 D2 соединить с общими минусом, и использовать все выходы D2 кроме нулевого). Идея дешифрации сигнала пульта здесь в том, чтобы реагировать на некоторое время удержания кнопки пульта нажатой.

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

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

Сигналы пульта ДУ принимаются фотоприемником F1. В отсутствие сигнала пульта на выходе фотоприемника (выв. 3) единица. Диод VD1 закрыт. Через его обратное сопротивление, а так же, сопротивления R1 и R2 конденсатор С2 заряжен до уровня логической единицы. Счетчик D1 обнулен. На входе (вывод 14) D2 ноль.

При поступлении сигнала пульта на выходе F1 образуются отрицательные импульсы. Первый же из них посредством диода VD1 разряжает С2 и на выводе 11 D1 устанавливается единица. Теперь счетчик D1 считает импульсы, поступающие на его вход "С" с фотоприемника. Спустя некоторое время появится логическая единица на его выходе, к которому подключен вход счетчика D2 (в данном случае, на выводе 1). Это приведет к переключению счетчика D2 на очередное положение.

Если нужно продолжить переключение дальше можно не опускать кнопку пульта, либо её отпустить и нажать снова. При отпускании кнопки пульта импульсы на выходе F1 прекращаются и устанавливается логическая единица. Спустя некоторое время С2 через обратное сопротивление VD1, а так же R2 и R1, зарядится до логической единицы. Счетчик D1 обнуляется, и на всех его выходах устанавливаются логические нули.

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

Конденсатор С1 служит для подавления импульсов - помех, которые могут быть на выходе фотоприемника. Питается схема постоянным стабилизированным напряжением 5V. Увеличивать это напряжение больше 5,5V нельзя, так как это приведет к нарушениям в работе F1.

В схеме можно использовать практически любой интегральный фотоприемник с встроенным резонансным фильтром и формирователем логических импульсов, то есть, от систем ДУ современных телевизоров.

Подготовил инженер М. И.Зингер

Как сделать приемник и передатчик для радиоуправления моделями с одновременной подачей двух команд

Консультация № 20

Уважаемый товарищ!

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

П. 5. Постройка (приобретение) и любительских радиостанций может производиться -ко после получения от Государственной инспекции электросвязи областного (краевого) управления Мини-стерства связи или Министерства связи союзной респуб-лики извещения о разрешении постройки (приобрете-ния) и эксплуатации радиопередающего устройства.

П. 6. Для получения разрешения на постройку (при-обретение) и эксплуатацию любительской коротковол-новой или ультракоротковолновой радиостанции кол-лективного или индивидуального пользования организа-ции и отдельные радиолюбители подают через комите-ты или радиоклубы ДОСААФ в Государственную ин-спекцию электросвязи областного (краевого) управле-ния Министерства связи следующие документы:

а) Заявление-анкету с фотокарточкой в I экзем-пляре;

б) Ходатайство местного комитета ДОСААФ в I эк-земпляре.

П. 24. Любительским передатчикам индивидуально-го и коллективного пользования для радиоуправляемых моделей разрешается работать мощностью не более 1 Вт, типом излучения А2 при ширине полосы излуче-ния не более 25 кГц, с передачей команд телеуправле-ния в диапазона-х 28,0 - 28,2 МГц и 144 - 146 МГц и на частоте 27,12 МГц ± 0,05%.

Использование таких передатчиков для проведения радиосвязей КАТЕГОРИЧЕСКИ ЗАПРЕЩАЕТСЯ.

П. 26. Передатчики для радиоуправляемых моде-лей разрешается использовать только на территории

области (края, республики), где выдано разрешение, П. 27. При выезде «а соревнования в другую об-ласть (край, республику) владелец передатчика обя-зан оформить в местной Государственной инспекции электросвязи временное разрешение на право вывоза передатчика с указанием места назначения и срока пре-бывания на соревнованиях. выданного временно-го разрешения должна быть выслана в Государствен-ную инспекцию электросвязи по месту соревнований. П. 28, За изготовление, хранение и использование радиопередающих устройств без разрешения Государ-ственной инспекции электросвязи владельцы этих уст-ройств, в зависимости от характера совершенного ими нарушения, несут уголовную или административную ответственность в соответствии с указами президиумов Верховных Советов союзных республик «Об ответствен-ности за незаконное изготовление и использование ра-диопередающих устройств».

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

Принцип работы устройства радиоуправления моде-лями заключается в следующем. У оператора нахо-дится передатчик с пультом управления. В схеме пуль-та управления имеется шифратор, основными узлами которого являются два генератора, настроенные на раз-ные частоты звукового диапазона, и коммутатор. Вклю-чение и выключение генераторов (подача команд) осу-ществляется нажатием и отжатием соответствующих кнопок на пульте. Генераторы с помощью электронного-коммутатора поочередно подключаются к модулятору мощного каскада передатчика приблизительно на время 0,025 с. Процесс коммутации генераторов происходит непрерывно. При нажатии кнопки подачи команды -ного из генераторов передатчик излучает в течение 0,025 с серию радиоимпульсов, частота повторения-ко-торых равна частоте включенного генератора низкой частоты. В следующие 0,025 с передатчик излучает немодулированный сигнал. При нажатии кнопок подачи команд сразу друх генераторов генера- передатчика поочередно, через каждые 0,025 с, бу-дет промодулирована различными звуковыми частотами. Приемник радиоуправления находится на модели. Он имеет в своем составе дешифратор. Модулирован-ный сигнал передатчика усиливается и детектируется приемной части модели, в результате чего выделяются низкочастотные сигналы поданных команд. В дешифра-торе для разделения сигналов команд используются се-лективные реле, каждое из которых срабатывает только при появлении на его входе сигнала определенной низ-кой частоты. Выходы селективных реле соединяются с соответствующими исполнительными механизмами (электромотор или электромагнитная ).

ПЕРЕДАЮЩЕЕ УСТРОЙСТВО

Передающее уст-ройство (рис. 1) включает в себя три автономных бло-ка: передатчик с модулятором, шифратор с коммутато-ром и пультом управления, батарею питания.

Передатчик с модулятором состоит из задающего генератора (77, Т2), усилителя мощности (ТЗ) и моду-лятора (Т4, Т5). представляет собой двухтактный автогенератор, частота которого) устанавливается конденсатором С5 в диапазоне 28,0 - 28,2 МГц. Связь задающего генератора с усилителем мощности индуктивная. мощности собран на транзисторе типа П609 по схеме с общей базой. Моду-ляция несущей осуществляется запиранием транзистора ТЗ командными сигналами звуковой частоты. Напря-жение звуковой частоты поступает на базу транзисто-ра Т4 и полностью открывает его, что приводит к запи-ранию транзистора Т5. При отсутствии модуляции транзистор Т5 открыт и передатчик непрерывно излу-чает несущую частоту.

Начинающему конструктору можно рекомендовать исключить контур L3 С8 в коллекторной усилите- мощности и между конденсатором С7 и антенной включить удлинительную катушку. Несмотря на про-игрыш в к. п. д. и потерю мощности, в этом случае зна-чительно упрощается регулировка при достаточном уровне сигнала в антенне. В качестве передающей ан-тенны используется длиной 120 мм.

Рис. 1. Принципиальная схема передающего устройства

Блок шифратора состоит из двух генераторов низ-кой частоты (Т6, Т7 и Т8, Т9), управляющих каскадов (Т10 и Т11) и электронного коммутатора [Т12 и Т13). Генераторы низкой частоты собраны по схеме -вибратора с последовательным колебательным конту-ром. мультивибратора определяет-ся параметрами контура, т. е. индуктивностью L4 и одним из конденсаторов С16 или С17 для первого ге-нератора и соответственно индуктивностью L5 и кон-денсаторами С18 или С19 для второго. Конденсаторы подключаются кнопками Кн1-Кн4 (подача команд). В данном случае каждый генератор рассчитан на две команды, но при необходимости их количество можно увеличить.

Звуковые колебания от генераторов НЧ поступают на управляющие транзисторы Т10 и Т11 соответствен-но, которые работают в режиме электронного клю-ча. Работой электронных ключей управляет коммутатор (Т12, Т13), собранный по схеме симмет-ричното мультивибратора, поочередно включая их на время 0,025 с. Питается передатчик и шифраторов от трех батарей типа 3336 Л, соединенных последова-тельно.

Изготовление передающего устройства. Все катушки индуктивности и дроссели передатчика и блока шифра-торов самодельные. Катушки и L3 намотаны на по-листироловом каркасе диаметром 7 - 8 мм и высотой 20 - 25 мм. В торце каркаса имеется отверстие под винт МЗ для крепления катушки к монтажной плате. Обмотки содержат по 14 витков провода ПЭВ-1 0 0,8 мм с отводом от середины. Катушка связи L2 на-матывается поверх катушки Ы в средней ее части и содержит три витка монтажного провода ПМВГ 0 0,35 или аналогичного. Намотка однослойная, виток к витку. Обмотка дросселя Др1 выполнена на корпусе резистора ВС-1 с сопротивлением более 50 кОм и со-держит 170 - 180 витков провода ПЭВ-1 0 0,2 мм. Др1 порядка 50 мкГ. Подстроечный кон-денсатор С5 типа КПК емкостью 5 - 20 пФ. Катушки L4 и L5 выполнены в броневых сердечниках Б18 и со-держат 1500 витков провода ПЭВ-1 0 0,1 мм. При отсутствии сердечников типа Б18 их можно заменить на сердечник СБ28а, увеличив число витков намотки до 3000. Транзистор П609 можно заменить на два -раллельно включенных транзистора типа П416. Такая замена приведет к уменьшению мощности в антенне, но дальность действия аппаратуры будет вполне доста-точной для первых опытов в радиоуправлении. Удли-нительная катушка, включаемая при отсутствии конту-ра L3 С2 содержит 160 витков провода ПЭЛ-1 диамет-ром 0,8 на каркасе диаметром 7 мм.

Рис. 2. Монтажная плата передатчика

Рис. 3. Монтажная блока шифраторов

Конденсаторы СЗ, С4 и С8 типа КТК, КДК или КЛС. Остальные неполярные конденсаторы могут быть одного из типов МБМ, БМ, КСО и КЛС. Электроли-тические конденсаторы типа ЭМ или « ». Все ре-зисторы - УЛМ-0,125 или МЛТ-0,5.

В качестве коммутирующих элементов Кн1 - Кн4 могут применяться кнопки любого типа, но без фикса-ции. Желательно использовать двухпозиционные вы-ключатели с фиксацией рычага в нейтральном положе-нии или самим изготовить их на базе выключателей типа ВТ-3.602.011.

Регулировка передающего устройства. Тщательно проверив , качество паек, отсутствие коротких замыканий, включают питание и измеряют общий по-требляемый ток. Он должен быть не более 80 - 100 . Миллиамперметр включается в общий провод между выключателем и источником питания. Обычно задающий генератор при исправных деталях сразу начи-нает работать. Настройку задающего генератора и усилителя мощности следует производить с помощью волномера или по шкале связного приемника, имеющего указанный диапазон. Установив конденсатором С5 нужную частоту, настраивают выходной контур L3 С8 по максимальным показаниям волномера. про-изводится с подключенной антенной. К волномеру -ключают небольшой (10 см) провода и относят его от передатчика на такое расстояние, чтобы прибор волномера не зашкаливал. При наличии лампового вольтметра к основанию антенны подключают выносной высокочастотный детекторный пробник и настраивают выходной L3 С8 по наибольшим показаниям вольтметра. При отсутствии выходного контура наст-ройка передатчика сводится к установлению нужной частоты задающего генератора. Для проверки работо- модулятора кратковременно закорачивают коллектор с эмиттером у транзистора Т4. При этом общий потребляемый ток передатчика должен резко уменьшиться до 20 - 30 ,мА. Окончательная настройка контуров ведется после установки передатчика в ко-жух.

Для регулировки блока шифраторов к нему под-ключают источник питания и замеряют общий ток по – , требления, который не должен превышать 25 мА. Если ток превышает указанную величину, необходимо про-вести покаскадную проверку токов транзисторов. При-мерные значения токов и включения миллиампер-метра указаны на рис. 1. Проверка работоспособности коммутатора заключается в измерении напряжения эмиттер-коллектор транзисторов Т12 и 773. Это напря-жение должно быть равно примерно половине напря-жения питания, т. е. около 6 В. Правильно собранный никакой регулировки не требует.

Рабочие частоты генераторов низкой частоты вы-браны следующие: для первой команды - 1750 Гц, для второй - 2500 Гц, третьей - 3250 Гц и четвертой - 4000 Гц. В соответствии с приведенными выше моточ-ными данными индуктивность катушек L4 - L5-0,4 Г. Ориентировочные значения емкостей контурных конден-саторов при этом будут следующие: С16-20000 пФ (1750 Гц), С17-10000 ПФ (2500 Гц), C78-6200 пФ (3250 Гц) и С7Р-3900 пФ (4000 Гц). Более точная на-стройка на частоты команд производится подбором ука-занных емкостей. Для проверки генератора низкой ча-стоты необходимо нажать одну из кнопок подачи команд этого генератора. низкой частоты, возникающие при подаче команды, можно наблюдать с помо-щью осциллографа, вход которого подключается к рези-стору R14. При отсутствии осциллографа, тестером за-меряют напряжение на резисторе R14. Без команды оно-практически равно нулю, при подаче команды - возра-стает до 1В. У второго генератора наме-ряется на резисторе R23. Добившись нормальной ра-боты генераторов низкой частоты и коммутатора, пере-ходят к установке частот модуляции. Измерить частоту модуляции можно с помощью частотомера осцил-лографа и звукового генератора по фигурам Лиссажу, В последнем случае напряжение сигнала низкой часто-ты с резистора R14 или R23 подается на вход верти-кального усилителя осциллографа, а напряжение от звукового генератора - на вход горизонтального -лителя (развертка осциллографа выключается). При-равенстве частот сигналов от звукового генератора и от генератора передающего устройства на экране ос-циллографа появится неподвижная замкнутая , близкая по форме к окружности или эллипсу.

Если измерительных приборов нет, то поступают следующим образом. Устанавливают частоты команд приближенно, сохраняя нужные соотношения между ни- , а точную настройку на частоты команд про-изводят в дешифраторах приемного устройства.. Известно, что для увеличения частоты настрой-ки контура в два раза, при неизменной индук-тивности, величину емкости конденсатора следует умень-шить в четыре раза. С другой увеличение кон-турной емкости в два раза приведет к уменьшению ча-стоты настройки в 1,4 раза. Таким образом, приняв величину емкости С16-6,02 мкФ для каждой следующей команды, будем устанавливать конденсаторы с емко-стью в два раза меньше предыдущей, т. е. 10 000 пФг 5000 пФ, 2500 пФ и т. д. В этом случае, если первая была, например, 1700 Гц, то для последующих емкостей мы получим соответственно частоты 2400, 3400, 4800 Гц и т. .

Расчет приведен только в виде примера. Чтобы из-бежать кратности частот, емкость конденсаторов сле-дует изменять не в два, а в 1,7 - 1,8 раза.

Модулятор передатчика (Т4 и Т5) не требует под-бора каких-либо элементов. При исправной работе передающего устройства подача двух команд одновремен-но вызывает уменьшение общего тока потребления при-близительно на 30 - 40%.

ПРИЕМНОЕ УСТРОЙСТВО

Подготовил инженер Марат Исакович Зингер

Редактор Э. И. Меньшенина

Технический редактор М. А. Медведева

Корректор Р. М. Рыкунина,

Подписано к печати 22. 7. 74 г. Изд № 2/288з Формат 84X108 1/32.

Усл. п. л. 0,84 Уч.-изд. л. 0,85

Изд- ДОСААФ, Б-66, Новорязанская ул., л. 26

Изд- ДОСААФ. Зак. 479

В этой статье, вы увидите как сделать радиоуправление на 10 команд своими руками. Дальность действия данного устройства 200 метров на земле и более 400м в воздухе.



Схема была взята на сайте vrtp.ru
Передатчик

Приемник


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

Для работы нам потребуются список деталей:
1) PIC16F628A-2 шт (микроконтроллер) (ссылка на алиекспрес pic16f628a )
2) MRF49XA-2 шт (радио трансмиттер) (ссылка на алиекспрес MRF 49 XA )
3) Катушка индуктивности 47nH (или намотать самому)-6шт
Конденсаторы:
4) 33 мкФ (электролитический)-2 шт
5) 0,1 мкФ-6 шт
6) 4,7 пФ-4 шт
7) 18 пФ-2 шт
Резисторы
8) 100 Ом-1 шт
9) 560 Ом-10 шт
10) 1 Ком-3 шт
11) светодиод-1 шт
12) кнопки-10 шт
13) Кварц 10MHz-2 шт
14) Текстолит
15) Паяльник
Как видите устройство состоит из минимум деталей и под силу каждому. Стоит только захотеть. Устройство очень стабильное, после сборки работает сразу. Схему можно делать как на печатной плате. Так и навесным монтажом (особенно для первого раза, так будет легче программировать). Для начала делаем плату. Распечатываем


И травим плату .

Припаиваем все компоненты, PIC16F628A лучше припаивать самым последним, так как его нужно будет еще запрограммировать. Первым делом припаиваем MRF49XA


Главное очень аккуратно, у нее очень тонкие выводы. Конденсаторы для наглядности. Самое главное не перепутать полюса на конденсаторе 33 мкФ так как у него выводы разные, один +, другой -. Все остальные конденсаторы припаиваете как хотите у них нет полярности на выводах


Катушки можно использовать покупные 47nH но лучше намотать самому, все они одинаковые (6 витков провода 0,4 на оправке 2 мм)

Когда все припаяно, хорошо все проверяем. Далее берем PIC16F628A, его нужно запрограммировать. Я использовал PIC KIT 2 lite и самодельную панельку
Вот ссылка на программатор ( Pic Kit2 )


Вот схема подключения


Это все просто, так что не пугайтесь. Для тех кто далек от электроники, советую не начинать с SMD компонентов, а купить все в DIP размере. Я сам так делал в первый раз


И все это реально заработало с первого раза


Открываем программу, выбираем наш микроконтроллер

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

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

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

Итак, если мы хотим установить привод в крайнее левое положение нужно слать импульсы длительностью 0,9мс с интервалом 20мс, если в крайнее правое - длительность 2,1мс, интервал тот же, ну со средними положениями аналогично. Как оказалось, регуляторы скорости управляются аналогично. Те, кто в теме скажут что это обычный ШИМ , который реализовать на любом микроконтроллере - плевое дело. Вот и я так решил, купил в местном магазине сервомашинку и склепал на макетке для нее так называемый сервотестер на ATtiny13. И тут оказалось, что ШИМ не совсем простой, а с подводными камнями. Как видно из вышеприведенной диаграммы, скважность (отношение длительности импульса к длительности периода) от 5% до 10% (в дальнейшем я за крайние положения принимаю импульсы длительностью 1,0мс и 2,0мс) для 256-значного ШИМ счетчика ATtiny13 это соответствует значениям от 25 до 50. Но это при условии, что на заполнение счетчика уйдет 20мс, а на деле так не получится и для частоты 9,6МГц и предделителя 1024 нужно ограничить счетчик значением 187(ТОР), в таком случае у нас получится частота 50,134Гц. В большинстве (если не во всех) сервомашинок нету точного генератора опорной частоты и поэтому частота управляющего сигнала может немного плавать. Если оставить ТОР счетчика 255, то частота управляющего сигнала будет 36,76Гц - на некоторых приводах оно будет работать (возможно с глюками), но далеко не на всех. Итак, теперь у нас 187-значный счетчик, для него 5-10% соответствуют значениям от 10 до 20 - всего 10 значений, немного дискретно получится. Если думаете поиграть с тактовой частотой и предделителем ниже привожу сравнительную табличку для 8-битного ШИМа:

Но ведь у большинства микроконтроллеров есть 16-битный (и больше) таймер для генерации ШИМ. Здесь проблема с дискретностью сразу пропадет еще и частоту можно точно выставить. Долго расписывать не буду, сразу даю табличку:

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

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

С одной сервомашинкой разобрались, но для самолета их нужно минимум три и еще регулятор скорости. Решение «в лоб» - взять микроконтроллер с четырьмя каналами 16-битного ШИМ, но такой контроллер будет стоять дорого и, скорее всего, займет много места на плате. Второй вариант - запилить программный ШИМ, но занимать процессорное время - это тоже не вариант. Если снова посмотреть на диаграммы сигнала, то 80% времени он не несет никакой информации, поэтому рациональнее было бы ШИМом задавать только сам импульс 1-2мс. Почему скважность изменяется в таких узких пределах, ведь проще было бы и формировать и считывать импульсы со скважностью хотя бы 10-90%? Зачем нужен тот неинформативный кусок сигнала занимающий 80% времени? Я заподозрил, что, возможно, эти 80% могут занимать импульсы для других исполнительных механизмов, а потом этот сигнал разделяется на несколько разных. То есть, в периоде длительностью 20мс могут уместится 10 импульсов длительностью 1-2мс, затем этот сигнал каким-то демультиплексором разделяется на 10 различных с длительностью периода как раз 20мс. Сказано - сделано, нарисовал в PROTEUS такую схемку:


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


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


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


Интересно, что возможное количество значений ШИМа ровно в 1000 раз меньше частоты таймера.
Программная реализация
Для ATmega8 с тактовой частотой 16МГц в AtmelStudio6 все реализуется следующим образом: вначале задефайним значения счетчика для крайних положений сервомашинок:
#define LOW 16000U #define HIGH 32000U
затем инициализируем генератор ШИМа на таймере/счетчике1:
OCR1A = HIGH; //Устанавливаем ТОР TCCR1A = 0< Остается реализовать прерывания:
ISR(TIMER1_COMPA_vect) //прерывание по достижению верхнего значения счетчика, непосредственно перед началом следующего импульса { //c_num- переменная, обозначающая номер текущего канала, channels - массив значений каналов if (c_num <= 7) { OCR1B = channels; } else { OCR1B = 0; //отключаем ШИМогенератор для несуществующих в демультиплексоре 8 и 9 канала } } ISR(TIMER1_COMPB_vect, ISR_NOBLOCK)// прерывание возникающее в конце импульса { if (c_num <= 7) { PORTC = c_num; //для каналов 0-7 выводим номер канала на PORTC } //и изменяем значение счетчика от 0 до 9 if (c_num >= 9) { c_num = 0; } else { c_num++; } }
Глобально разрешаем прерывания и готово, забивая в channels значения от LOW до HIGH изменяем значения на каналах.

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

Ну с теорией разобрались, пришло время все это реализовать. Мозгом системы выбран микроконтроллер ATmega8A, тактируется от кварца на 16МГц (не потому, что я захотел 16000 позиций сервомашинки, а потому, что у меня такие валялись). Управляющий сигнал для МК будет поступать через UART. В результате получилась вот такая схемка:


Спустя некоторое время появилась вот такая платка:




Два трехштыревых разъема я не припаял потому, что они мне не нужны, а не подряд они впаяны поскольку у меня нету металлизации отверстий, а в нижнем разъеме дорожки с двух сторон, можно было бы заменить проволочкой, но программно нету проблемы выводить сигнал на любой разъем. Также отсутствует 78L05 ибо в моем регуляторе двигателя есть встроенный стабилизатор (ВЕС).
Для получения данных к плате подключается радиомодуль HM-R868:


Изначально думал втыкать его прямо в плату, но эта конструкция не помещалась в самолетик, пришлось сделать через шлейф. Если изменить прошивку, то контакты разъема для программирования можно использовать для включения/отключения каких-нибудь системам (бортовые огни и т.п.)
Плата обошлась примерно в 20грн = $2.50, приемник - 30грн = $3,75.

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

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


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

Но потом меня посетила одна мысль. В свое время я тащился от всяких авиасимуляторов: «Ил-2 Штурмовик», «Lock On», «MSFSX», «Ка-50 Черная Акула» и др. Соответственно был у меня джойстик Genius F-23 и решил я прикрутить его к вышеописанной проге с ползунками. Погуглил как это реализовать, нашел этот пост и получилось! Управлять самолетиком с помощью полноценного джойстика, мне кажется, гораздо круче, чем маленькой палочкой на пульте. Вообщем все вместе изображено на первой фотке - это нетбук, джойстик, преобразователь на FT232, и подключенный к нему передатчик HM-T868. Преобразователь подключается 2м кабелем от принтера, что позволяет закрепить его на каком нибудь дереве или чем-то подобном.

Пуск!

Итак, есть самолетик, есть радиоуправление - Поехали!(с) Первый полет производился над асфальтом, результат - сломанный пополам фюзеляж и полувырванный двигатель. Второй полет производился над более мягкой поверхностью:

Последующие полетов 10 были тоже не особо удачными. Основной причиной я считаю сильную дискретность джойстика - по крену он выдавал только 16 значений (вместо возможных 256), с осью тангажа - не лучше. Но так как в результате испытаний самолет был значительно поврежден и не подлежит ремонту:


- проверить правдивость этой версии пока не представляется возможным. В пользу этой версии говорит и зафиксированная на видео попытка выровнять самолет - он летит накрененным, а потом резко заваливается в противоположную сторону (а должен плавно). Вот более наглядное видео:

Дальность действия аппаратуры - примерно 80м, дальше тоже ловит, но через раз.
Ну вот и все, благодарю за внимание. Надеюсь, приведенная информация окажется для кого-то полезной. Буду рад ответить на все вопросы.