Самодельный передатчик (часть 1)
Прошивка - пост №1340.
Плату лучше прикрепить заново. Т.к. были внесены небольбшие изменения. Ощибок не было, просто доработки платы.
На этот банальный вопрос, в этой ветке форума, запросто ответят. И все кто задаёт, получает удовлетворительный ответ.
Благодарю!
Все кто делал на печатке, которя ниже. Ни у кого, не было таких старнных проблем. Я недавно делал, и всё было нормально. Так что, ищи ошибку в своей печатке. Сравнимай внимательно со схемой. Такое ощущение что напряжени AREF, плавает какимто образом, при перемещении ручек. Может быть это напряжение не так подключено, не с той точки схемы? Всяко ошибка на плате.
В общем причина того, что перемещение ручек влияло на напряжение показываемое вольтметром оказалась до смеха простой - при пайке я использовал водосмываемый флюс, ну и скорее всего не тщательно его смыл. Промыл плату потщательнее и все нормально! Фух. Разобрался
Ув. разработчики! Конечно поймите меня, я может выражаю мнение всех новых пользователей форума. И всё таки. У форума есть такая функция как “первое сообщение темы на всех страницах”, так вот, так как страниц уже набралось ооочень много, есть предложение, выложить все новые (обновлённые) схемы, прошивки, ссылки в одно сообщение. Это ускорит поиск и уменьшит кол-во новых, совершенно ненужных тем по типу “а где скачать схемы?.. на какой странице?..”. Я сам уже создал подобную тему неделю назад, т.к. поиск мне не очень помог (руки ростут правльно, слова подбирал правильно в итоге выдало дохрена тем). Я надеюсь мою просьбу выполнят, ибо для разработчиков аппаратуры не нужно что либо искать в данной теме т.к. это все есть у них на компе или в памяти мозга.
Все кто делал на печатке, которя ниже. Ни у кого, не было таких старнных проблем. Я недавно делал, и всё было нормально. Так что, ищи ошибку в своей печатке. Сравнимай внимательно со схемой. Такое ощущение что напряжени AREF, плавает какимто образом, при перемещении ручек. Может быть это напряжение не так подключено, не с той точки схемы? Всяко ошибка на плате.
А кстати, почему на схеме атмега 8-мегагерцовая? Кварц-то там вроде на 12 стоит. Разогналась нормально?
Ув. разработчики! Конечно поймите меня, я может выражаю мнение всех новых пользователей форума. И всё таки. У форума есть такая функция как “первое сообщение темы на всех страницах”, так вот, так как страниц уже набралось ооочень много, есть предложение, выложить все новые (обновлённые) схемы, прошивки, ссылки в одно сообщение. Это ускорит поиск и уменьшит кол-во новых, совершенно ненужных тем по типу “а где скачать схемы?.. на какой странице?..”. Я сам уже создал подобную тему неделю назад, т.к. поиск мне не очень помог (руки ростут правльно, слова подбирал правильно в итоге выдало дохрена тем). Я надеюсь мою просьбу выполнят, ибо для разработчиков аппаратуры не нужно что либо искать в данной теме т.к. это все есть у них на компе или в памяти мозга.
Согласен, я тоже это предлагал!
А кстати, почему на схеме атмега 8-мегагерцовая? Кварц-то там вроде на 12 стоит. Разогналась нормально?
Работает превосходно.
Люди прошу прощения за офф, у меня два вопроса:
1 - почему сделано на меге 128,
уж больно она не народная, хочется что нибудь в дип корпусе, мега16 или 32.
2 - в какой проге нарисована схема сего девайса…я до сих пор не нашёл приемлемой софтины для рисования принципиальных схем…
почему сделано на меге 128,
уж больно она не народная, хочется что нибудь в дип корпусе, мега16 или 32.
Чтоб не ограничивать себя в объеме памяти… Первая ревизия кодера в этой ветке была как раз на меге 16. Но экспоненты в нее не поместились… А чем не народная то?? Давно пора на поверхностный монтаж переходить. И места меньше, и текстолит дырявить не надо!
Если хочется мегу 16-32 - либо бери ту старую схему, либо пиши сам. Благо образец есть.
З.Ы. смотрел у Жени новый кодер. Ушел он от целочисленки. Вроде работает… Не дописано меню и юзерные функции (калибровка, сохранение настроек)… Подробней разбираться не стал, т.к. мое железо несовсем совместимо. Но интересное - есть. Так что ждите!
З.Ы.Ы. Так понял, что кодер пишется заново, с 0.
2 - в какой проге нарисована схема сего девайса…я до сих пор не нашёл приемлемой софтины для рисования принципиальных схем…
Там же в ReadMe, написано что схема в Splan 5.0 или выше. Для схем очень удобно. Я ещё в ней простые чертежи рисую.
1 - почему сделано на меге 128,
уж больно она не народная, хочется что нибудь в дип корпусе, мега16 или 32.
Да уже пора на SMD переходить. Я уже года 2 на SMD всё делаю. Ниже фотки недавно собранного кодера. Всё вручную правда паяльник хороший, НЕ советский 40 Вт.
смотрел у Жени новый кодер. Ушел он от целочисленки. Вроде работает… Не дописано меню и юзерные функции (калибровка, сохранение настроек)…
А экран всё тот же, от Нокии 3410?
Привет
Переделал передатчик esky и експлуатирую данный девайс с вертом HBFP и в симуляторе.
Прошивку изменял - перевернут екран и beep на аккумах.
Нареканий пока нет.
Вопрос , Как сделать чтобы кнопка T-Cut всегда сбрасывала обороты мотора (Thrusy)
в ноль, что было бы удобно електролетчикам ?
Большое спасибо участникам форума.
Спасибо, с мегой понятно… А в 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.
Схема остается та же ?