Activity

Продвинутый приемник 3 +OLED

Началось все с того что надумал на этапе проектирования своего шлема засунуть в него продвинутый приемник. Пока прикидывал что да как заказал экранчик от нокии а ардуину про мини 8МГц 3,3В, как раз под продвинутого 2. Продвинутый 2 был выбран из-за простоты соединения компонентов, в отличае от третьего, в котором используется экран с не очень удобным подключением. Но так как проектирование шлема идет не спешно, то уже давно приехали запчасти для продвинутого. Ардуина с дисплеем были собраны, прошиты, проверены и положены в долгий ящик до лучших времен. Лежало все это дело, пылилось, пока не появился пост, в котором описывалась переделка Продвинутого приемника 3 1,2ГГц под OLED дисплей. Сравнив по линейке размеры нокиевского экранчика и OLED, а за одно и прикинув вес, захотелось в шлеме использовать именно OLED, который выигрывал по обоим параметрам. Мелочь, а приятно. Да и внешне OLED понравился больше. Поискав исходники под Продвинутый 3 5,8ГГц OLED и не найдя таковых принялся ждать пока кто-нибудь сделает. Не то что бы сильно ждал, я бы сказал что просто надеялся что появится к моменту сборки шлема. В итоге не дождавшись решил поковырять исходники сам методом скрещивания оригинала и кода от Vilniz . Ковырял не спешно. В процессе отладки был собран макет на беспаечной макетке, который был не удобен в использовании и переноске. В результате появилась мысль использовать в качестве макета приемник RC305 имеющийся в наличии совместно с “нахлобучкой”. А раз пошла такая пьянка, да еще и дисплей малогабаритный, то почему бы не попробовать запихать все это дело в родной корпус приемника? На скорую руку нарисовал 3D модель будущего приемника, которая так и не дала точной уверенности в успехе данной затеи.Но шанс был и я решил им воспользоваться. На следующий день корпус приемника был отдан на доработку не торопливому фрезеровщику вместе с эскизом. Пока корпус фрезеровался я все ковырял прошивку и будущий конструктив. Пришлось по максимуму уменьшать высоту элементов, что-то убирая за ненадобностью, что-то меняя на более низкое. В отсутствии родного корпуса примерял конструкцию в аналогичном корпусе, из такого же профиля, привезенном с какой-то выставки (сэмплы) в кол-ве 3х шт. и валявшихся без дела. Одному я все же нашел применение, но сейчас не об этом.
По возвращении корпуса с доработки выяснились косяки проектирования и изготовления. Срочно была нарисована еще одна доработка и снова отдана на фрезеровку. В итоге ни конструктив ни внешний вид не пострадал.

Раз уж влез в приемник, то решил поменять линейный стаб на миниатюрный преобразователь, что бы в итоге приемник меньше грелся. А так как влез в прошивку и закопался с головой, то решил сделать индикацию напряжения питания на основе исходников от Vilniz. Но мне его исходник не понравился и я его почти полностью переписал. Так же подумал о целесообразности звуковой индикации, но стандартный буззер не влез бы в корпус и я вспомнил про мелкую пьезо пищалку от каких-то часов, завалявшуюся в хламе. Пищит правда не громко, но сойдет. Частоту генератора для нее пришлось подбирать опытным путем по максимальной громкости. Измерение батареи калибруемое, так что проблем быть не должно. За одно добавил индикацию количества банок. Не знаю зачем, просто захотелось, т.к. определять кол-во банок все равно надо автоматически для определения и сигнализации разряженности батареи. На работоспособность у меня жалоб нет, главное что-бы батарея в момент подключения не была разряжена ниже плинтуса, тогда определение кол-ва банок отлично работает, а соответственно и корректное срабатывание алармов.
Вместо переключателей каналов вывел колодку для программирования. В текущей реализации приемник работоспособен при питании 2-3S, хотя программно и аппаратно нет ограничений и для 4S, за исключением одного момента. Входной электролит по питанию 16В, менять его мне не захотелось, по этому такой потолок в 3S.

Желающим повторить исходник для ардуино. Подключение отличается от оригинала, посмотреть можно в коде.

Выражаю благодарность Сергею Панкратову за его разработку в целом и помощь при разборе с кодом. А так же Vilnis Lauva (Vilniz) за толчек и отправную точку в работе с OLED. И Егору Серову ({gorbln}) за стыренный у него логотип 5.8**.
**

Поисковая пищалка управляемая каналом РУ.

