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

graham
vit:

Информация к размышлению:

rifer.ucoz.ru/publ/1-1-0-17

уже думал над этим
Lcdhype виснет сразу после запуска. Попробовал запустить старую версию, которая когда-то давно у меня запускалась, тоже виснет. Теперь занимаюсь поиском причины зависания Lcdhype.

Aleksey_Gorelikov
valera_o:

я припаялся к “желтым” контактам и намальна работает,

Я когда-то работал в сервисе, когда в москву завезли партию 7210 с “желтыми” дисплеями, а наш сервис осуществлял гарантийный ремонт для Связного, в течении 3 месяцев только и делал, что менял дисплеи на “чисто-стеклянные”. Покупали и “желтые” для всех ч\б нокий, но недолго, т.к. обычно в течении месяца телефон с таким дисплеем возвращался на гарантийку.

Если ты припаялся и у тебя работает - тебе повезло, но это скорее всего исключение… Единственный вариант “починки” “желтого” дисплея - проковырять дырочку скальпелем в контакте и капнуть туда контактолла, но тоже не на долго…

П.С. могу насыпать полсотни дисплеев от 7210, с желтыми контактами, если еще не выкинул… Только дохлые все!

valera_o

даже не знаю. пока работает, а припаивался сплавом Розе. может потому и повезло…

graham

Всем, кто отвечал, огромное спасибо. Нашел пьезу с генератором, подключил - пищит. Экранчик взял с контактами, которые не надо прижимать - работает. Теперь очередь ручек и кнопок.

valera_o

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

Nick_Shl

Вобщем дело сдвинулось с мертвой точки. Взялся изготовить плату по ЛУТ технологии - впервые в жизни. В попытках автотратсировки(использовал DipTrace) стало понятно - придется разводить ручками. В попытках все развести на одном слое схема была сильно упрощена - осталось четыре свободных входа для кнопок/переключателей. Но я не вижу в этом никакой проблемы, т.к. под переделку будет использоватся простейший передатчик с аналоговыми триммерами и миниумом переключателей. Вобщем для “пробы пера” достаточно.
Когда развёл, понял, что для того что бы прямо на разъеме соединить эту плату с индикатором, нужно её развернуть дорожками внутрь. А паять разъемы со стороны дорожек занятие не из приятных… Но подумав решил, что просто соединю индикатор и плату 40-ка жильным IDE шлейфом.

Технологию ЛУТ брал с внизу этой страницы. Правда вместо сахара собрал такой “станок”:

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

И на просвет:

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

За одно формируется мнение о том, какой должна быть вторая версия моего кодера. Думаю использовать отдельную платку с микроконтроллером как “видеоадаптер” и возложить все функции обработки графики на него. Из плюсов - можно соединить два контроллера малым количеством проводов с помощью SPI/TWI/UART, тем самым упростив разводку основной платы и высвободив кучу контактов.

AlbertSHklovich

Доброе время суток !
Тут поднимался вопрос о 2.4 но затих.
Есть предложение попробовать оживить вариант - буду краток

  1. Собирается на сс2511 - есть радио есть проц есть юсб (для конфирурации приёмника передатчика) тоесть в пульте и в приёмнике будет нужна только ОДНА микросхема - которую хватит на все вышеописанные в форуме задачи (она помощней аврки в несколько раз).
  2. На приёмнике собрать на плате с кристалом и управление бесколлекторным двигателем (ресурсы приёмо передатчика позволяют)
    кратко плюсы
  3. как говорил есть АППАРАтный Юсб через который будут настраиваться пульт (номер канала, ID, кривые, калибровать управление) и приёмник (канал ID регулятор бесколекторного двигателя)
  4. Возможность передовать телеметрию (напр акк, обороты двигателя , потр ток, температура - есть встроенный датчик)
  5. Настройки и наладки никакие для приёмника не нужны

Минусы - расстоние. по даташиту на дипольную антену
Gain in XY plane 5.6 dB
Gain in XZ plane 7.4 dB
Gain in YZ plane 6.5 dB
LOS Range 300 m
Antenna size 46 x 9 mm
это на скорости обменов 250 килобит
я расчитываю применять передатчик для паркфлаеров не более посему затенение ему сильно не грозит и расстояние достаточное 😃
Ещё один из минусов это - программатор не собрать на коленках - либо купить либо (что будет сделанно в любом случае)
будет писаться в программе бутлоадер с возможносью обновления прошивки через USB.

вот фото крестала (тут просто передатчик - но колличество обвязки приб такое и будет при использовании этой антены)

