Электроника

Использование AVR с передатчиками радиоуправления

Многие меня спрашивают, как без дорогих модулей использовать сигнал приемника радиоуправляемых моделей для своих целей, например, включения БАНО (Бортовые аэронавигационные огни) на модели самолета или подсветки на квадрокоптере. Я решил привести пример использования микроконтроллеров AVR для этих целей.

Для управления, к примеру БАНО, с выключателя передатчика я буду использовать небольшой модуль Digispark Attiny85. Памяти и архитектуры МК Аttiny85 будет достаточно для моей цели:

Вес такого модуля всего 1,8 граммов. Питание на модуль можно подать двумя способами:

  1. На борту платы установлен линейный регулятор напряжения LM7805 питание на регулятор приходит с пина VIN, поэтому можно подключить напрямую с аккумулятора до 35В, однако будьте внимательны, в некоторых моделях могут быть установлены другие регуляторы, поэтому сначала убедитесь в его модели и посмотрите максимальное входное напряжение по datasheet. Минимальное будет в частых случаях 5+1,25 = 6,25 В. Если будет ниже, регулятор будет занижать выходное напряжение. Допуски на изготовление могут быть разные, поэтому гарантировано при 7В на входе будет 5В на выходе.
  2. Подать питание 5В на P3 куда по умолчанию выведен плюс питания от порта USB.

Использовать выводы микроконтроллера для питания светодиодной ленты не правильно на выходе платы МК всего до 40мА, этого хватит на два светодиода. Поэтому необходимо использовать силовые ключи — MOSFET либо оптопару. Подбирать необходимо по вашим потребностям. Я к примеру нашел MOSFET с двумя n-каналами в одном корпусе IRF5852TRPBF.

Если совсем по фэн-шую, то необходимо подключить к аккумулятору линейный регулятор LM7812, от него подвести питание на светодиодную ленту и модуль Digispark Attiny85. Такое подключение обеспечит стабильность питание. Напомним, что мы используем N-канальный MOSFE, это значит, что мы замыкаем землю.

Чтобы подключить Digispark вам необходимо установить драйверы, ссылка для скачивания в конце статьи, внести ссылку репозитария в Arduino IDE и установить платы через менеджер плат. Полезное видео по установке драйверов и прошивки данной платы по ссылке после статьи.

В виду того, что у Digispark свой бутлоадер, подключиться к нему и проводить отладку через COM порт, в привычном понимании, не получится. Поэтому отладку скетчей лучше проводить через, к примеру, Arduino Uno. Далее на своем примере я покажу, как использовать команды для считывания данных с порта приемника и проводить преобразования на свое усмотрение.

Подключим приемник к плате Arduino Uno, питание 5В и землю берем с платы, сигнальный провод подключаем к порту 2. Выбор порта в приемнике зависит от ваших целей, я использовал порт 3 это стик газа на передатчике. Далее используем следующий код:

#define inPutPin1 2

unsigned long duration;

void setup() {
  Serial.begin(9600);
  pinMode(inPutPin1, INPUT);
}

void loop() {
  duration = pulseIn(inPutPin1, HIGH);
  Serial.println(duration);
  delay(1000);
}

Команда PulseIn будет считывать данные с порта каждую секунду по изменению входного сигнала, в нашем случае постоянно, я использовал задержку в секунду, чтобы в мониторе порта сделать скриншот:

На картинке значение 990 соответствует 0% положения стика газа, 1480 — 50%, 1965 — 100%. В зависимости от качества исполнения стиков аппаратуры значения будут колебаться в этих пределах с большей или меньшей точностью.

Теперь мы можем использовать собранные данные для дальнейшего использования.

Я использовал лазерный модуль, которым я буду управлять и подключил его к P1 платы Digispark. Сигнал с приемника буду снимать в P0.

И так получаем следующий код:

#define inPutPin1 0
#define outPutPin1 1
unsigned long duration;