Прилепил я к своему мелколету поисковую пищалку от ХК, но логика его работы меня совсем не устроила, с алгоритмом я так и не разобрался, пищать она начинает сразу после подачи питания и глохнуть должна судя по всему от изменений в канале РУ. А хочется что бы работала только по команде с пульта в нужный мне момент а не по ее разумению. Поиск готовых решений с нужными параметрами результата не дал, все они слишком умные, анализируют состояние канала и по какому-либо алгоритму включают пищалку. Это не устраивает. К сожалению маркировка на чипе этой пищалки затерта, по этому перепрошить эту возможности почти нет, надо смотреть подключение выводов проца, сравнивать с даташитами, но лень и не факт что будет результат, может быть как нибудь займусь этим. Правда очень большая вероятность что там attinyXX, очень уж любят китайцы AVR. Решил сделать такую сам. В загашнике была пищалка с транзистором на плате типа такой

и несколько attiny13, оставшихся от затаривания к другому проекту, который переполз на другой камень. Зачем им валяться без дела? Решил по возможности их применять для других целей. В сети было найдено несколько похожих проектов на таком же чипе, но мне приглянулся один с хексом и исходниками не помню под что. Это что-то надо устанавливать и осваивать, на такой подвиг я не был согласен и меня устраивал хекс. Логика работы не совсем была ясна, один RC вход и 2 выхода, а сайт был на немецком и переводить не хотелось. Сначала хотел распаять навесиком на плате пищалки и опытным путем узнать логику работы, но покрутив в руках и прикинув компоновку и монтаж (некозисто получалось) решил вспомнить лазерный утюг. Набросал по быстрому схемку с учетом недопонимания логики работы (с обоих выходов пустил на транзистор и нужный выход подключался бы установкой нужного резистора)

и плату под это дело.

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

Полез опять в гугль искать еще проекты но чтоб неприменно под ардуину (мне так проще), нашел еще один совсем простейший на тини85 который снова пищал бы монотонно, но в нем по крайней мере я смог бы сделать изменения. Попутно нашел как адаптировать тиньку13 под ардуино. Немного поколдовав над кодом изменил его до неузнаваемости, за одно потренировался в экономии памяти проца.

#include <avr/io.h> // принято подключать
#include <util/delay.h> // нужна для функции _delay_ms();

//int inputPin = 5;
//int outputPin = 3;
#define inputPin 0
#define outputPin 4
#define outputPin 3
unsigned long duration;

void setup()
{
//  pinMode(inputPin, INPUT);
  DDRB &= ~(1<<0);
//  pinMode(outputPin, OUTPUT);
  DDRB |= (1<<4);
  DDRB |= (1<<3);
  digitalWrite(outputPin, LOW);
}

void loop()
{
//  bip();
  duration = pulseIn(inputPin, HIGH, 3000);
  if (duration > 1500)
  {
    bip();
    delay (1000);
//    _delay_ms(1000);
  }
}

void bip()
{
  for (int i=0; i <= 4; i++)
  {
//    digitalWrite(outputPin, HIGH);
    PORTB |= (1<<4);
    PORTB |= (1<<3);
    delay (40);
//    _delay_ms(300);
//    digitalWrite(outputPin, LOW);
    PORTB &= ~(1<<4);
    PORTB &= ~(1<<3);
    delay (40);
//    _delay_ms(300);
  }
}

После появления первого варианта кода сделал платку.


Сто лет не занимался этим, но на удивление получилось в первого раза приемлемо. И собрал ее.

Без косяков не обошлось, забыл что камушки в корпусе wide SO-8 и плату развел под обычный. Т.к. программу писал сам то необходимость в одном из резисторов (R2 или R3) отпала я впаял светодиод, пусть будет. (В ходе экспериментов он будет перепаян катодом на землю и переедет на 2ю ногу тиньки.)
Долго я колдовал с кодом и осциллографом, проводил измерения “эталонной” пищалки, подбирал тайминги. Оказалось что в ардуине применение временнОй функции millis() сжирает очень много времени и мне не удавалось достичь желаемого результата. А при не совпадении частоты с резонансной пищалки она пищит тихо. Попутно выяснил что частота тактового генератора в тиньках далеко не эталонная и отличается от образца к образцу довольно сильно, у меня на 2х процах разница составила 10%. В итоге написание получившегося кода заняло несколько дней (время от времени). И вот что получилось.

#include <avr/io.h> // принято подключать
#include <util/delay.h> // нужна для функции _delay_ms();

//int buzPin = 4;
//int ledPin = 3;
//int inputPin = 0;
#define buzPin 4
#define ledPin 3
//#define buzPin 1    //для тестов
//#define ledPin 2    //для тестов
#define inputPin 0

//int time_del = 98;                 //меандр с периодом ~280мкс
//int time_del = 160;                //меандр с периодом ~390мкс(2550Гц)
//int time_del = 155;                //меандр с периодом ~377мкс(2650Гц)
//int time_del = 153;                //меандр с периодом ~370мкс(2700Гц)
int time_del = 135;                //меандр с периодом ~362мкс(2750Гц)
//int time_del = 138;                //меандр с периодом ~372мкс(2680Гц)

