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

Aleksey_Gorelikov
Jojo:

-не проехало
триггер неудобен - дребезг не дает правильной работы

Ну если дребезг не дает покоя - то сделайте опрос кнопки аналогично опросу кнопок тримеров, они реже опрашиваются. Бороться с дребезгом задержками - не есть гуд, можно развалить пакет ппм. Как второй вариант - опрашивать кнопку не в критичной ко времени процедуре, а скажем, внутри цыкла меню. Там время - по барабану, можно хоть паузу поставить, хоть с момента нажатия ждать отпускания, хоть 10 раз опросить и принять решение.

Хотелось работы по двум моментам
Что бы остановить електродвигатель нужно опрокинуть регулятор не в 0, а ь -100.

А где ж там 0 то? там в -100% и уходит вродебы.

Тогда как в прошивке T-Cut ставит в ноль.

может вы с Cut_enable=0 спутали. Так это фактически и есть тригер. 2 состояния “0” и “1” - включен и выкл. соответвенно

Иторое , кнопка должна работать в любом положении ручки,
а срабатывает только в положительных.

Ну наверно не в положительных, а в отрицательных, и из-за того, что вы строку “if (input[2]+500>0) Cut_enable=0;” не убрали ( “а я ж писал, вместо этих 2х строк!”)

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

заведите переменную типа char

далее: if (!Tcut_KEY) {//если сработала кнопка то
Cut_enable=1; //тормозим двигатель
переменная=input[2]; // запомнили текущее положение ручки газа, при котором нажималась кнопка.
};
if (input[2]>переменная) Cut_enable=0; // Если положение ручки газа больше, чем ее положение в момент нажатия кнопки, то включаем двиг.

Сразу одно “НО”: Ручки опрашиваются один раз, и поэтому надо ввести какой-то “гистерезис”, иначе двиг произвольно включится из-за шума ацп. Так что там, где сохраняли значение ручки в переменной - переменную надо уменьшить на… Ну скажем на 8, или 4, или 16… Собсвенно это и будет порог включения.

А вобще - купите любую книжку по с ! Применительно к мк достаточно знать азы, на уровне сложить\вычесть, условия, цыклы, массивы. все (ну и даташит на проц прочесть, чтоб понять как железка работает). Есть рабочий девайс, есть исходники. Добавить какую-нибудь мелочь не составляет труда. Я не исключаю, что и Женя тут больше не появляется, ввиду того, что надоело постоянно суппортом работать. Человек сделал что-то для себя, поделился с другими. Ну потрудитесь сами же что-то для себя сделать, не ждите, что кто-то сделает это за вас. Просто удивительно получается, один человек сделал, куча народу повторила, и почти никто не попытался понять как оно работает, я уж молчу про то, чтоб как-то улучшить.

Jojo

to Aleksey_Gorelikov
Спасибо за ответ. Попробую разобраться.
Строки менял по инструкции.
Смотрел в win на движки и срабатывание кнопки приводит к среднему- положению,
а регулятор сбрасывает обороты в ноль при нижнем- если я не прав исправьте.
и триггер не нужен , главное срабатывание кнопки.

ubd

Вопрос , Как сделать чтобы кнопка T-Cut всегда сбрасывала обороты мотора (Thrusy)
в ноль, что было бы удобно електролетчикам ?

А зачем пользоваться кнопкой Tcut на электролёте? Если ручку газа убрать на ноль, то мотор остановиться должен.

Функция Tcut, нужна для ДВС.

Я что то не пойму, какая у вас проблема?

Может быть я не знаю что значит (Thrusy)?

Jojo

А зачем пользоваться кнопкой Tcut на электролёте? Если ручку газа убрать на ноль, то мотор остановиться должен.
T-Cut На вертолетах удобней.

Я что то не пойму, какая у вас проблема?
после нажатия кнопки ручка(тяги) встает в положение от среднего до максимального, двигатель не останавливается

Может быть я не знаю что значит (Thrusy)?
Опечатка Thrust - Throttle

ubd

после нажатия кнопки ручка(тяги) встает в положение от среднего до максимального, двигатель не останавливается

Что за ручка(тяги), так всё таки куда она встаёт, ничего я не понял. Пишите понятнее.

Кнопка T_cut, работает если ручка газа в любом положении, от среднего до малого газа. Если ручка газа стоит в любом из положений, от среднего до максимального, то кнопка T_cut, не работает.
В кодере, по умолчанию, значение T_cut стоит - 100. Это значит 100%, от среднего положения. Во всех передатчиках и в Фокусовском, считается что полный ход ручки на передатчике это 200%, т.е. от среднего по 100% в каждую сторону.
Т.к. значение T_cut - 100%, это значит что при нажатии на кн T_cut, руль машинка встанет в одно из крайних положений, то же самое что и если ручку передатчика, туда увести. Если поставить занчение T_cut 110%, то при наж на кн, руль машинка уйдёт дальше на 10%. У меня всё работает на ДВС самолётах.

Denn

Сейчас попробовал изменённую прошивку с ограничением канальных импульсов, как писал выше - не работает, импульсы дёргаются.
Переделал, теперь работает!

Привожу фрагмент файла “coder.c” с изменениями :