void setup() {
  pinMode(inPutPin1, INPUT);
  pinMode(outPutPin1, OUTPUT);
  digitalWrite(outPutPin1, LOW);
}

void loop() {
  duration = pulseIn(inPutPin1, HIGH);
 
  if (duration > 1480) {
    digitalWrite(outPutPin1, HIGH);
  }
  if (duration < 1480) {
    digitalWrite(outPutPin1, LOW);
  }

}

Из кода следует, что если положение стика газа выше 50% мы включаем лазерный модуль, если ниже — выключаем:

Так как у нас P1 с ШИМ мы можем плавно регулировать яркость лазерного модуля, для этого нужно использовать следующий код:

#define inPutPin1 0
#define outPutPin1 1
unsigned long duration;

void setup() {
  pinMode(inPutPin1, INPUT);
  pinMode(outPutPin1, OUTPUT);
  digitalWrite(outPutPin1, LOW);
}

void loop() {
  duration = pulseIn(inPutPin1, HIGH);
 
  if (duration >= 1050) {
    duration = map(duration, 1050, 1965, 0, 255);
    analogWrite(outPutPin1, duration);
  }
  else {
    digitalWrite(outPutPin1, LOW);
  }
}

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

Примерно так выглядит схема использования двух сигналов и двух выводов для управления светодиодными приборами. Спустя время зайдя на сайт я увидел, что не хватает контакта земли в схеме. Земля соединяет минус аккумулятора и ноги №3 от мосфетов. Прошу учесть.

Светофор на Arduino

Пару лет назад я собрал для детки светофор, чтобы играть в ПДД. Собрал я его быстро, на коленке, микроконтроллер использовал Arduino Nano V3 с чипом Atmega 168P. Схема была достаточно простая,  на заре работы с МК я достаточно основательно подошел к написанию прошивки, которая была утеряна, остался только файл для загрузки.

На видео первый прототип светофора и его работа.

В коде не используется команда delay, эта команда «подвешивает» контроллер, занимает операционное время на указанную задержку. Именно по этой причине светофор работает по двум циклам параллельно используя временные метки.

Я выложил видео на Youtube и спустя пару лет мне начали писать и просить прошивку, однако, как я и говорил ранее, она была утеряна. Сегодня я решил разработать еще один вариант светофора. Для управления я буду использовать Attiny84, светофор способен подключаться в сеть протокола I2C, имеет встроенный аккумулятор на 2400 мАч и возможностью подзарядки от Micro-USB. Контроллер прошивается через программатор USB ASP для которого разъем IDC-10 размещен на плате управления. Все это располагается в напечатанном, на 3D принтере, корпусе. Корпус светодиодов тоже напечатан, размещается на гибком кабеле.

И вот наш красавец в модели:

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

 

Через несколько дней я заказал комплектующие, платы и печать корпуса.

Заказанная плата с известного поставщика JLCPCB:

 

Качество печатной платы на высоте.

 

Напечатанные детали на 3D принтере. Кнопка напечатана специальным образом, чтобы она функционировала, была подпружинена и не требовалось дополнительной работы по ее установке.

 

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

Небольшое видео работы светофора

По умолчанию длительность цикла работы 6 с, интервал мигания желтого и зеленого 700 мс, задержка между переключениями 2 с. Вы можете сообщить мне, если желаете другие интервалы.

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

Также я добавил возможность регулирования длительности основного цикла (RV1) в пределах 0-90 с, интервала мигания желтого и зеленого (RV2) в пределах 0-15 с, и задержки в переключениях (RV3) в пределах 0-15с. Чтобы расположить резисторы я заменил разъем программатора с 10-пинового на 6-пиновый. Добавил главный выключатель. Внес изменение в платы светодиодов перераспределил дорожки для более удобного монтажа. Увеличил размеры корпуса светодиодов, уж очень все плотно вмещается.

Внимание HEX файл и предназначен для загрузки через программатор.

Карманный осцилограф DSO138

