Самодельный передатчик (часть 1)
Я извеняюсь, наверное я не в тему, не знаю куда задать этот ворос…
Вобщем - возможноли заставить серву Hitec HS-325HB работать через COM порт ПК ?
Через COM не знаю, а через LPT точно можно. Любую серву. Но питание нужно отдельно, порт не потянет.
Продолжим…
Начнем с того, что никто не сказал мне про мою “подтяжку земли”, что транзистор в таком случае не будет работать в режиме ключа. А получится эмиттерный повторитель. Разница в том, что в последнем случае на эмиттере будет напряжение базы, за вычетом где-то 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);
И точность и скорость.
Nick_Shl, где ты там увидел что конденцатор на 0,1 мк. Он на 1000 пф, там написано 1000, а если цифра просто без обозначений, значит это в пикофарадах. А если в микрофарадах, это будет 0,001 мк. А у тебя 0,1 мк. В предыдущей схеме, стоят по 1000 пф, и претензий вроде бы как нет, поэтому никто ничего не написал, т.к. всё там правильно, на общий взгляд. Думаешь охота разбираться, в чужих схемах. Если была явная ошибка тогда другое дело. А в этой схеме уже 0,1 мк. Вот потому у тебя и сигнал такой стал, пилообразный. 1000 пф, нужен что бы сгладить ВЧ составляющую на РРМ сигнале, которая может наводиться от антенны ВЧ блока. Всё таки там 0,5 - 0,6 Вт. Эти кондёры я не сам выдумал, они стоят на заводском варианте схемы сопряжения. Прежде чем делать в железо, нужно было эту часть схемы, или на макетке собрать, или в протеусе промоделировать. Я всегда так делаю, если не уверен, в работоспособности схемы.
А кондёр 1000 пф впаяй, вместо 0,1 мк.
Про остальное ничего не скажу, т.к. не программист.
кто-то приделавал компорт - вопрос можно ли сделать компорт на частоту 125Кбит и параллельно высаживать в него каналы
тогда легко цепляется пульт LP5DSM
ЗЫ по поводу подключения индикатора - есть идея приклеить проводки к стеклу токопроводящим клеем или лаком и запаять их на платку приклееную к индикатору чтоб не оторвались - насколько оно надёжно будет?
Разём для подключения к ПК (USB-)? для видео симулятора полётов, не продусматировается?
На www.rcdesign.ru/articles есть статейке о адаптере Пульта к ПК. К сожадению ни каких примеров не дано, об общении по USB протоколу, и про управлению HID.
Но Пульт(разрабатываемый сдесь) можно же и без адаптера, подключить к ПК !
Помоему не помешает!
Вот еслиб пример привести, вот это здорова!!!
Жаль что с авторами данной статьи нет связи.
А вот использование чисел с плавающей точкой считаю абсолютно не оправданным! Контроллер то 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 - проще сразу брать контроллер с пддержкой оного.
ЗЫ по поводу подключения индикатора - есть идея приклеить проводки к стеклу токопроводящим клеем или лаком и запаять их на платку приклееную к индикатору чтоб не оторвались - насколько оно надёжно будет?
а какой лак или клей? названия есть? лет 7 назад использовали “токопроводящий лак”, смесь графитовой пыли и спиртового лака, для кнопок радиотелефонов вроде ничего, а померяешь тестером - килоомы в лучшем случае. будет ли оно работать? мож появились более “токопроводящие” лаки-клеи…
а какой лак или клей? названия есть? лет 7 назад использовали “токопроводящий лак”, смесь графитовой пыли и спиртового лака, для кнопок радиотелефонов вроде ничего, а померяешь тестером - килоомы в лучшем случае. будет ли оно работать? мож появились более “токопроводящие” лаки-клеи…
В забугорье есть т.н. Silver Print, но кусался. А также и Nickel Print, этот недорогой, ну, сопротивление побольше, но все равно омы или даже десятые. Print – это по-нашему краска. Я купил себе баночку, но так им практически и не пользовался. Делал зажигание для ракетных двигателей из спичечной головки, работало нормально!
Токопроводящий клей - он вроде “контактол” называется. Белого цвета, хотя их вроде разные делают. Для автомобилей, восстанавливать наклейку на стекло, которая его греет. М.б. в магазинах автозапчастей.
Кстати, м.б. и десятки килоом ( графитовый клей ) для LCD-индикатора пойдут; их вообще через слоеные резинки подключают.
Но пробовать надо.
Токопроводящий клей - он вроде “контактол” называется. Белого цвета, хотя их вроде разные делают. Для автомобилей, восстанавливать наклейку на стекло, которая его греет. М.б. в магазинах автозапчастей.
Кстати, м.б. и десятки килоом ( графитовый клей ) для LCD-индикатора пойдут; их вообще через слоеные резинки подключают.
Но пробовать надо.
Да, клей поищу. А слоеные резинки - там меж слоями насколько я понял вообще тонкая фольга, потому что сопротивления этих резинок Омы. А вот дорожки на стекле, они из оксида олова, так оне действительно килоомные…
1-какой конкретно брать чип к примеру AT Mega 128 16AU пойдет
Если возникают такие вопросы, то лучше скачать ATmega128(L) datasheet или хотябы ATmega128(L) Summary. Раздел “Ordering Information”.
Если котортко то подойдет любая без буквы L и с цифрой 16. А конкретно про вашу AU: индустриальная, рабочий диапазон -40C до 85C, бессвинцовая и полностью зелёная.
2- как его приучить (прошить)
Шъется прямо в плате. Можно простейшим программатором из 5-ти проводков с LPT порта. Если планируется изготавливатьдевайсы на AVR/писать-отлаживать программы, то можно сделать простой USB программатор но для его запрограммирования всё равно понадибится 5 проводков на LPT.
Я как раз такой решил сделать, пока экранчик жду…
делал на основе пульта для симулятора ескай905, но корпус 90% такой же, по-моему вариант лучше чем вфлай, для индикатора место вверху как специально сделано. Подключал модулятор от вфлая и с вфлаевским приемником работало нараз. Приемники ескай или вфлай должны работать однозначно.
Во втором сообщении мой переделанный пульт
forum.modelka.com.ua/index.php?showtopic=6037
Если котортко то подойдет любая без буквы L и с цифрой 16.
Если я правильно понял ATmega 128 16AU подойдет если нет напиши пожалуйста какую мне заказывать (я в микроконтроллерах зеленый до костей)
Если я правильно понял ATmega 128 16AU подойдет если нет напиши пожалуйста какую мне заказывать (я в микроконтроллерах зеленый до костей)
Тогда стоит темку повнимательнее полистать, да на картинки посмотреть - там и маркировки видно.
Приведенная вами микросхема подойдет. Вобще их два вида(* - любая буква):
ATmega128 L-8** - не подходят
ATmega128-16** - подходят
Я переделывал пульт от Белта, он один в один как у Ламы (совсем мелкие различия)
izvinite, ya panimayu ruski no ni magu pisat ruskii. 😃
skajiti pajalusta,
ya delal coder v2. no ya vidl nokia 3410lcd rabotaet 5 volt.eta mojna? ya chital 3410 ili 3310 lcd rabotaet 3.3 v. eta problema?
У всех работает от 5В, всё нормально. Если у вас экран не работает, значит причина в другом. Скорее всего экран поменять нужно.
Spasiba ubd. u minye yest 3410.
Ekran, ne znayu robotayet ili niyet.
ya delal coder no chast ni delal program atmel128.
господа а можно использовать BC847 вместо KSA1623
BC847
Транзистор общего назначения SMD NPN (Uce=45V, Ic=0.1A, P=300mW).
Uк.б.макс. = 50 В
Uк.е.макс. = 45 В
Ue.б.макс. = 5 V
Iк.макс. 100 mA
Iк.пик. 0.3 A
Pмакс. 310 mW
B=110-800@I=2mA;Vсе=5V;
f>250MHz
-55 to +150C
KSA1623 NPN (Uce=50V, Ic=0.1A, P=150mW).