interrupt [TIM1_COMPA] void timer1_compa_isr(void) // прерывание, в котором собственно говоря и идет вычисление импульсов 😃
{char i;

LED2=1;
if (nb<curmodel.num_ch)
{
if (nb<curmodel.num_ch-1)

CHcalc(nb+1);

// 1 такт таймера = 0,667 мкс
// 2,1 мс == 2100/0,667 = 3148 тактов
// 0,9 мс == 900/0,667 = 1349 тактов

// работает!!!
if (output[nb]>3148) output[nb]=3148;
if (output[nb]<1349) output[nb]=1349;

ICR1H=output[nb]>>8; //заливаем длительность канала
ICR1L=output[nb]&0b11111111;

// Не работает - есть рывки в канальном импульсе - старое
//if ((ICR1H>=9) && (ICR1L>=216)) { ICR1H=9; ICR1L=216; } // макс длит 2,1 мс
//if ((ICR1H<=2) && (ICR1L<=216)) { ICR1H=2; ICR1L=216; } // мин длит 0,9 мс

nb++;
}

Jojo
ubd:

Что за ручка(тяги), так всё таки куда она встаёт, ничего я не понял. Пишите понятнее.

Кнопка T_cut, работает если ручка газа в любом положении, от среднего до малого газа. Если ручка газа стоит в любом из положений, от среднего до максимального, то кнопка T_cut, не работает.
В кодере, по умолчанию, значение T_cut стоит - 100. Это значит 100%, от среднего положения. Во всех передатчиках и в Фокусовском, считается что полный ход ручки на передатчике это 200%, т.е. от среднего по 100% в каждую сторону.
Т.к. значение T_cut - 100%, это значит что при нажатии на кн T_cut, руль машинка встанет в одно из крайних положений, то же самое что и если ручку передатчика, туда увести. Если поставить занчение T_cut 110%, то при наж на кн, руль машинка уйдёт дальше на 10%. У меня всё работает на ДВС самолётах.

Спасибо что просветили!
Извинения всем ответившим , признаю ошибку, перепутал провода с потенциометров, тупо паял как были на esky.
Триммерами не пользовался, а иначе не заметитишь.

Vlаd

подскажите если аппаратуру переводить на 433 мгц или на 2.4 ггц то меняется вч-часть приёмника?или что? объясните пожалуйста!

и еще вопрос можно ли простую аппу такую как Futaba 2PHKA перевести на данные частоты?

ubd

Можно! Меняется только ВЧ блок.

Texnik
Aleksey_Gorelikov:


З.Ы. смотрел у Жени новый кодер. Ушел он от целочисленки. Вроде работает… Не дописано меню и юзерные функции (калибровка, сохранение настроек)… Подробней разбираться не стал, т.к. мое железо несовсем совместимо. Но интересное - есть. Так что ждите!
З.Ы.Ы. Так понял, что кодер пишется заново, с 0.

Схема остается та же ?

vvvv

прочитал всю тему но запутался в версия хочу сделать кодер подскажите правильно думаю если нет
схема пост 1368
плата пост 1400
прошивка пост 1342

экран нокиа 3410
атмега 128-16 или атмега 128-8
и если можно укажите в каком посте описана настройка
спасибо

ubd

Да всё правильно.

схема пост 1368

Она есть в посте 1400, в архиве.

У меня работает ATMega 128-8. Про 16 не знаю.

Настройку ни кто не писал. Пока собирай, там всё просто, можно самому разобраться… Перед включением установи подстроечники в среднее положение. Когда включишь, через несколько секунд программа уйдёт в режим калибровки. Перемести все пропорциональные каналы во все стороны и нажми кнопку Вправо. Дальше, пиши на форум, если что не понятно.

vvvv
ubd:

Да всё правильно.

Она есть в посте 1400, в архиве.

У меня работает ATMega 128-8. Про 16 не знаю.

Настройку ни кто не писал. Пока собирай, там всё просто, можно самому разобраться… Перед включением установи подстроечники в среднее положение. Когда включишь, через несколько секунд программа уйдёт в режим калибровки. Перемести все пропорциональные каналы во все стороны и нажми кнопку Вправо. Дальше, пиши на форум, если что не понятно.

спасибо помогли разобраться в куче версий

Aleksey_Gorelikov

Вот я тут подумал, а моногих отпугивает проблема изготовления печатной платы? Впринципе, можно сделать и в дип исполнении, да паять хоть навесным монтажем, хоть на макетке. Может в таком случае аппаратура станет еще более народной??? Что скажите?

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

ubd

Экран бы ещё заменить на какой ни будь, более удобный в использовании. Вы что то говорили про TIC…

Aleksey_Gorelikov
ubd:

Экран бы ещё заменить на какой ни будь, более удобный в использовании. Вы что то говорили про TIC…

Я не только говорил, но и библиотеку под него выкладывал. Из всех переделок - только два резистора дополнительных. Работало, проверял.

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

vvvv
Aleksey_Gorelikov:

Я не только говорил, но и библиотеку под него выкладывал. Из всех переделок - только два резистора дополнительных. Работало, проверял.

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

а подскажите под какой тип смд резисторов разработана плата а то на базаре когда собрался покупать спросили 0805 или 1206
в Харькове нашел только 1206 и то не все плату придется переделывать или нет? и все же вопрос какая атмега 8мгц как на фото или 12мгц должна быть
спасибо

Aleksey_Gorelikov
vvvv:

а подскажите под какой тип смд резисторов разработана плата

какая атмега 8мгц как на фото или 12мгц

Тут плат 10-к наверно публиковался, задайте вопрос автору платы, если лень размеры контактных площадок на самой плате посмотреть.
Мега подразумевалась не “L”. Хотя, говорят что и “L” при 5в питании “гонится”

ubd

а подскажите под какой тип смд резисторов разработана плата а то на базаре когда собрался покупать спросили 0805 или 1206

Резисторы и кодёры - 0805. Перемычки, где 0 написано - 1206.