Самодельный передатчик (часть 2)

Aviator73
msv:

Уже отвечал, повторю свое ИМХО: слегка подстроить (выжать максимум) можно по индикатору поля или даже по макс. гулу в комп. колонках (мультипликативная помеха). Серьезно настроить/согласовать АФУ без КСВ-метра (а лучше + антеноскопа) невозможно никакими “народными” средствами.

Спасибо, я так и сделал. Пользовался индикатором тока антенны. Но не могу понять одну вещь - при вращении сердечников катушек можно найти такое их положение, что индикатор зашкаливает, а ток, потребляемый ВЧ-модулем достигает 2.5А. Т.е. чем больше сигнал в антенне, тем больше потребляемый ток.
Но ведь заводские модули потребляют 160-180 мА. О чем это говорит?

dmitryu

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

msv

О чем это говорит?

Возбуд тоже возможен. Но и без него индикатор тока (ненаправленный) показывает и прямую волну и отраженку, поэтому его показания не являются прямым свидетельством излучаемой мощности. Я настраивал Пи-контур на эквивалент антены (чисто активное сопротивление) по макс напряжению, а потом только удлинняющей катушкой и длиной антены добивался лучшего КСВ. Точнее компромиса, тк. КСВ очень сильно зависел и от того насколько плотно обхвачу руками и прижму к пузу пульт. Кстати еще показания в поле весьма отличаются от показаний на сухом полу, дома. Вам как мин. надо собрать простейший индикатор поля.
2 EagleB3 Тогда и в LCD_get_char_len можно условной компиляцией поставить return 8; Мда, у меня была проблема как впихнуть все необходимое в мелкий экран. А у Вас будет сложность как максимально эффективно использовать такое замечательное разрешение… 😃

EagleB3
msv:

Тогда и в LCD_get_char_len можно условной компиляцией поставить return 8;

То есть, шрифт 8x8 моноширинный? Не пропорциональный?

… Главное, чтобы в меню словам не тесно было.

Сейчас пытаюсь прикодить джойстик от SonyEricsson для навигации по меню.

Aviator73
msv:

Я настраивал Пи-контур на эквивалент антены (чисто активное сопротивление) по макс напряжению, а потом только удлинняющей катушкой и длиной антены добивался лучшего КСВ.

Подскажите пожалуйста номинал резистора в качестве эквивалента и где смотреть напряжение? Полагаю, что резистор 50 Ом, а напряжение смотреть на выходе П-фильтра?
Пробовал делать индикатора поля, но все равно никак не могу настроить.
Дело в том, что максимальные показания индикатора соответствуют почти 4А потребляемого тока! Хотя нагрев выходного транзистора на ощупь одинаков и при 150 мА и при 4А. Если П-контур влияет на согласование выходного каскада с антенной, то по каким критериям настраивать предвыходной каскад - по максимальному напряжению на коллекторе? Или вольтметр своей входной емкостью на позволить точно настроить каскад?
Спасибо!

Nick_Shl
VRV:

Если данная ветка позволяет-было бы интересно ознакомится.

Значит выложим отдельной темой. Будет полезно всем. Картинок уже наделал, вечером попробую описать и выложить.

VRV:

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

Вообще-то МК и архитектура никак не связана. Есть МК с АРМ внутри. Если переформулировать более научно, то мне не нравится гарвардская архитектура применяемая в АВР, хочу архитектуру Фон Неймана.

VRV:

Наверное повторюсь, но всеже- главной задачей данного проекта (иначе проще купить готовую апу) считаю возможность изменения функциональность (добавить/убрать функции) в зависимости от предпочтений пользователя.

Я тоже так считаю.

Aleksey_Gorelikov:

В таком случае лучше использовать АЦП в диф. режиме.

Про АЦП в диф режиме я уже писал - отстой. Подключается внутренний ОУ - а он шумит. Лучше Aref зарезать, чем использовать диф режим.

EagleB3:

Кажется, нашел я причины фигни с ногой !PEN

И что вы нашли? Это же есть в даташите. Вот только вы понимаете смысл сказанного? Смысл следующий: если программатор не может гарантировать что SCK = 0 при подаче питания на МК, то он должен его сбросить - “отпустить” сброс на время не менее 2-х тактов - МК начнёт инициализироваться, а затем опять его ввести в состояние сброса. Так же можно вместо сброса использовать этот самый !PEN, но тогда SCK всегда должно быть равно 0 на момент подачи питания на МК.
Я бы сказал что у вас проблемы с выводом сброса - при программировании он должен быть на земле. Попробуйте перемычку на сброс вместо !PEN надеть и потом зашить.

