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

Aleksey_Gorelikov
Jojo:

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

Файл мач.с:

Было: if (!Tcut_KEY&&input[2]+500<0) Cut_enable=1;
Будет: if (!Tcut_KEY) Cut_enable=1;

Вроде бы так, проверяйте.

ubd, да, дисплей там тот же, от нокии. Как впрочем - все железо тоже. (это я от этого железа отошел. Чтоб залить в передатчик пришлось много поправить. Что-то непонравилось - мнение Жене сказал. Он собсвенно в железе еще не прверял ничего, работает в протеусе. Ну а я в железе потестил малек.) Софт абсолютно другой. Идеалогически. Вплоть до отдельного “драйвера” клавиатуры, усреднения АЦП и вся математика с плавающей точкой. Функции вроде теже все. Немного изменено меню (ну там новые пункты появились и кое-что местами переставлено) и сохранение епрома отдельным пунктом.) Но это “пока”. Возможно в релизе что-то и изменится, это к автору.

Aleksey_Gorelikov
Aleksey_Gorelikov:

Файл мач.с:

Было: if (!Tcut_KEY&&input[2]+500<0) Cut_enable=1;
Будет: if (!Tcut_KEY) Cut_enable=1;

Вроде бы так, проверяйте.

Сейчас подумал, нет, не совсем так.

Надо тригер сделать какой-нибудь, иначе следующая строка " if (input[2]+500>0) Cut_enable=0;" его включит.

Лучше попробуйте вместо этих двух строк поставить:
if (!Tcut_KEY) {
if (Cut_enable==1) Cut_enable=0;
else Cut_enable=1; };

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

Удачи!

Jojo

To Aleksey_Gorelikov
Спасибо-попробую.

ubd

А в Splan же в стандарте нет вроде микроконтроллеров…?

Берёшь, его и сам рисуешь. Там можно создавать свои элементы.

Jojo

Лучше попробуйте вместо этих двух строк поставить:
if (!Tcut_KEY) {
if (Cut_enable==1) Cut_enable=0;
else Cut_enable=1; };
-не проехало
триггер неудобен - дребезг не дает правильной работы,лучше если работа мотора возобнавляется положительным ходом ручки.

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

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

В ситуации- упал - быстро отключил двигатель.

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…