тема где выложил ещё фото кита
rcopen.com/forum/f8/topic85267/100
Это пока всё что в голову пришло !!!
Пишите вопросы отвечу с удовольствием!!!

SVS

Собираю кодер, Пределываю пульт от sporthobby, необходимо перевернуть изображение к верх ногами,
помогите, на форуме был подобный опыт, прошивка последняя Coder v2.
Обязуюсь показать результат

valera_o
SVS:

Собираю кодер, Пределываю пульт от sporthobby, необходимо перевернуть изображение к верх ногами,
помогите, на форуме был подобный опыт, прошивка последняя Coder v2.
Обязуюсь показать результат

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

valera_o

файле “graph_new.lib”

void lcd_pixel (unsigned char x,unsigned char y,unsigned char color) //
{ unsigned char i,j;
//добавить вот эти две строки
x=95-x;
y=63-y;
//
i=y/8;
j=y%8;
if (color) buff[i][x]=buff[i][x] | (1<<(j));
else buff[i][x]=buff[i][x] & (~(1<<(j)));
}
перекомпилить и всё

SVS

неумею Я компелить, поэтому и прошу… помню был пост на эту тему. поищу

Makus

Я извеняюсь, наверное я не в тему, не знаю куда задать этот ворос…
Вобщем - возможноли заставить серву Hitec HS-325HB работать через COM порт ПК ?

SVS

посмотрел посты, прошивки перевернутой ненашел, помогите перекомпелить, переделывать def ненадо, делаю плату Focusa, только перевернуть 😇

valera_o

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

SVS

Схема Coderv_2, раскладка по схеме, тока перевернуть

valera_o

самый последний какой у себя нашел

ubd

Я извеняюсь, наверное я не в тему, не знаю куда задать этот ворос…
Вобщем - возможноли заставить серву Hitec HS-325HB работать через COM порт ПК ?

Я думаю не в тему. В этой ветке обсуждают совсем другое. Этот вопрос нужно задавать, непосредственнов разделе форума - Программы, Схемы. Может кто что посоветует…

Volante24
Makus:

Я извеняюсь, наверное я не в тему, не знаю куда задать этот ворос…
Вобщем - возможноли заставить серву Hitec HS-325HB работать через COM порт ПК ?

Через COM не знаю, а через LPT точно можно. Любую серву. Но питание нужно отдельно, порт не потянет.

Nick_Shl

Продолжим…
Начнем с того, что никто не сказал мне про мою “подтяжку земли”, что транзистор в таком случае не будет работать в режиме ключа. А получится эмиттерный повторитель. Разница в том, что в последнем случае на эмиттере будет напряжение базы, за вычетом где-то 0,6 вольта. То есть выход на передатчик в моей схеме получился где-то 4 вольта. Но если на входе передатчика будет стоять транзистор в режиме ключа, то ему и 1-го должно хватить…

Далее. Зачем я опубликовал свою схему? Просто так что ли? Конечно нет! Хотелось бы услышать по ней замечания… Но их я так и не дождался. Спаял, запустил. Смотрю выход PPM сигнала(С осциллографом была проблема: вместо 5-ти вольт показывал 4. Потом покрутил “Корр. Усил.” вроде встало на место):

Замечательно! И выход транзистора:

Как вам? А я чуть не *****! Хорошо додумался отпаять конденсатор на 0,1 который зачем-то бездумно и неправильно скопировал с переделываемой схемы. Все стало на свои места…

По схемотехнике далее. Моя схема с пищалкой работает! Могу генерировать любые частоты! Пищалку взял из компьютера в корпусе InWin. Как раз пьезо, с разъемом и даже с резистором внутри.
Минусы по сравнению с внутреннегенераторными пищалками:

  • могут быть только на на определённых ногах(выходах таймеров)
  • занимают таймер(минус пока условный - они и так свободны)
  • может усложнится схема(на целый один резистор 😃)
    Плюсы по сравнению с внутреннегенераторными пищалками:
    • могут генерировать разные частоты(можно играть мелодии)
      На мой взгляд последний плюс перевешивает все минусы.
      Код при этом не сильно усложняется и выглядит так:
      [codebox]/*******************************************************************************
      * Sound.c
      *
      * Радиоуправление: Работа со звуком
      *
      * Copyright © 2008 Nick Shl
      * All rights reserved.
      *
      *
      * Изменения:
      *
      * May 07, 2008 Nick_Shl Первоначальная версия
      *
      */// ***************************************************************************

//******************************************************************************
//*** Системные инклюды ****************************************************
//******************************************************************************
#incl*ude <mega128.h>
#incl*ude <delay.h>

