Самодельный передатчик (часть 2)
Ну не могу молчать! Ну распирает меня!!! 😃
Сегодня сделал печатную плату под “Санву VG400”. Получилось ПРОСТО СУПЕР!!!
Кому интересно и кто трафика не боится - вот общий вид снизу (542Кб) и макро вид одного участка (854Кб). Это я не наилучший участок фотал - она по качеству ВСЯ ТАКАЯ! 😃
Еще не сверленая, не луженая и в размер не обрезалась. Протравлена, помыта, канифольным лаком покрыта - от него на дорожках “шагрень” и разводы. На макро снят участок возле ног 17…28. Две пары площадок под 0805 почти по центру - это конденсаторы обвязки кварца. Ширина дорожек 20th (0,508мм).
Делалось с фоторезистом ПНФ-ВЩ.
Крестики - “прицелы” для совмещения слоев верха и низа.
Прошу уточнить на схеме: PF0- датчик тока антены, PF1- датчик температуры, PD0- тахометр.
Сделано. Текстом. И про буззер безвстроенногенераторный - тоже. Новая ссылка на схему
наконец энкодер вместо кнопок
а нельзя ли сделать как то так что бы все управлялось с одного колеса как в футабе ?
пару постов назад кидал проект в протеусе с меню на знкодере(колесо+кнопка=от мыши)
EagleB3, по собственному опыту, старайся не делать ререходов под смд, их тогда паять трудно, а так симпатично. После 5 числа ожидаю свою вг400, буду ломать:)
И еще вопрос больше к моделистам, кто активно использует пульты. Какие функции в основном задействованы? Какие лишние? Каких не хватает? Если у кого есть желание и терпение-накидайте примерную структуру ВАШЕГО меню. Если подобный вопрос обсуждался- кинте ссылку.
Видимо нет, просто температуру среды мерять. У меня стоит какойто подобный от микрочипа, этого когда покупал не было. И еще хотел давно спросить: когда датчик калибруешь, показания должны быстро скакать?
Схема формирователя тахометра отсюда:
radiokot.ru/circuit/digital/…/index.shtml
У меня несколько изменена, но и оригинальная думаю будет работать.
Датчик тока антенны можно здесь разглядеть:
rcopen.com/files/000000000000000000000000
(мой ВЧ-модуль).
В датчике температуры особого смысла нет, просто был свободны вход АЦП…
TMP36 - стоит в корпусе передатчика, подальше от всяких “грелок”. Бывает итересно глянуть температуру, особенно зимой…
Какие функции в основном задействованы?
Я не пользуюсь двойными расходами. Вместо этого расходы настраиваю в режимах полета. Но это как-бы стандарная функция и убирать их совсем пока не тороплюсь…
По поводу схемы:
Появилась новая версия Splan 7 . Много хорошего!
kazus.ru/forums/showthread.php?t=13740&page=28
Схема формирователя тахометра отсюда:
radiokot.ru/circuit/digital/…/index.shtml
там на схеме перепутаны все ножки операционника, сначала долго думал почему не работает
PS: msv, не ответете на счет показаний датчика температуры при калибровке?
Конечно ничего скакать не должно. Гляньте осцилографом, что идет с датчика на вход ацп. Датчик нужно обязательно шунтировать емкостью по питанию в непосредственной близости, и выход мне тоже пришлось шунтировать, иначе с него шел возбуд…
Глючит. И 7.6SP0 глючит. Он нормально (вроде как) сохраняет/читает с адресов дальше 0x00ff, но не ватчит. Даже через волатил не ватчит.
Неожиданно нашлось решение, точнее даже не решение:) а просто оно заработало.
Выдрал мегу со старого проекта- в еепром пишется и трассируется до конца. Сылка narod.ru/disk/15823597000/encoder.rar.html , единственное , что было замечено при переносе мк на новый лист волшебство пропадает и снова глюк до 255 ячейки. Т.е. проверять прошивку нужно на этом листе. Если у кото разберется в чем проблема- сообщите, будет интересно узнать в каком месте искривлены руки:)
Похоже довыпендривался с чехардой версий до первой помидорины на форуме…
Ну когда то ж надо начинать… 😃
Сейчас хочу написать движок для менюшек, по заветам Nick_Shl.
С тем, что сейчас наворочено, может разобраться только автор (да и то с трудом…).
Жутко не хватает прелестей ++, инкапсуляция, перегрузка функций, наследование и проч. радостей объект.ориентированного программирования. Ну ничего справимся. Вот только по срокам ничего обещать не могу…
Похоже довыпендривался с чехардой версий до первой помидорины на форуме…
Ну когда то ж надо начинать… 😃
Сейчас хочу написать движок для менюшек, по заветам Nick_Shl.
С тем, что сейчас наворочено, может разобраться только автор (да и то с трудом…).
Жутко не хватает прелестей ++, инкапсуляция, перегрузка функций, наследование и проч. радостей объект.ориентированного программирования. Ну ничего справимся. Вот только по срокам ничего обещать не могу…
Основная причина, по которой начал переписывать выложенное, невозможность разобратся с меню в исходниках + хотелось убрать/добавить свои функции.
Сейчас в очередной раз переписал движок меню(отличается от прев. поста). Основная концепция- свободное добавление/удаление/перемещение пунктов и подпунктов, с сохранением понятной структуры. Процедура отрисовки самого меню стандартная, а конечные пункты, при выборе которых изменяются параметры вынесены в отдельные процедуры, которые входят в описание меню в качестве адресов. Также перенес генерацию звука, обработку энкодера и обновление буфера на прерывания(можно усложнять математику, т.к. освобождается время мк).
2 msv, скажите пожалуйста, печатка останетса прежней, поменяетса только прошивка?
А то я начал работу над платой кодера и не хочетса ее потом выкидывать!
Спасибо, буду следить за розвитием проекта и ждать новой прошивки!
Пока в очередной версии предполагается только внутренний редизайн, правда весьма серьезный. Схема, функциональность да и внешний вид не изменится.
Я лично развел плату под последние изменения msv (с переносом звука).
И сделал так, чтобы ни одна ныне пустая нога процессора не осталась без дорожки с контактной площадкой - потом будет можно легко проводишку припаять, если занадобится.
Собираюсь выложить проект в Протеусе (плата под Санву VG400 + TIC154; может, кому сгодится типа референса), но сначала хочу свою железяку запустить. Вдруг косяки всплывут… 😉
Собираюсь выложить проект в Протеусе (плата под Санву VG400 + TIC154; может, кому сгодится типа референса), но сначала хочу свою железяку запустить. Вдруг косяки всплывут… 😉
Біло бі неплохо, тк тоже под санву расчитіваю.
Пока в очередной версии предполагается только внутренний редизайн, правда весьма серьезный. Схема, функциональность да и внешний вид не изменится.
msv, накидал свою версию меню, посмотри, может сделаешь на ней. Преимущества постом выше.
Предваврительно обявленные функции отрисовки. При этом само меню рисует функция ShowStdMenuDisp(void ) , а остальные- экраны ввода параметров.
void ShowMainDisp(void );
void ShowStdMenuDisp(void );
void ShowSelectModelDisp (void );
void ShowSaveModelDisp (void );
void ShowCopyModelDisp (void );
void ShowModelNameDisp (void );
void ShowMixerDisp (void );
void ShowCurveDisp (void );
void ShowSetingTimerDisp (void );
void ShowBatareyDisp (void );
void ShowSoundDisp (void );
void ShowDRExpDisp( void );
void ShowChReversDisp ( void );
void ShowCHLimitDisp( void );
void ShowMonitorDisp ( void );
void ShowSaveAllDisp ( void );
void ShowCopyModDisp ( void );
void ShowCopyCtrDisp ( void );
Сама структура меню- все ясно и понятно(перемещение строк внутри таблицы влечет изменение меню на экране-удобно переносить и добавлять пункты)
flash MENU_STRUCT MenuTable[MenuMaxItems]=
{
//-|---NameMenuDisp---|------|level|--|----Param-|-------|---------FUNC----------
{"SCR", 0, 0, &ShowMainDisp},
{ "Main", 1, 0, &ShowStdMenuDisp},
{ "Model", 2, 0, &ShowStdMenuDisp},
{ "Select", 3, MAX_MODELS, &ShowSelectModelDisp},
{ "Save", 3, MAX_MODELS, &ShowSaveModelDisp},
{ "Name", 3, MAX_MODELS_NAME+1, &ShowModelNameDisp},
{ "Mode", 3, 0, &ShowStdMenuDisp},//&&
{ "Settings", 2, 0, &ShowStdMenuDisp},
{ "Controls", 3, 0, &ShowStdMenuDisp},
{ "Curve", 4, CURVE_NODES+1, &ShowCurveDisp },
{ "DR&Exp", 4, 3, &ShowDRExpDisp},
{ "Chanels", 3, 0, &ShowStdMenuDisp},
{ "Mixers", 4, MAX_OUT_CHANS+1, &ShowMixerDisp},
{ "CH limit", 4, 4, &ShowCHLimitDisp},
{ "CH revers", 4, MAX_OUT_CHANS, &ShowChReversDisp},
{ "Options", 2, 0, &ShowStdMenuDisp},
{ "Timer", 3, 0, &ShowSetingTimerDisp},
{ "Sound", 3, 1, &ShowSoundDisp},
{ "Batarey", 3, 3, &ShowBatareyDisp},
{ "Monitor", 3, 0, &ShowMonitorDisp},
{ "Save&Copy", 2, 0, &ShowStdMenuDisp},
{ "Save All", 3, 1, &ShowSaveAllDisp},
{ "Copy MDL", 3, 1, &ShowCopyModDisp},
{ "Copy CH", 3, 3, &ShowCopyCtrDisp}
};//end menutable
Ну и процедуры перемещения по меню
void CalcMenu(void)
{
unsigned char i,k;
k=0;
CurDispState.SubItems=0;
for (i=CurDispState.CurDisp+1;i<MenuMaxItems;i++)
{
if (MenuTable[i].MenuLvl==MenuTable[CurDispState.CurDisp].MenuLvl) {break;}
if (MenuTable[i].MenuLvl==MenuTable[CurDispState.CurDisp].MenuLvl+1)
{CurDispState.SubItemArr[k]=i;k++;}
}
CurDispState.SubItems=k;
}
void EnterMenu(void)
{
if (CurDispState.CurDisp)
{
CurDispState.CurDisp=CurDispState.SubItemArr[CurDispState.SelectPos];
CalcMenu();
}
else
{
CurDispState.CurDisp=1;
CalcMenu();
}
CurDispState.SelectPos=0;
CurDispState.CurVal=0;
CurDispState.CurVal2=0;
CurDispState.IsSelected=0;
CurDispState.AddVal=0;
}
void ExitMenu(void)
{
unsigned char l,i;
if (MenuTable[CurDispState.CurDisp].MenuLvl>1) //??
{
l=CurDispState.CurDisp;
for (i=CurDispState.CurDisp;i>0; i--)
{
if (MenuTable[i].MenuLvl==MenuTable[CurDispState.CurDisp].MenuLvl-1) {CurDispState.CurDisp=i;break;}
}
CalcMenu();
for (i=0;i<CurDispState.SubItems; i++)
{
if (l==CurDispState.SubItemArr[i]) {break;}
}
CurDispState.SelectPos=i;
}
else
{
CurDispState.CurDisp=0; //go main scr
}
}
void DrawFunc(FuncPtr Function)
{
// if ((void*)Function == NULL)
// return;
((FuncPtr)Function)();
}
void ShowDisp (void)
{
if (IsKeyChange()||CurDispState.NeedUpdate)
{ JoyMenuSelect();
CurDispState.NeedUpdate=0;
DrawFunc (MenuTable[CurDispState.CurDisp].Func);
}
}
А может ли кто-нибудь прояснить: в чем состоит смысл каскада, собранного на VT2 и кусочке 4066 с выводами “10, 11, 12”?
… Допер! Кажется. Я так понимаю, это предохранитель от обрыва шнурка. Если “PPM in” перестает приходить на базу VT2, то, независимо от положения SA13 (“Тренер-Ученик”) на кодер пойдет “свой” PPM, а не внешний.
Так?
А может ли кто-нибудь прояснить: в чем состоит смысл каскада, собранного на VT2 и кусочке 4066 с выводами “10, 11, 12”?
… Допер! Кажется. Я так понимаю, это предохранитель от обрыва шнурка. Если “PPM in” перестает приходить на базу VT2, то, независимо от положения SA13 (“Тренер-Ученик”) на кодер пойдет “свой” PPM, а не внешний.
Так?
А есть ли смысл делать каскад для подключения 2 пульта, если данная опция вряд ли когда будет использована?
Так?
Да.
А есть ли смысл делать каскад для подключения 2 пульта, если данная опция вряд ли когда будет использована?
Если ты не собираешься когото обучать полётам и не собираешься передатчик к симулятору подключать, то не нужна. Тренерский разъём, этот как бы неотемлемая часть любой более менее нормальной аппаратуры.
Между делом созрела очередная версия…
Сергей, подскажите, почему не проходит калибровка пропорциональных ручек?
Кручу ручки и крутилку 8-го канала - все ок. Ставлю по центру - точки выделяются квадратиками, как я понимаю, что центр ОК, нажимаю кнопку “Вправо” и после калибровки термометра выдает ошибку калибровки?
Плюс заметил, что в мониторе триммеры воздействуют на свои каналы, а в главном меню при отображении положения триммров каналы 3 (Trottle) и 2 (Elevator) попутаны местами. Думаю, что это из-за того, что у меня МОDE1?
И еще - огромное СПАСИБО за разработку!
Не Сергей но отвечу.
необходимо правильно выставить напряжение на ARef процентов на 10-20 больше чем на ручке и если надо подобрать сопротивления в пропорциональном канале
Доброе время суток, Уважаемые!
Пока собирался взяться за изгатовление передатчика, пока преобретал всё нужное. Упустил из виду данную тему. Как понимаю много изменилось и в схеме, и в прошивке.
Не могли бы выложить одним архивом рабочую схему и прошивку с исходником?
Наворотов типа тахометра, термометра и т.п. не требуется…
пост №2214 и чуть ниже