unsigned long duration;

void setup()
{
//  pinMode(inputPin, INPUT);
  DDRB &= ~(1<<inputPin);
//  pinMode(buzPin, OUTPUT);
  DDRB |= (1<<buzPin);
//  pinMode(ledPin, OUTPUT);
  DDRB |= (1<<ledPin);
//  digitalWrite(buzPin, LOW);
  PORTB &= ~(1<<buzPin);
//  digitalWrite(ledPin, LOW);
  PORTB &= ~(1<<ledPin);
}

void loop()
{
  duration = pulseIn(inputPin, HIGH, 3000);
  if (duration > 1500)
  {
    bip();
//    delay (1000);
    _delay_ms(1000);
  }
}

void bip()
{
  for (int i=0; i <= 4; i++)
  {
    BuzGen();
  }
}

void BuzGen()
{
//  digitalWrite(ledPin, HIGH);
  PORTB |= (1<<ledPin);
  for (int i=0; i <= 160; i++)   //~60мс
//  for (int i=0; i <= 230; i++)   //~80мс

  {
//    digitalWrite(buzPin, HIGH);
    PORTB |= (1<<buzPin);
    delayMicroseconds(time_del);
//    digitalWrite(buzPin, LOW);
    PORTB &= ~(1<<buzPin);
    delayMicroseconds(time_del);
  }
//  digitalWrite(ledPin, LOW);
  PORTB &= ~(1<<ledPin);
  delay (45);                      //~62мс
}

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

Натурных испытаний пока не проводил, только от сервотестера. Т.к. на приемнике свободных каналов нет (D4R-II) планирую вывести канал управления с CC3D.

Желающим повторить конструкцию ВОТ архив, в нем исходники под ардуино, hex, схема с платой и зеркальный pdf под ЛУТ, Ссылка как заточить ардуино иде под тини13. Тинька работает на стоковых фьюзах. Учитывая не точность тактового генератора скорее всего придется подбирать временные задержки для получения необходимого тона.

3D модели деталей для коптеростроения

Поднакопилась у меня изрядная библиотека 3D моделей деталей для коптеростроения и решил поделиться с общественностью, вдруг кому понадобится что из этого. Все это хозяйство пока лежит в одной куче, никак не сортировано, по этому придется лопатить все что-бы найти то-что требуется (при условии что оно у меня есть). Библиотека периодически наполняется новыми моделями, возможно после набора критической массы будет отсортирована и разложена по полочкам. Форматы моделей самые разные, большинство найдено просто в сети. Сам я моделирую в компасе и многие модели сразу перегоняю в формат компаса. Львиная доля моделей была найдена на http://grabcad.com
Если кому надо будет перегнать какую модель в какой-то другой формат - обращайтесь, помогу по возможности.

По мере необходимости запись будет обновляться.

Библиотека

GPS+Компас для Multiwii

Захотелось мне сделать плату под модуль GPS, аккуратную и компактную, но не мог определиться на каком модуле делать. Для себя решил что модуль будет сразу с антенной для простоты конструкции. Выбор модулей для меня был не велик, либо GPS модуль PA6C на MTK3339, либо GPS/Glonass модуль EB-845A на MTK3333 т.к. оба мной были опробованы. В процессе терзаний по очереди были нарисованы схемы и платы под оба модуля, совмещены на одной заготовке и заказаны.


Но пока платы изготавливали мне попалась на глаза ссылка на корпус для GPS аля NAZA.

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

Попутно была нарисована еще одна схема.

Модуль был выбран PA6C по габаритным характеристикам т.к. EB-845A просто физически не уместится в корпусе. В качестве бонуса было решено на этой же плате разместить и компас, это наложило отпечаток на использование батарейки из-за ее габаритов т.к. на плате получилось бы много металла в непосредственной близости от компаса. Пришлось использовать миниатюрный ионистор. Плата была разведена размерами 27,5*27,5мм, а с учетом оплачиваемого размера заказываемой ПП 50*50мм на скорую руку были разведены: Плата распределения питания для существующего квадрика с интегрированными транзисторными ключами для светодиодов и буззера. Плата распределения питания для нового проекта мелколета и пара плат делителей напряжения для измерения напряжения батарей.
Для заказа плата была разведена вот в таком виде

Не смотря на разницу в датах заказа плат 2-3 дня приехали они одновременно.

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