msv:

Выложите свою версию с исходниками, и заинтересованных прибавится…

Не прибавится. Проверено - что Фокус выкладывал, что вы… Программистов тут мало. А ещё меньше тех, кому это надо. А теперь псмотрите в свой код, в код Фокуса, в код VRV - сможет в нём разобраться человек не знающий Си, но желающий его выучить, что-бы что-нибудь подправить? Сомневаюсь.
Посмотрите на мой код - что по меню, что для приёмника - форматирование везде одинаковое, откомментирована почти каждая сторока - думаете это мне надо? Я и сам могу разобраться в своём коде. Это нужно для новичков, которые ничего не умеют, но очень хотят. Иначе их желание очень быстро закончится…

msv:

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

А моё мнение как раз наоборот. Подстройка она уж не так сложна. Под интерфейсы не подстраиваться нужно - их нужно обсуждать, решать, а только потом реализовывать.
Менеджмент много бы не занял(особенно с системой контроля версий) - больше бы заняло обсуждение что и как сделать, а от этого качество только повысилось бы.

msv:

Вот когда перейдем на ARM, начнем писать операционку для него, ну и дальше интерпретатор жавы, мр3-кодер, блюпуп с тачхрином приворачивать, тогда да… в одиночку сложновато справится будет… 😃

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

msv:

у меня была проблема как впихнуть все необходимое в мелкий экран

А у меня была проблема с подсчётом длинны строки в пикселях, поэтому у меня все шрифты моноширинные. Собственно “проблема” это громко сказано, просто решил не грузить МК ещё подпрограммой вычисления длинны строки в пикселях. Хотя, возможно, как-нибудь и реализую…

EagleB3
Nick_Shl:

Так же можно вместо сброса использовать этот самый !PEN

Это будет не совсем то же, насколько я понимаю. Если для входа в режим программирования использовать !PEN, тогда необходимо будет делать горячий перезапуск для выхода из режима программирования.

Проблема у меня была чисто железная (непропай на какой-то из ног XTAL1/XTAL2 или земли рядом с ними); с внешним кварцем камень запускался, но в каком-то чудовищно замедленном темпе - с запуском в тестовый цикл на моргание диодом то ли вообще без задержек, то ли с двумя задержками по 1uS.

😒 Сначала секунд за 35…45 происходила инициализация (обычная от CVAVR), а потом диод моргал с частотой хорошо заметной глазу - герца этак 2…4.

VRV
EagleB3:

Понятно! Да, у шрифта font_norm описание символа = 9 байт, и в нем да, 0-й элемент сильно похож на ширину.

Но я включил у себя шрифт “font8x8”, а у него описание символа занимает почему-то всего 8 байт. И нулевой элемент на ширину совсем не похож.

И фиг с ним! Не больно-то оно и нужно, это центрирование…


 k=strlenf(нечто из флеша)*8;

где к =ширина в точках

Не прибавится. Проверено - что Фокус выкладывал, что вы… Программистов тут мало. А ещё меньше тех, кому это надо. А теперь псмотрите в свой код, в код Фокуса, в код VRV - сможет в нём разобраться человек не знающий Си, но желающий его выучить, что-бы что-нибудь подправить? Сомневаюсь.
Посмотрите на мой код - что по меню, что для приёмника - форматирование везде одинаковое, откомментирована почти каждая сторока - думаете это мне надо? Я и сам могу разобраться в своём коде. Это нужно для новичков, которые ничего не умеют, но очень хотят. Иначе их желание очень быстро закончится…

