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

EagleB3
Denn:

Предлагаю расширенную версию от MSV

Погонял в модели. Отображать цифровые значения движков при калибровке - рулез!

Нашел ошибку в Протеусной схеме (пост #2116 - перепутано соединение каналов триммера Down_CH1 и Down_CH2; должно быть PA0 и PA2 соответственно, а сейчас - наоборот) и в Протеусной модели (пост #2120 - та же ошибка в триммерах, плюс еще номинал переменного резистора в канале 4 должен быть 5к, а сейчас 3к. И следует поставить аналогичные номиналы в канале дополнительного пропорционального управления (100 ом + 5к + 2к).

P.S. Теперь вообще все как настоящее, только по-прежнему PPM на осциллографе не PPM-ит.

Aleksey_Gorelikov
DmitryS:

Не знаю, пацаны, статистики мало, но уж больно стремно😊 Лучше уж пускай старая, надежная, кренка планету обогревает, чем ломать бошку …“а не из-за импульсного ли бека заморковился…”

Статистика как раз об обратном пока говорит. О том, что всякие спектрумы\жры\футабы на 2,4 при питании от 3с падают порой от перегрева линейного стабилизатора в радиомодуле.

EagleB3
Aleksey_Gorelikov:

… падают порой от перегрева линейного стабилизатора в радиомодуле.

Солидарен на 100%. Но как бы скромно как бы молчу… 😇

Aleksey_Gorelikov
СЕРЖЖ:

А кто что думает про этот ДЕКОДЕР ???
www.e-radiocontrol.com.ar/?Circuitos_de_Radiocontr…

Файлсейва нет…Проверки на достоверность пакета - вроде бы тоже. Хотя я особо не вникал. Имхо выложенные в этой ветки пара декодеров от наших коллег лучше на порядок.

Nick_Shl

Раз уж зашёл разговор о декодерах, хочу представить свой вариант. Базируется он на варианте, ранее выложенным в этой ветке товарищем lomo(правда его зачем-то убрали). Хотя и схемотехнически и, особенно, программно значительно отличается от него. Изготовлен он был раньше, но из-за нехватки времени/желания так и не был испытан в “боевых” условиях.

Начну с описания аппаратной части. Схема:

Базируется декодер, так же как и прототип, на микроконтроллере ATtiny2313. Тактируется МК внутренним RC генератором, настроенным на частоту 8 МГц. В отличие от прототипа было решено применить двухцветный красно-зелёный светодиод, с помощью которого возможно получить три цвета: красный, жёлтый и зелёный. Однако для его применения нужно два токоограничивающих резистора, иначе жёлтый цвет получить невозможно. Если обойтись только зелёным и красным цветами, то можно упростить схему, поставив один токоограничивающий резистор в общую ногу светодиода. В такой схеме есть одна хитрость: выходные сигналы, в отличие от прототипа, размещены на выводах SCK, MISO и MOSI. Что облегчает программирование - можно подключать программатор к выводам приёмника. Только нужно вывести ещё сигнал “Сброс”. Проще всего его вывести на разъём “B”, если таковой имеется у приёмника-донора. Теперь расскажу про мою конкретную реализацию в железе. Вид внутри:

Донором был выбран имеющийся шестиканальный приёмник Esky. На МК были загнуты ноги вниз. Вся пайка так же была выполнена снизу МК. Подтягивающий сигнал “Сброс” к питанию SMD резистор паялся с помощью проволочек между 1(RESET) и 20(VCC) ногами МК(видно на фото). К остальным ногам МК были припаяны проволочки. Из приёмника был удалён оригинальный дешифратор и конденсатор. Конденсатор был заменён на танталовый меньшей ёмкости(надеюсь это никак не скажется на работе) и припаян снизу платы. МК впаивался как на фото. При этом первая(RESET) нога МК припаяна к сигнальному контакту разъёма “B”. Такое решение удерживает МК на месте при дальнейшей работе. Однако если пожертвовать возможностью лёгкой перешивки, на этот канал можно вывести 7-ой канал приёмника. Затем были припаяны провода питания, каналов и вход PPM сигнала - он был припаян прямо на выход компаратора. Все провода были залиты клеем “Титан” для фиксации, заодно приклеив МК к соседним деталям. В конце было выбрано место для установки светодиода, проделано отверстие и припаяны провода к нему. Токоограничивающие резисторы паялись прямо на ноги светодиода, а уже к ним припаивались провода. Для предотвращения замыканий оголённые части были спрятаны в термоусадочную трубку. Для программирования достаточно подать питание и подключить программатор. Я использую USB программатор с “рассыпным” хвостиком сделанным из корпусных USB проводов. Питание для прошивки подаётся с него же.

Программная часть была переписана практически полностью. Причём в начале я шёл по пути модернизации в сторону универсализации имеющегося кода. Позже выяснилось, что такой путь приводит к большой нагрузке на МК: рулевые машинки дрожат. Было принято решение упростить(что привело к небольшой избыточности кода) и изменить принципы построения программы. Наиболее значимое изменение - последовательное генерирование выходных импульсов с помощью прерывания. Машинки дрожать перестали. Осталось не реализованным поиск канала(ов) газа и запоминание его(их) для FailSafe. FailSafe устроен следующим образом: на все каналы выдаётся последний корректно принятый пакет. Если за время выдачи 0,3 сек(15 повторов) не был принят корректный пакет данных, то канал газа(установленный на этапе компиляции - у меня 3) устанавливается в минимальное положение, которое было получено с приёмника за всё время руления. ВНИМАНИЕ! при рулении моделями с ДВС это стоит учитывать, т.к. при реверсированной машинке(максимальная длинна импульса - минимальный газ) канала газа при сработке FailSafe получится полный газ! Если по прошествии 1,5 сек (75 повторов) так и не был получен корректный пакет FailSafe переходит во вторую стадию: перестаёт выдавать импульсы на все каналы, кроме канала газа. Имеющиеся у меня аналоговые машинки в таком случае переставали сопротивляться при попытке сдвинуть их качалку. Как мне кажется это может минимизировать ущерб при ударе рулём о землю. Код довольно подробно откомментирован - с пониманием вроде не должно быть проблем. Если появятся вопросы - постараюсь ответить.

Замеченные проблемы(пока такая одна):

  • Почему-то не работает корректно определение модуляции. У меня работает с PPM, а с IPPM - нет. Виснет на инициализации. Так и не дошли руки взять осциллограф и посмотреть в чём же дело и кто виноват. Может передатчик, может приёмный тракт, а может и программа - хотя на первый взгляд она вроде бы в порядке.

P.S. Разрешается использование только в с частном порядке для личных целей 😎.
Всё даётся As Is, никакой ответственности за использование я не несу. Hex’а нет - только код. Смотрите, проверяйте, компилируйте.

PPM_Decoder.ZIP

DD

Nick_Shl, по поводу иппм и ппм я задавал вопрос, но на него так ни кто и не ответил, у меня наоборот при иппм работает а при ппм нет, программа тоже вроде ни причем, модель в протеусе работает отлично что с иппм и ппм, следовательно виновать радио канал. причем как то интересно если если использовать мой приемник с родным валькеровским передатчиком при ппм то декодер вообще не распознает что у него есть что то на входе, на осциллографе там тоже ни чего нет, но вот с sanwa rd8000 почему то понимает ппм но сервы не двигаются. как то один раз в экпериментах с прошивкой мне как то удалось декодировать ппм, но только если антена приемника была в плотную к антене передатчика. Хорошо если бы ктонибудь это толково объяснил (шифты тут не при чем вроде). Вот еще нюанс есть иппм и ппм, а вот псм только одна

СЕРЖЖ

Этот декодер проще!!!
Ссылку смотреть чуть выше.
Но возникли вопросы какие биты конфигурации ставить???
Да и бес осциллографа непосмотриш что получилось на выходе в итоге!!!
Если ктото заставит работать эту схему пожалуйста поделитесь

robin123
СЕРЖЖ:

Этот декодер проще!!!
Ссылку смотреть чуть выше.
Но возникли вопросы какие биты конфигурации ставить???
Да и бес осциллографа непосмотриш что получилось на выходе в итоге!!!
Если ктото заставит работать эту схему пожалуйста поделитесь

“Utiliza el oscilador interno de 4 MHZ -hay que configurarlo así desde el propio grabador del PIC (IC-Prog, por ejemplo)-, sin MasterClear (también se configura desde el grabador de PIC).”
=
Use the 4-MHz internal oscillator, you have to configure it from within the programming software for the PIC (IC-Prog, for example) - without MCLR (also configured from IC-Prog).
=
Используйте 4 МГц внутреннего генератора, вам придется настроить его изнутри программирования для PIC (IC-Prog, например) - без MCLR (также настроен с помощью IC-Prog).

Please note: There is no fail-safe or smart-decoding.

Kappitoshka

Никто не подскажет как называется (марка) разъем тренер/ученик?

Aleksey_Gorelikov

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

СЕРЖЖ

Здравствуйте ! Собрал по Вашей схеме декодер на ATtiny2313. Скомпилировал HEX-файл – все работает замечательно с аналоговыми (Futaba S3003) сервами. Но стоит подключить цифровую (E_sky EK2-0508) – мигает светодиод всеми цветами и серва несколько секунд «клацает» издает слабые счелчки как будто пытается вращаться и наэтом все и заканчивается. Кстати в отличии от аналоговой цифровая пытается работать (если так можно сказать) с PPM и IPPM. Кодер использую на Atmega128.
Скажите пожалуй ста в чем может быть дело и как это устранить???
Заранее спасибо !!!

Kappitoshka
Aleksey_Gorelikov:

тот, что у тебя в корпусе “моно джек мама”.

Это да понятно. До вот только мне придется соединить in и out, vt2 и его цепи выбросить (см. вложение). Интересно что будет если по обоим кнопочкам пощелкать 😅

Мне понравился нарисованый на схеме круглый со штырьком по центру. Вход и выход разделены.

Aleksey_Gorelikov

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

К томуж и детали у тебя все есть. 😃 Ничего покупать не придется.

Nick_Shl
СЕРЖЖ:

Кстати в отличии от аналоговой цифровая пытается работать (если так можно сказать) с PPM и IPPM.

От сервы это никак в данном случае не зависит 😃

СЕРЖЖ:

Скомпилировал HEX-файл

Но в код похоже не заглядывали 😃.
В общем картина выглядит так: вначале происходит мигание светодиодами для их теста: зелёный, жёлтый, красный. Затем пауза когда светодиод не светится. Далее начинается сама инициализация:
Красный светодиод - определение полярности.
Жёлтый - подсчёт количества каналов на передатчике.
Дальше переключается на зелёный и начинает крутится. Если срабатывает FailSafe - светодиод меняет цвет на красный, по восстановлению связи вновь становится зелёным.

СЕРЖЖ:

все работает замечательно с аналоговыми (Futaba S3003) сервами.

Это значит, что всё спаяно правильно и прошивка прошла успешно.

СЕРЖЖ:

Но стоит подключить цифровую (E_sky EK2-0508) – мигает светодиод всеми цветами и серва несколько секунд «клацает» издает слабые счелчки как будто пытается вращаться и наэтом все и заканчивается.

Я могу утверждать только одно: от прошивки это не зависит(или по крайней мере не должно 😃). А что будет если подключить одну цифровую и несколько аналоговых? Если не работает только цифровая - нужно разбираться дальше. Если все и светодиод мигает всеми цветами, есть предположение, что цифровая серва шумит и возможно происходит сброс микроконтроллера. Думаю стоит попробовать уменьшить резистор между ногой сброса и питанием до 1К, питание выходов на сервы шунтировать керамикой на 0,1 мкф. А ещё можно попробовать взять конденсатор >= 6,3 В на n тыс. мкф, припаять к нему провод от дохлой сервы и воткнуть в неиспользуемый канал приёмника, для сглаживания резких просадок напряжения…

ubd

А подскажите по программе для проца в сообщении 2144. Чем компилировали? CodeVizor AVR v2.03.4 подойдёт?

EagleB3

В смысле? Мой CVAVR v2.03.4, во всяком случае, ругаться не стал. Сделал HEX объемом 4603 байта (чуть меньше 80% флеша) даже без варнингов.

“Не вижу препятствий!” (с) “Ва-банк 2”.

Nick_Shl
ubd:

А подскажите по программе для проца в сообщении 2144. Чем компилировали? CodeVizor AVR v2.03.4 подойдёт?

У меня такой же, только Vision 😃. Им и компилил.
А ещё я забыл выложить фузы. Помню только что нужно сконфигурировать на внутренний RC-генератор 8 МГц. Могу позже попробовать посмотреть…

EagleB3:

даже без варнингов.

Старался 😎.

EagleB3

У ATtiny2313 заводские установки CKSEL=0100 (=8MHz internal), да плюс CKDIV8 запрограммирован - итого 1МГц.

Для тактовой частоты 8МГц надо распрограммировать CKDIV8.

Denn

Купил дисплей от Nokia 3510. Надеялся, что они похожи на 3410. Увы, нет.
Может кто-нибудь знает, как его подключить и инициализировать?

7 days later
Networx

Подскажите пожалуйста, чем грозит отключение кодера вовремя записи в eoprom!
И как можно реализовать правильное отключение кодера, вплоть до установки дополнительного елемента питания (например таблетки от компа).
Спасибо!