Компас был снят с платы купленной на ebay.
Плата с деталями была отдана на монтаж и на следующий день получена в собранном виде. При сборке даже опытная монтажница не смогла правильно спозиционировать микросхему компаса из-за того что не видно ног самой микросхемы. При визуальном осмотре вместе с технологом было решено снимать ее и устанавливать заново при помощи термовоздушной станции. При повторной установке у монтажницы так же возникли трудности, но при последующем осмотре косяков установки выявлено не было.
Микросхема стабилизатора напряжения установленная на плату почему-то выдавала вместо положенных 3,3В напряжение ~3,65В. Появился повод для беспокойства т.к. в даташите на компас заявлено напряжение питания не более 3,6В. Решил заменить стабилизатор на тот который установлен на плате с ebay. Для пущей уверенности попытался найти стабилизатор по маркировке, но в результатах был только какой-то диод, и я не обратил на это внимания в твердой уверенности что это стабилизатор. Заменил, подал питание, плата молчит, светодиоды не светятся. Начал смотреть разводку на плате с ебей для выявления цоколевки и выяснил что это действительно сдвоенный диод, прозвонка подтвердила догадку. Вернул назад свой стабилизатор. Начал проверять, GPS работает, спутники ловит, но прошить почему-то так и не смог. Подключил к AIOP v2 с рцтаймера компас предварительно поколдовав с прошивкой, посыпались ошибки I2C. Вариантов 3, сопля где-то под корпусом микросхемы компаса, надо прозванивать, убили микросхему перепайками и убил микросхему стабилизатор завышенным напряжением. Заменил стабилизатор на такой-же, напряжение стало ~3,2В. Компас не заработал. Решил его прогреть термовоздушкой, получилось плохо, при визуальном осмотре выявил пропадание пайки на 2х ножках микросхемы. Отдал монтажнице на ремонт, она поправила, чуда не произошло. Решил сам снять микросхему и заново поставить т.к. обнаружил замыкание между парой ног компаса. Снял, поставил, КЗ не ушло, компас по прежнему не работал и сыпались ошибки I2C. Дома начал разбираться с GPS, подключил FTDI адаптер, переведенный на 3,3В, на прямую к модулю, прошить так и не смог, убрал подтягивающие резисторы с линий Rx и Tx самого модуля. После этого удалось прошить GPS модуль нужной прошивкой. Проблема была выявлена и заключалась в не правильных номиналах подтягивающих резисторов. Начал изучение даташита на микросхему PCA9306DCTR на предмет необходимых номиналов этих самых резисторов. Нашел ошибку в номинале резистора по входу En и заменил его на имевшиеся 220кОм. Так же обнаружил не правильное подключение ноги Vref и устранил. Не очень поняв что к чему с подтягивающими резисторами решил считерить и подсмотреть у Дмитрия (omegapraim) на его модуле GPS. У него подтяжка стоит только со стороны модуля GPS номиналом 10кОм, со стороны мозгов никакой подтяжки нет. Сделал так же на своей плате и модуль GPS ожил и начал принимать команды, а не только отдавать координаты. Воодушевленный успехом сделал то же самое со второй микросхемой LLC для компаса. Свершилось чудо, многострадальный компас стал работать, ошибке по шине I2C пропали. Я уже и не надеялся на это и собирался менять микросхему компаса на новую. В процессе запуска данной платы обнаружил еще одну досадную ошибку, забыл сделать подпитку ионистора. Пришлось лепить ее практически навесным монтажом, но получилось на мой взгляд не плохо. На земляном полигоне рядом с ионистором прорезал ламели для пайки резистора и диода и МГТФом соединил с плюсовым контактом ионистора. Вот результат.

Схему исправил и нарисовал доработку ПП.

Фильтрующие конденсаторы С1 и С9 на своей плате еще не переподключал, работает и так, но буду. GPS модуль покупал здесь, ионистор здесь, само собой не реклама. С остальными элементами проблем возникнуть не должно.
Полетных испытаний пока не было и когда будут не известно, погода портится и на днях немного разбил коптер для которого это все делается. Надо менять луч и проверять электронику. Как только проведу испытания сразу отпишусь здесь. В корпус плату еще не вставлял, только пробовал, туговато но закрывается. На складную ножку соответственно тоже не ставил.

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

Оба варианта плат заказывал в количестве 10 шт. Вариант без компаса пришел как раз в заказанном количестве, а вот в варианте с компасом китайцы проявили не слыханную щедрость и прислали аж 28шт. Если кого то заинтересовала какая либо плата, то могу выслать голую плату, с Вашей стороны самостоятельная закупка деталей и оплата пересылки из Воронежа. Плата Вам достанется ДАРОМ.

03.01.14
Наконец дошли руки облетать данный модуль, в принципе работает вполне ожидаемо, звезд с неба не хватает. На улице за городом ловит 9-10 спутников. На месте не висит при PH, скорее всего надо играться с ПИДами. Компас откалибровал на местности, но все равно при возврате домой летит по дуге, надо разбираться. Еще казус небольшой произошел, При возврате домой коптер промахнулся и решил сесть метрах в 20 от места взлета, не знаю с чем связано, на момент арма и взлета фикс был уверенный.

По мере продвижения проекта запись будет обновляться.