//******************************************************************************
//*** Пользовательские инклюды *********************************************
//******************************************************************************
#incl*ude “Def.c”

//******************************************************************************
//*** Включение Buzzer’а с частотой Freq ***********************************
//******************************************************************************
void Tone(unsigned int Freq)
{
// Таймер запускается с параметрами:
// Clock source: System Clock
// Mode: CTC top = OCR2
// OC2 output: Toggle on compare match
// И с разными делителями для разных частот, потому как:
// при делителе 64 невозможно получить частоту ниже ~750Гц
// при делителе 256 на частотах > ~1500Гц высока погрешность генерации
// Деление на 4 аргументов для того, что бы AVR_Clock_Freq/x не превысило word
// Деление на два в конце, потому как нужен полупериод
if(Freq > 1000)
{
// Вычисление значения для таймера
OCR2 = (((AVR_Clock_Freq/64) >> 2) / (Freq >> 2)) >> 1;
// Запуск таймера(Clock divisor: 64):
TCCR2 = 0b00011011;
}
else if(Freq)
{
// Вычисление значения для таймера
OCR2 = (((AVR_Clock_Freq/256) >> 2) / (Freq >> 2)) >> 1;
// Запуск таймера(Clock divisor: 256):
TCCR2 = 0b00011100;
}
else
{
// Останов таймера
TCCR2 = 0b00000000;
// Снятие напряжения с пищалки, т.к. по останову таймера оно может быть любым
PORTB.7 = 0;
}
}

//******************************************************************************
//*** Включение Buzzer’а на Del милисекунд, с частотой Freq ****************
//******************************************************************************
void Beep(unsigned int Freq, unsigned int Del, unsigned char PauseAfterPlay)
{
Tone(Freq);
delay_ms(Del); // Пауза
Tone(0);

// Если установлен флаг - делаем паузу по длительности как и звук
if(PauseAfterPlay) delay_ms(Del);
}
[/codebox]В будующем выключение надо навесить на основной таймер(как это сделано в демо версии 3-его кодера), возможно даже стоит добавить возможность играть мелодии, передавая указатель на массив с частотами и длительностями.

Теперь чуток поругаю focus’а. Код второго кодера просто режет глаза. Там не просто плохое форматирование - оно отсутствует как класс. Многие вещи стоило задавать дефайнами. Например частоту кварца. Формирование длительностей импульсов размазано по всему коду math.c.

Теперь и про третюю версию скажу, и некоторые мысли на будующее. Использование структур при хранении моделей - очень правильный шаг. Но надо было пойти дальше и сделать память “динамической”. Иметь массив указателей на структуры, а первым полем - её тип. Тогда размер у структур может быть плавающим и зависящем от количества каналов используемых в модели и количества пилотаных режимов.
А вот использование чисел с плавающей точкой считаю абсолютно не оправданным! Контроллер то 8-ми битный! Загружать его вычислениями с плавающей точкой - точно перебор. Если хочется повысить точность, нужно было использовать числа с фиксированной точкой. Напимер возьмем int - 2 байта и long - 4. Как раз int помещается в два средних байта long’а. Тоесть младший байт long’а - “после точки”.
Преобразуем так: long = (long)int << 8;
Вычисляем все в таких числах.
Затем преобразуем обратно: int = (int)(long >> 8);
 И точность и скорость.

ubd

Nick_Shl, где ты там увидел что конденцатор на 0,1 мк. Он на 1000 пф, там написано 1000, а если цифра просто без обозначений, значит это в пикофарадах. А если в микрофарадах, это будет 0,001 мк. А у тебя 0,1 мк. В предыдущей схеме, стоят по 1000 пф, и претензий вроде бы как нет, поэтому никто ничего не написал, т.к. всё там правильно, на общий взгляд. Думаешь охота разбираться, в чужих схемах. Если была явная ошибка тогда другое дело. А в этой схеме уже 0,1 мк. Вот потому у тебя и сигнал такой стал, пилообразный. 1000 пф, нужен что бы сгладить ВЧ составляющую на РРМ сигнале, которая может наводиться от антенны ВЧ блока. Всё таки там 0,5 - 0,6 Вт. Эти кондёры я не сам выдумал, они стоят на заводском варианте схемы сопряжения. Прежде чем делать в железо, нужно было эту часть схемы, или на макетке собрать, или в протеусе промоделировать. Я всегда так делаю, если не уверен, в работоспособности схемы.

А кондёр 1000 пф впаяй, вместо 0,1 мк.

Про остальное ничего не скажу, т.к. не программист.