DIY OSD

Хочу рассказать о самой дешевой системе OSD, стоимостью около 20 у.е.
Захотелось поставить OSD себе на квадрокоптер для получения полетных характеристик, точнее хотелось видеть напряжение батареи когда улетаешь достаточно далеко, ну так чтоб вернуться. Во время изучения рынка OSD и возможностей его изготовления я наткнулся на DIY OSD, про нее и пойдет речь.
Возможности DIY OSD: (может все)

  • Напряжение
  • Потребление тока
  • Расход энергии
  • Время в полете
  • Координаты БЛА
  • Скорость
  • Высота
  • Направление на “дом”
  • Расстояние до “дома”
  • RSSI
  • Сигнализации параметров
  • Отображение максимальных параметров после полета

Фото экрана с OSD текстом

Схема OSD

Работа OSD (нюансы)
Устройство не генерирует изображение, а накладывает текст на сигнал с изображением, поэтому подключив его к монитору без источника сигнала ни какой картинки не будет. Подключать надо так

После подключения видеокамеры и OSD к монитору от символов были заметны белые горизонтальные полосы. Исправляется увеличением резистора R2, теперь R2 = 240 Ом, дальнейшее увеличение приводит к заметному уменьшению яркости символов.

В настройке прошивки есть функция диммирования - фон символов становится темнее, полезно зимой, белые символы не видно на белом фоне.
При резисторе R1 = 100 Ом фон символов светло серый и их все ровно не было видно на светлой картинке. Исправляется уменьшением резистора R1, теперь R1 = 75 Ом.

При подключении к OSD модуля GPS выяснилось что для питания всего устройства не хватает стабилизатора напряжения расположенного на Arduino, пришлось добавить внешний стабилизатор на 5 вольт (LM7805 в корпусе SMD).

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

Печатная плата.

Настройка OSD (Код прошивки)

Настройки находятся в файле config.h.
Так как используем микросхему LM1881 в коде указываем SimpleOSD:

//Arduino = 0, SimpleOSD = 1
#define CONTROLLER 1

Настройка делителя напряжения:

// Voltage divider
#define voltage_divider_cal 5.12          // For SimpleOSD, I have used 1.82 - the formula gives 1.86. Test with a multimeter 

Число 5.12 получаем по формуле (1024)/(50*divider), где divider - коэффициент делителя напряжения вычисляется по формуле (R4+R5)/R4

Включение диммирования:

// Dimming can be turned off. Mainly for debugging
// 1 = on, 0 = off
#define dim_on 1

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

// Quad/helicopter example
#define summary_speed 99       // Speed less than (in km/h)
#define summary_los 9999       // LOS less than (in meters)
#define summary_current 3   // Current less than (in amps)
#define summary_time 0       // Flight time more than (in seconds)
#define summary_altitude 999  // altitude less than (in meters)

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

Включение отображения RSSI:

// RSSI setup. Please note, when RSSI is active it will replace mah/km.
#define show_rssi 0 // 1= on, 0 = off

У меня на приемнике нет RSSI, поэтому эта функция у меня отключена.

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

// Current-sensor
#define offset_ 0
#define current_cal 0.24
// These values should more or less be correct. Feel free to make a calibration (a few measurements and a linear approksimation) if you feel like it.
// 25 A sensor = 0.24
// 50 A sensor = 0.49
// 100A sensor = 0.98

Настройка видео системы, я думаю понятна:

//===========================
// Video system: PAL or NTSC
//===========================
// Pal = 0, NTSC = 1
#define VIDEO_SYSTEM 0

Остальные необходимые функции(алармы параметров и т.д.) можно настроить используя кнопку “Menu”.
Чтобы вызвать меню необходимо зажать кнопку и включить питание. Как пользоваться меню одной кнопкой, я думаю, вы разберетесь.

Компоненты OSD
Arduino Pro mini, модуль GPS, и COM адаптер CP2102 для прошивки были куплены на http://ebay.com, а остальные детали в радио магазине.

GPS

COM адаптер CP2102 для прошивки Arduino

Фотографии готового устройства

Архив с прошивкой схемой и печатной платой.
DIY OSD проект.zip

  • 4717
Tags:
Comments
gorbln

По составу и схемотехнике очень напоминает Mobidrone OSD. Делал такое. Из минусов - на белом фоне не видно надписей.
Ещё момент: LM-ка очень критична к цепи C2-R6. Если это место фигово промыть - не запустится. Я долго искал проблему, пока не промыл плату. По этой же причине - хотя бы эти лапы лучше паять с канифолью, а не с флюсом.

gorbln

А вообще - туда б ещё впилить гироаксель для авиагоризонта (ну или хотя бы просто аксель) и барометр. Вот тогда было бы “может всё”

Michurin
{gorbln};bt117936


Из минусов - на белом фоне не видно надписей.

Этот минус устраняется включением в коде опции dim_on.

Michurin
{gorbln};bt117937

А вообще - туда б ещё впилить гироаксель для авиагоризонта (ну или хотя бы просто аксель) и барометр. Вот тогда было бы “может всё”

Согласен, авиагоризонта нехватает, но для квадрокоптера мне и этого с избытком.

Dynamitry

а как он направление чует? Где у него компасс?

Michurin
Dynamitry;bt118084

а как он направление чует? Где у него компасс?

Направление вычисляется по GPS, показывает направление с текущего положения на точку “ДОМ”.

Serg27

День добрый.
Какая скорость порта GPS?

Michurin
Serg27;bt118975

День добрый.
Какая скорость порта GPS?

Скорость порта для GPS задается в config.h - #define BAUD 9600

SiMuS

Здравствуйте!
Стабилизатор внешний как подключали?

Пневмослон

Скажите. Могу ли я использовпть акк на 5 - 6 s в качестве питания камеры и сего девайса, в режиме измерения напряжения?? И каким образом я могу отключить все режимы отображения кроме скорости и пройденного растояния?? Предполагаю использовать на ру скоростной лодке.