Человеку, желающему выучит с не стоит пытатся это сделать на примере данного проекта- слишком много кода и особенностей(для этого есть сайт 123авр).
Скажу по себе- спустя месяц даже свой комментированный проект требует времени чтобы вспомнить что к чему.
Хотя коментарии- в определенной степени показатель культуры програмирования😁
Свой проект выкладывал для желающих и умеющих программировать, но не доконца разобравшихся в предидущих версиях:( ( особенности постами выше)

ЗЫ: а кто работал с AT90PWM3B, а еще лучше в связке с IRAMS??? есть такие?

EagleB3

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды
if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

Nick_Shl
VRV:

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

Если читать внимательно тему, то заметите, что есть не те кто просто хочет выучить Си, а те кто хочет выучить его ради этого проекта. И всё моё вышесказанное относилось именно к этим случаям.

EagleB3:

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

Скоро посылать в даташит начну большими буквами. Это связано с тем, что выражение вида PINx.Y означает использовать инструкции CBI, SBI и подобные. Смотрим в даташите карту памяти и видим, что PORTG за пределом доступности этими функциями. То есть побитовая адресация порта G не доступна. Только доступ целиком.

EagleB3:

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

Как быть?
А вот так:

#define IsBitSet(x,y) (x&(1 << y))

if( !(IsBitSet(PING, 0)) )
msv

Порт G наверное не поддерживает побитовых операций. Можно if(!(PING & 1)) {}.
о… уже опередили…
2 Teapot сомневаюсь что транзистор выдежит 4A… Может наводки на амперметр?

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

Думаю без менедмента весь проект останется на стадии обсуждения интерфейсов и до реализации дело не дойдет… 😃
… Много букв еще написал, но прочитав, все безжалостно стер…

EagleB3

Даташит я честно старался изучить. Но у меня слишком плохой английский, да и с архитектурой процессоров я знаком не настолько хорошо, чтобы разобраться в хитросплетениях их адресного пространства.
Из даташита я понял, что “PORTG, DDRG, and PING are not available in ATmega103 compatibility mode”. А из хелпа к CVAVR - что sfrb может применяться только в интервале адресов 0…1F.

Но вот дальше я уже примеривался в модуле “mega128.h” в строке sfrb EECR=0x1c; заменить вдрызг не нужный EECR на остро необходимый мне PING. 😒

Спасибо!!!

Заработал у меня СониЭрикссоновский джойстик.

//Кнопки навигации
#define SE_Joy

#ifdef SE_Joy // SonyEricsson joystic navigation
    #define L_UP    PIND.4
    #define L_DOWN  PIND.5
    #define R_DOWN  PIND.6
    #define R_UP    PIND.7
    #define J_ENT   (PING & 1)     // PG.0

    #define KEY_UP    !(!L_UP && !R_UP && L_DOWN && R_DOWN)
    #define KEY_DOWN  !(L_UP && R_UP && !L_DOWN && !R_DOWN)
    #define KEY_LEFT  !(!L_UP && R_UP && !L_DOWN && R_DOWN)
    #define KEY_RIGHT !(L_UP && !R_UP && L_DOWN && !R_DOWN)
    #define KEY_ENTER (!J_ENT && L_UP && R_UP && L_DOWN && R_DOWN)

#else // 4-button navigation - classic variant
    #define KEY_UP    PIND.4
    #define KEY_DOWN  PIND.5
    #define KEY_LEFT  PIND.6
    #define KEY_RIGHT PIND.7
#endif
VRV
EagleB3:

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды
if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

порт G не полнный и на него не реализована структура PING.0…PING.7 см ниже
обращайся к нему стандартными функциями

It is important to note that bit selector access to I/O registers located in internal RAM above address 5Fh (like PORTF for the ATmega128 for example) will not work, because the CBI, SBI, SBIC and SBIS instructions can’t be used for SRAM access.

а понял лишнее… уже все у всех получилось:)

Aviator73
msv:

2 Teapot сомневаюсь что транзистор выдежит 4A… Может наводки на амперметр?

Вполне возможно, хотя амперметр в цифровом мультиметре.
Как ни крутил катушки, так и не понял на что они влияют. Убедился, что без КСВ-метра, спекртоанализатора, ВЧ-вольтметра и т.п. приборов не настроить…
Прикол в том, что модель, стоящая рядом при настройке одинаково хорошо реагирует при любых положениях сердечников катушек. Решено оставить как есть и проверить дальность в поле. На счет помех на сосдених каналов решено забить, т.к. ближайший модельный передатчик 40 МГц-ого диапазона где-то в 120 км 😃, т.п. пофиг.
Всем спасибо, особенно Вам, Сергей.

Nick_Shl
msv:

Думаю без менедмента весь проект останется на стадии обсуждения интерфейсов и до реализации дело не дойдет… 😃

А если и не пытаться - то не дойдёт никогда.

EagleB3:

Даташит я честно старался изучить. Но у меня слишком плохой английский

Так есть за одно возможность его и подучить 😃. Хотя совет VRV поступил правильнее всех - залез хелп к компилятору.

EagleB3:

