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

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 мк.

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

yura_v

кто-то приделавал компорт - вопрос можно ли сделать компорт на частоту 125Кбит и параллельно высаживать в него каналы
тогда легко цепляется пульт LP5DSM

ЗЫ по поводу подключения индикатора - есть идея приклеить проводки к стеклу токопроводящим клеем или лаком и запаять их на платку приклееную к индикатору чтоб не оторвались - насколько оно надёжно будет?

MetEl

Разём для подключения к ПК (USB-)? для видео симулятора полётов, не продусматировается?
На www.rcdesign.ru/articles есть статейке о адаптере Пульта к ПК. К сожадению ни каких примеров не дано, об общении по USB протоколу, и про управлению HID.
Но Пульт(разрабатываемый сдесь) можно же и без адаптера, подключить к ПК !
Помоему не помешает!
Вот еслиб пример привести, вот это здорова!!!
Жаль что с авторами данной статьи нет связи.

AlbertSHklovich
Nick_Shl:

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

Согласен. только перевод с плавающей на целочисленную происходит так (ну по крайне мере я такой способ юзаю):
выбирается условный придел в рамках которого работают ну например (как у на на работе)
напряжение оно может быть в наших условиях от 0-400в соответственно для unsigned int
0v-0 а 400v - 65535 соответствеено все операции целочисленны и точность достаточна.

А нащёт usb - проще сразу брать контроллер с пддержкой оного.

valera_o
yura_v:

ЗЫ по поводу подключения индикатора - есть идея приклеить проводки к стеклу токопроводящим клеем или лаком и запаять их на платку приклееную к индикатору чтоб не оторвались - насколько оно надёжно будет?

а какой лак или клей? названия есть? лет 7 назад использовали “токопроводящий лак”, смесь графитовой пыли и спиртового лака, для кнопок радиотелефонов вроде ничего, а померяешь тестером - килоомы в лучшем случае. будет ли оно работать? мож появились более “токопроводящие” лаки-клеи…

Volante24
valera_o:

а какой лак или клей? названия есть? лет 7 назад использовали “токопроводящий лак”, смесь графитовой пыли и спиртового лака, для кнопок радиотелефонов вроде ничего, а померяешь тестером - килоомы в лучшем случае. будет ли оно работать? мож появились более “токопроводящие” лаки-клеи…

В забугорье есть т.н. Silver Print, но кусался. А также и Nickel Print, этот недорогой, ну, сопротивление побольше, но все равно омы или даже десятые. Print – это по-нашему краска. Я купил себе баночку, но так им практически и не пользовался. Делал зажигание для ракетных двигателей из спичечной головки, работало нормально!

abalex

Токопроводящий клей - он вроде “контактол” называется. Белого цвета, хотя их вроде разные делают. Для автомобилей, восстанавливать наклейку на стекло, которая его греет. М.б. в магазинах автозапчастей.
Кстати, м.б. и десятки килоом ( графитовый клей ) для LCD-индикатора пойдут; их вообще через слоеные резинки подключают.
Но пробовать надо.

valera_o
abalex:

Токопроводящий клей - он вроде “контактол” называется. Белого цвета, хотя их вроде разные делают. Для автомобилей, восстанавливать наклейку на стекло, которая его греет. М.б. в магазинах автозапчастей.
Кстати, м.б. и десятки килоом ( графитовый клей ) для LCD-индикатора пойдут; их вообще через слоеные резинки подключают.
Но пробовать надо.

Да, клей поищу. А слоеные резинки - там меж слоями насколько я понял вообще тонкая фольга, потому что сопротивления этих резинок Омы. А вот дорожки на стекле, они из оксида олова, так оне действительно килоомные…

Shnek

господа вчера случайно наткнулся случайно ознакомился и осознано решил повторить девайс два вопроса
1-какой конкретно брать чип к примеру AT Mega 128 16AU пойдет
2- как его приучить (прошить)
на данный момент сделал две платы
модулятор планирую переделать

заранее благодарен за ответ