Для тренировки и мелких работ приобрел себе карманный одноканальный осциллограф DSO138. Осциллограф разработан на основе микроконтроллера STM32F103C8
Это 32 битный микроконтроллер, базирующийся на ARM 32-bit Cortex™-M3 ядре Максимальная частота работы 72МГц, также он имеет 2 x 12-bit, 1 μs АЦП.  DSO138 имеет открытый код для разработки прошивки. На плате есть специальный тестовый отвод для калибровки меандра.

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

Щуп P6100 поставляется с разными кольцами и насадками, отдельно калибруется, имеет переключатель 1:10 МОм.

Осциллограф питается от 9-12В блока питания или аккумуляторов, планирую прикрепить на заднюю стенку 11.1V Li-Po 3S аккумулятор собранный из трех элементов по 1500мАч. При некоторой доработке проставок корпуса, можно разместить элементы между платой и задней стенкой. Зарядку можно проводить от встроенного регулятора напряжения.

Для доработки корпуса напечатал кнопки для выбора режимов, оригинальные мне не очень понравились.

В этой статье  представлен обзор по сборке конструктора, качество рабочих характеристик и сравнение с 4-x канальным DS203.

Простая схема ШИМ-регулятора на таймере NE555

С микросхемой NE555 (аналог КР1006) знаком каждый радиолюбитель. Её универсальность позволяет конструировать самые разнообразные самоделки: от простого одновибратора импульсов с двумя элементами в обвязке до многокомпонентного модулятора. В данной статье будет рассмотрена схема включения таймера в режиме генератора прямоугольных импульсов с широтно-импульсной регулировкой.

Схема и принцип её работы

С развитием мощных светодиодов NE555 снова вышла на арену в роли регулятора яркости (диммера), напомнив о своих неоспоримых преимуществах. Устройства на её основе не требуют глубоких знаний электроники, собираются быстро и работают надёжно. Известно, что управлять яркостью светодиода можно двумя способами: аналоговым и импульсным. Первый способ предполагает изменение амплитудного значения постоянного тока через светодиод. Такой способ имеет один существенный недостаток — низкий КПД. Второй способ подразумевает изменение ширины импульсов (скважности) тока с частотой от 200 Гц до нескольких килогерц. На таких частотах мерцание светодиодов незаметно для человеческого глаза.

 

Схема ШИМ-регулятора с мощным выходным транзистором показана на рисунке. Она способна работать от 4,5 до 18В, что свидетельствует о возможности управления яркостью как одного мощного светодиода, так и целой светодиодной лентой. Диапазон регулировки яркости колеблется от 5 до 95%. Устройство представляет собой доработанную версию генератора прямоугольных импульсов. Частота этих импульсов зависит от ёмкости C1 и сопротивлений R1, R2 и определяется по формуле: f=1/(ln2*(R1+2*R2)*C1), Гц Принцип действия электронного регулятора яркости заключается в следующем. В момент подачи напряжения питания начинает заряжаться конденсатор по цепи: +Uпит – R2 – VD1 –R1 –C1 – -Uпит. Как только напряжение на нём достигнет уровня 2/3Uпит откроется внутренний транзистор таймера и начнется процесс разрядки. Разряд начинается с верхней обкладки C1 и далее по цепи: R1 – VD2 –7 вывод ИМС – -Uпит. Достигнув отметки 1/3Uпит транзистор таймера закроется и C1 вновь начнет набирать ёмкость. В дальнейшем процесс повторяется циклически, формируя на выводе 3 прямоугольные импульсы. Изменение сопротивления подстроечного резистора приводит к уменьшению (увеличению) времени импульса на выходе таймера (вывод 3), и как следствие, уменьшается (увеличивается) среднее значение выходного сигнала. Сформированная последовательность импульсов через токоограничивающий резистор R3 поступает на затвор VT1, который включен по схеме с общим истоком. Нагрузка в виде светодиодной ленты или последовательно включенных мощных светодиодов включается в разрыв цепи стока VT1. В данном случае установлен мощный MOSFET транзистор с максимальным током стока 13А. Это позволяет управлять свечением светодиодной ленты длиной в несколько метров. Но при этом транзистору может потребоваться теплоотвод. Блокирующий конденсатор C2 исключает влияние помех, которые могут возникать по цепи питания в моменты переключения таймера. Величина его ёмкости может быть любой в пределах 0,01-0,1 мкФ.

