Самодельный передатчик (часть 1)
Спасибо, с мегой понятно… А в Splan же в стандарте нет вроде микроконтроллеров…?
Вопрос , Как сделать чтобы кнопка T-Cut всегда сбрасывала обороты мотора (Thrusy)
в ноль, что было бы удобно електролетчикам ?
Файл мач.с:
Было: if (!Tcut_KEY&&input[2]+500<0) Cut_enable=1;
Будет: if (!Tcut_KEY) Cut_enable=1;
Вроде бы так, проверяйте.
ubd, да, дисплей там тот же, от нокии. Как впрочем - все железо тоже. (это я от этого железа отошел. Чтоб залить в передатчик пришлось много поправить. Что-то непонравилось - мнение Жене сказал. Он собсвенно в железе еще не прверял ничего, работает в протеусе. Ну а я в железе потестил малек.) Софт абсолютно другой. Идеалогически. Вплоть до отдельного “драйвера” клавиатуры, усреднения АЦП и вся математика с плавающей точкой. Функции вроде теже все. Немного изменено меню (ну там новые пункты появились и кое-что местами переставлено) и сохранение епрома отдельным пунктом.) Но это “пока”. Возможно в релизе что-то и изменится, это к автору.
Файл мач.с:
Было: 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; };
Былобы желательно как-нибудь от дребезга контактов защититься, но думаю и без этого задержки (времени выполнения всего остального в этой процедуре и периодичности ее вызова) вполне хватит.
Удачи!
To Aleksey_Gorelikov
Спасибо-попробую.
А в Splan же в стандарте нет вроде микроконтроллеров…?
Берёшь, его и сам рисуешь. Там можно создавать свои элементы.
Лучше попробуйте вместо этих двух строк поставить:
if (!Tcut_KEY) {
if (Cut_enable==1) Cut_enable=0;
else Cut_enable=1; };
-не проехало
триггер неудобен - дребезг не дает правильной работы,лучше если работа мотора возобнавляется положительным ходом ручки.
Хотелось работы по двум моментам
Что бы остановить електродвигатель нужно опрокинуть регулятор не в 0, а ь -100.
Тогда как в прошивке T-Cut ставит в ноль.
Иторое , кнопка должна работать в любом положении ручки,
а срабатывает только в положительных.
В ситуации- упал - быстро отключил двигатель.
-не проехало
триггер неудобен - дребезг не дает правильной работы
Ну если дребезг не дает покоя - то сделайте опрос кнопки аналогично опросу кнопок тримеров, они реже опрашиваются. Бороться с дребезгом задержками - не есть гуд, можно развалить пакет ппм. Как второй вариант - опрашивать кнопку не в критичной ко времени процедуре, а скажем, внутри цыкла меню. Там время - по барабану, можно хоть паузу поставить, хоть с момента нажатия ждать отпускания, хоть 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… Собсвенно это и будет порог включения.
А вобще - купите любую книжку по с ! Применительно к мк достаточно знать азы, на уровне сложить\вычесть, условия, цыклы, массивы. все (ну и даташит на проц прочесть, чтоб понять как железка работает). Есть рабочий девайс, есть исходники. Добавить какую-нибудь мелочь не составляет труда. Я не исключаю, что и Женя тут больше не появляется, ввиду того, что надоело постоянно суппортом работать. Человек сделал что-то для себя, поделился с другими. Ну потрудитесь сами же что-то для себя сделать, не ждите, что кто-то сделает это за вас. Просто удивительно получается, один человек сделал, куча народу повторила, и почти никто не попытался понять как оно работает, я уж молчу про то, чтоб как-то улучшить.
to Aleksey_Gorelikov
Спасибо за ответ. Попробую разобраться.
Строки менял по инструкции.
Смотрел в win на движки и срабатывание кнопки приводит к среднему- положению,
а регулятор сбрасывает обороты в ноль при нижнем- если я не прав исправьте.
и триггер не нужен , главное срабатывание кнопки.
Вопрос , Как сделать чтобы кнопка T-Cut всегда сбрасывала обороты мотора (Thrusy)
в ноль, что было бы удобно електролетчикам ?
А зачем пользоваться кнопкой Tcut на электролёте? Если ручку газа убрать на ноль, то мотор остановиться должен.
Функция Tcut, нужна для ДВС.
Я что то не пойму, какая у вас проблема?
Может быть я не знаю что значит (Thrusy)?
А зачем пользоваться кнопкой Tcut на электролёте? Если ручку газа убрать на ноль, то мотор остановиться должен.
T-Cut На вертолетах удобней.
Я что то не пойму, какая у вас проблема?
после нажатия кнопки ручка(тяги) встает в положение от среднего до максимального, двигатель не останавливается
Может быть я не знаю что значит (Thrusy)?
Опечатка Thrust - Throttle
после нажатия кнопки ручка(тяги) встает в положение от среднего до максимального, двигатель не останавливается
Что за ручка(тяги), так всё таки куда она встаёт, ничего я не понял. Пишите понятнее.
Кнопка T_cut, работает если ручка газа в любом положении, от среднего до малого газа. Если ручка газа стоит в любом из положений, от среднего до максимального, то кнопка T_cut, не работает.
В кодере, по умолчанию, значение T_cut стоит - 100. Это значит 100%, от среднего положения. Во всех передатчиках и в Фокусовском, считается что полный ход ручки на передатчике это 200%, т.е. от среднего по 100% в каждую сторону.
Т.к. значение T_cut - 100%, это значит что при нажатии на кн T_cut, руль машинка встанет в одно из крайних положений, то же самое что и если ручку передатчика, туда увести. Если поставить занчение T_cut 110%, то при наж на кн, руль машинка уйдёт дальше на 10%. У меня всё работает на ДВС самолётах.
Сейчас попробовал изменённую прошивку с ограничением канальных импульсов, как писал выше - не работает, импульсы дёргаются.
Переделал, теперь работает!
Привожу фрагмент файла “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++;
}
Что за ручка(тяги), так всё таки куда она встаёт, ничего я не понял. Пишите понятнее.
Кнопка T_cut, работает если ручка газа в любом положении, от среднего до малого газа. Если ручка газа стоит в любом из положений, от среднего до максимального, то кнопка T_cut, не работает.
В кодере, по умолчанию, значение T_cut стоит - 100. Это значит 100%, от среднего положения. Во всех передатчиках и в Фокусовском, считается что полный ход ручки на передатчике это 200%, т.е. от среднего по 100% в каждую сторону.
Т.к. значение T_cut - 100%, это значит что при нажатии на кн T_cut, руль машинка встанет в одно из крайних положений, то же самое что и если ручку передатчика, туда увести. Если поставить занчение T_cut 110%, то при наж на кн, руль машинка уйдёт дальше на 10%. У меня всё работает на ДВС самолётах.
Спасибо что просветили!
Извинения всем ответившим , признаю ошибку, перепутал провода с потенциометров, тупо паял как были на esky.
Триммерами не пользовался, а иначе не заметитишь.
подскажите если аппаратуру переводить на 433 мгц или на 2.4 ггц то меняется вч-часть приёмника?или что? объясните пожалуйста!
и еще вопрос можно ли простую аппу такую как Futaba 2PHKA перевести на данные частоты?
Можно! Меняется только ВЧ блок.
…
З.Ы. смотрел у Жени новый кодер. Ушел он от целочисленки. Вроде работает… Не дописано меню и юзерные функции (калибровка, сохранение настроек)… Подробней разбираться не стал, т.к. мое железо несовсем совместимо. Но интересное - есть. Так что ждите!
З.Ы.Ы. Так понял, что кодер пишется заново, с 0.
Схема остается та же ?
Схема остается та же ?
Угу.
прочитал всю тему но запутался в версия хочу сделать кодер подскажите правильно думаю если нет
схема пост 1368
плата пост 1400
прошивка пост 1342
экран нокиа 3410
атмега 128-16 или атмега 128-8
и если можно укажите в каком посте описана настройка
спасибо
Да всё правильно.
схема пост 1368
Она есть в посте 1400, в архиве.
У меня работает ATMega 128-8. Про 16 не знаю.
Настройку ни кто не писал. Пока собирай, там всё просто, можно самому разобраться… Перед включением установи подстроечники в среднее положение. Когда включишь, через несколько секунд программа уйдёт в режим калибровки. Перемести все пропорциональные каналы во все стороны и нажми кнопку Вправо. Дальше, пиши на форум, если что не понятно.
Да всё правильно.
Она есть в посте 1400, в архиве.
У меня работает ATMega 128-8. Про 16 не знаю.
Настройку ни кто не писал. Пока собирай, там всё просто, можно самому разобраться… Перед включением установи подстроечники в среднее положение. Когда включишь, через несколько секунд программа уйдёт в режим калибровки. Перемести все пропорциональные каналы во все стороны и нажми кнопку Вправо. Дальше, пиши на форум, если что не понятно.
спасибо помогли разобраться в куче версий
Вот я тут подумал, а моногих отпугивает проблема изготовления печатной платы? Впринципе, можно сделать и в дип исполнении, да паять хоть навесным монтажем, хоть на макетке. Может в таком случае аппаратура станет еще более народной??? Что скажите?
(наберется человек 10 желающих, я откомпилю и выложу архивчик под atmega1284P - дип, 40ног. сразу скажу, никаких плат разводить не буду, а схему начиркаю карандашиком на бумажке.)