Но вот дальше я уже примеривался в модуле “mega128.h” в строке sfrb EECR=0x1c; заменить вдрызг не нужный EECR на остро необходимый мне PING. 😒

И получили бы то, что при попытке читать PING, реально бы данные брались из EECR 😃.

Andrej100
Aviator73:

Вполне возможно, хотя амперметр в цифровом мультиметре.

Вот в этом всё дело что он цифровой.Подключите обычный мультиметр и по нему настраевай.
4А это наводка😒

EagleB3

Потратил весь вчерашний день на втыкание джойстика в корпус Санвы (это к вопросу об окупаемости конструкции 😉 ).

Получилось. Вот только гаек M2 в хозяйстве нашлась всего 1 (одна!) штука. Пришлось самому нарезать и крепить пока только по диагоналям.
Джойстик, как я уже писал, от SE K700/750 (стоит на рынке 50 руб.), кнопка - от SE K700. Над панелью выступает примерно на 1мм. Наверное, надо будет наклеить на нее какой-нибудь удлиннитель.
Для крепления нарезал из медного одножильного провода диам 2.мм шпильки M2x30мм (прямо по всей длинне), согнул буквой “П”, укрепил в плате и наклеил в корпус на прозрачный “поксипол”. Когда клей схватился, сделал из пластилина опалубку и из “поксипола” же залил фундаменты. Когда клей схватился, но пока остался пластичным, прогнал резьбы плашкой - чтобы случайно попавший на резьбу клей снять. Потом гравером с фрезой сделал понижение под “гарду” кнопки джойстика.
Если интересно, вот фото:
Раз, Два, Три.

Вообще я сделал директорию на своей страничке и буду всякую фигню по ходу сливать туда. То что уже залито - обновлять с теми же именами. За одно и резервная копия будет - на случай краха винта. Это рабочие материалы, не подготовленные для публикации. Просто если кто-то захочет посмотреть на мою текущую схему/плату/мой вариант прошивки (под TIC154, за основу взята прошивка MSV v.1.8; в выводе компонентов на дисплей использованы доработки Denn и библиотеки выложенные Алексеем Гореликовым) то вот: конструкция дисплея, конструкция кодераПротеус е), мои исходники.

P.S. В своем варианте прошивки я убираю (пока?) фичи с током антенны (не знаю, как их можно использовать с ВЧ-блоком “футаба” 2,4ГГц) и фичи с частотами каналов. “На сейчас” адаптация дисплея сделана на экранах инициализации и калибровки, частично адаптировано меню. Меню листается хорошо, но надо еще разобраться с заголовками и выводом переменных. Основной рабочий дисплей в доработке почти не нуждается (сдвинуть немного ниже бары триммеров и немного вправо бары батареи и антенны).

P.P.S. не знаю, как пищщал бипер в предыдущих версиях прошивок, но сейчас он работает и впрямь очень музыкально. В корпусе “Санвы” есть отверстие под разъем зарядного устройства - поставил бипер напротив этой дырки, чтобы пищщало громче.😃

Aleksey_Gorelikov

Ты бы еще общую фотку передатчика выложил, мы бы за тебя порадовались!

EagleB3

Обязательно выложу. Но окончательная сборка еще не наступила. 😒

По идее, не хватает трех вещей:

  • Надо сделать ручку для выключателя “блокировка газа” - полностью аналогичную ручке выключения питания. Придется выклеивать ее из полистирола; я вроде даже уже прикинул как. Стоять будет симметрично выключателю питания, на месте гнезда для кварца.
  • Надо распаять триммера джойстиков на кабели с разъемами (кабели с разъемами уже сделаны).
  • Надо налепить защитную пленку на защитное стекло дисплея.

Вроде бы и мелочи, но все они времени требуют…

Nick_Shl
EagleB3:

не знаю, как пищщал бипер в предыдущих версиях прошивок, но сейчас он работает и впрямь очень музыкально. В корпусе “Санвы” есть отверстие под разъем зарядного устройства - поставил бипер напротив этой дырки, чтобы пищщало громче.😃

А я так сделал с самого начала. Аппаратная генерация прямоугольных импульсов на пищалку с помощью таймера.

P.S. Хреново дела… Вчера разбил машину

EagleB3

Сочувствую. Неприятно. Очень неприятно.
Но это - фигня. Это всего лишь деньги.
Главное - жизнь и здоровье.
Будет здоровье, будет работа - будут и деньги.