Плата и детали сборки регулятора яркости

Односторонняя печатная плата имеет размер 22х24 мм. Как видно из рисунка на ней нет ничего лишнего, что могло бы вызвать вопросы.

Плата в файле Sprint Layout 6.0.

После сборки схема ШИМ-регулятора яркости не требует наладки, а печатная плата легка в изготовке своими руками. В плате, кроме подстроечного резистора, используются SMD элементы. DA1 – ИМС NE555; VT1 – полевой транзистор IRF7413; VD1,VD2 – 1N4007; R1 – 50 кОм, подстроечный; R2, R3 – 1 кОм; C1 – 0,1 мкФ; C2 – 0,01 мкФ.

Практические советы

Транзистор VT1 должен подбираться в зависимости от мощности нагрузки. Например, для изменения яркости одноваттного светодиода достаточно будет биполярного транзистора с максимально допустимым током коллектора 500 мА. Управление яркостью светодиодной ленты должно осуществляться от источника напряжения +12В и совпадать с её напряжением питания. В идеале регулятор должен питаться от стабилизированного блока питания, специально предназначенного для ленты. Нагрузка в виде отдельных мощных светодиодов запитывается иначе. В этом случае источником питания диммера служит стабилизатор тока (его еще называют драйвер для светодиода). Его номинальный выходной ток должен соответствовать току последовательно включенных светодиодов.
Источник: http://ledjournal.info/shemy/shim-regulyator-yarkosti-svetodiodov.html

Для себя я сделал немного другую обвязку таймера:

Ниже приведена схема из Proteus, а так же верхняя и нижняя сторона платы:

 

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

Этот архив содержит файлы в формате Gerber LED_PWM_ne555v2 — CADCAM

ШИМ-регулятор 12В на таймере NE555

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

Плата распределения питания была переделана о ней в этой статье.

Схем ШИМ-регулятора на NE555 очень много на просторах  интернета, сейчас для простоты используют микроконтроллеры ATmega. С одной стороны, для реализации ШИМ-регулятора с Atmega на маленькой платке требуется больше времени для проектирования схемы, чем на NE555 и написание прошивки, с другой — МК раскрывает больше возможностей, например как в этом Диммере(ссылка).

И  все же хочется рассказать именно об этой. Ниже приведена схема регулятора.

Регулятор предназначен для подключения к питанию 12В, имеет встроенный, наверное самый распространенный, стабилизатор напряжения на 5В. Таймер открывает mosfet для нижнего плеча.

Ниже приведена плата

И модель:

Чуть позже я немного оптимизировал расположение компонентов и немного переделал PCB:

 

Контроллер для StickShaker

Во время сборки платформы симулятора я столкнулся с проблемой подключения StickShaker штурвалов к программе управления ProSim. StickShaker предназначен для физического оповещения критических ошибок управления пилотом. Долго я искал и по нашим и зарубежным форумам, хоть какую-то информацию о переменных которыми обменивается ProSim, но все оказалось тщетно. За пару часов я собрал простой логер  для SerialUSB на базе Arduino, который писал на карточку памяти. Перед этим я попробовал сделать это виртуально слушая  COM, но как устройство ноут не определялся в ProSim. После сборки устройства написал прошивку, подключил и начал создавать в симуляторе аварийные моменты. И! Вуаяля! На карточке записался текстовый файл со всеми нужными переменными.

Контроллер представляет собой связку низковольтовых реле и микроконтроллера, чтобы не тратить время на разработку печатной платы, я прикупил ArduinoNano, а также модуль с двумя реле на 5В и всей необходимой развязкой.

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

Заодно немного потренировался в SolidWorks по макетированию плат. На фото ниже, что получилось, плату вытравливал самым простым способом, надо переходить на фоторезист.

Спустя год, я взялся за контроллер снова, чтобы переделать его для подключения по Ethernet. Будет реализован WEB интерфейс для настройки устройства. Прототип собран на макетных платах для отладки прошивки, так же сделана схема симуляции в Protus, там же оптимизирована макетная плата. После отладки, будет заказана плата на производстве в Китае с установкой всех компонентов, нанесением паяльной маски и шелкографии. На новом устройстве исключены реле, они заменены на IGBT, которые установлены на одну плату с микроконтроллером. Микроконтроллер используется ATmega164p в корпусе TQFP44 с возможностью заменой на STM32 в корпусе LQFP44. В устройстве два независимых канала, каждый IGBT установлен на индивидуальный радиатор с датчиком температуры и вентилятором охлаждения на 24В. Для кулеров отведено место в прошивке для включения по таймингу и по предкритическому порогу температуры. Питание платы производиться отдельным контуром, используя внешний блок питания на 24В. Для оптимизации плата рассчитана под существующий корпус медиаконвертора от D-Link размерами 120х90х25 (в мм).

Сведения по старой модели можно найти на сайте GrabCAD.

 

Плата распределения питания и регулирования подсветки (Led Adj Splitter)

В MIP установлены панели, которые имеют дополнительную светодиодную подсветку (BackLight).

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

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

Во втором макете было оптимизировано расположение разъемов относительно друг друга и уменьшен размер.

Вся электроника установлена с обратной стороны платы и защищается дополнительной накладкой перед установкой на панель.

Плата была собрана по первому макету. Для реализации включения подсветки всей панели от тумблера питания на панели OverHead, в плату были добавлены 2 MOSFET, по одному на группу из 5 шим.

Позже были cделаны компактные  ШИМ регуляторы на таймере NE555.

Они были установлены в панель для резервирования каналов ШИМ.

Плата распределения питания PowerSplitter

В MIP очень много устройств, которые питаются от LRS-350-12V, поэтому потребовалось разработать плату распределения питания, чтобы не подключать все на одну пару клемм блока питания. Основные требования, это небольшие размеры и разъемные соединения. Я начал поиск компромисса между токами, шириной дорожек и нагрузкой на разъемы.

Исходя из того, что устройства могли потреблять до 20А разом, я сделал небольшой расчет по ширине дорожек:

  • I = 20A
  • Lпр = 50mm
  • D = 1 oz (35мкм)
  • tокр = 25 С°
  • tизм = 10 С°

Исходя из этих данных получатся, что рекомендуемая ширина дорожки 18,7мм.

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

  • I = 5A
  • Lпр = 50mm
  • D = 1 oz (35мкм)
  • tокр = 25 С°
  • tизм = 10 С°

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

Первым макетом была плата с разъемами XT60.

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

Второй макет с разъемами Wago серии 235 с быстрозажимными клеммами. В концепции PCB было все просто, надо было разделить медный слой на две половины вдоль платы.

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

Ну и теперь третий макет, который был установлен в MIP.

Тут я использовал разъемы фирмы Degson типа  2EDGK-5.0-2P (папа) и 2EDGR-5.0-2P(мама). В вилках винтовые клеммы для зажима проводов, розетка и вилка защищены ключом от переплюсовки, шаг контактов 5 мм (почти 2″).

Для защиты устройств и БП были дополнительно установлены самовосстанавливающиеся предохранители  фирмы Raycham типа RUE300 (3А) и RUE500 (5А). 5А были установлены для двигателей регулировки педалей, 3А под дополнительные нужды. Всего распределитель питания содержит 16 разъемов для подключения устройств с питанием на 12В.

Плата имеет размер 100х60, ширина несущих дорожек 10 мм, ширина отводов — 4 мм.

WP2Social Auto Publish Powered By : XYZScripts.com