RC-switch. Реально ли?

eugenim

Приветствую, уважаемые форумчане.

Недавно заинтересовался программированием микроконтроллеров. Пока только пробую воспроизвести изделия других. К написанию программ ещё только иду. Так вот захотелось сделать раздвоитель канала. Нечто похожее на форуме встречалось, но это несколько не то.

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

Например,
Щелчок тумблером (on/off) включается устройство А,
Двойной щелчок этим же тумблером (on/off on/off), включается устройство B, тройной щелчек, следовательно включает устройство С.

Хотелось бы заметить, что последовательность включений устройств А, В и С, не обязательно такая, может быть В-С-А или С-А-В.

Аналогично с отключением этих же устройств, в любой последовательности.

Скажите, пожалуйста, можно ли реализовать подобное? Может кто-то уже делал? Поделитесь опытом.

Заранее спасибо.

1Dimon1

В собственном проектк - конечно можно. В покупном- вряд ли, хотя возможно такие устройства есть.
Алгоритм вашей задачи прост. На приемной стороне необходимо просто подсчитать количество переключений за определенный промежуток времении после первого переключения и в зависмости от этого включить то или иное устройство. Время отсчета можно подобратьнаглазок. Например за 1 секунду тоесть после первого переключения процессор ожидает такоеже переключение еще 1 секунду и если его не происходит выполняет задачу для одного переключения. Если во время ожидания он насчитает еще какоето число переключений - выполнит соотвествующее действие для этого числа. Но есть недостатки. Очень быстро устройства переключать не получиться - требуются врепенные паузы для того чтобы не путать команды. Также система может быть очень слабо помезащищенной, но это больше относиться к обработке принятого эфирного сигнала.

eugenim

Спасибо за ответ.
В принципе, я так и предполагал, что логика будет такая. Предположим, переключения тумблера, пусть даже и три, реально сделать за 2-2,5 секунды.
ОК, просто переключать не три, а два раза. С чего начать, на чём строить?

1Dimon1

Удобней использовать кнопку без фиксации. Нажал и отпустил- изменения в канале уже передались, отсчет нажатий пошел.

eugenim

Согласен. Кнопкой удобнее, но за неимением оной, можно пользоваться и тумблером. Согласитесь, логика от этого не меняется.

1Dimon1

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

foxfly
eugenim:

Аналогично с отключением этих же устройств, в любой последовательности.

Для обеспечения “любой последовательности” конечное устройство должно как то узнать, что пора переходить от “счета” к исполнению?
Как?
Нужен или еще один канал “исполнить”, либо- таймер, который будет ждать следующего шага “счета” некоторое время, а потом- переходить к “исполнению команды”?
В общем, Вы пытаетесь изобразить современными методами- шаговый искатель, известный уже более 100 лет:)
Громоздкая и совершенно неприменимая (в моделизме) конструкция:(
Когда ведешь (любую) модель- некогда ни нажатия считать, ни дожидаться, “пока оно сработает”.
Собственно, это уже сделано в гораздо более удобном и проверенном на практике варианте: hobby.msdatabase.ru/project-updates/…/modesw

ubd

А у вас канал будет включаться на какой то промежуток времени, и сам отключаться?

Я делал такие устройства не раз, на 10 и 16 каналов, хоть сколько можно.
Это называется Мульти-свич.
Логика работы была такая: при включении все каналы не активны, на передатчике тумблер ON - певый канал включен, потом на передатчике тумблер OFF - певый канал ВЫКЛючен. Далее то же самое делаем на передатчике, но теперь уже реагирует второй канал на мультисвич. Канал активен пока включен тумблер. И так последовательно все каналы на мультисвич.
Это один вариант. Другой вариант, можно на передатчике вмето тумблера сделать кнопку без фиксации. Её ON/OFF кратковременно, на первом канале импульс 1 сек, не зависимо от того сколько секунд держать кнопку, следующий раз нажать на кнопку на передачике, уже импульс появиться на втором канале мультисвич, и так далее все канал по кругу.
В основном это делается для активации какой то пиротехники на моделях.

Кнопкой удобнее, но за неимением оной, можно пользоваться и тумблером.

Разбирается передатчик и параллельно этого тумблера подпаивается кнопка. Таким образом, останется и тумблер и кнопка. Кнопу можно врезать в любое удобное место.

1Dimon1

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

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

foxfly
ubd:

включаться на какой то промежуток времени, и сам отключаться?

А зачем?
То есть, сделать и такой вариант- никакой проблемы. Пара строк в программе.
Только это- сужение возможностей устройства.
Да и неопределенность будет возникать: что должно происходить после того, как “автоматически отключилось”?

ubd:

сделать кнопку без фиксации

То есть, чтобы включить устройство №5 (к примеру), надо сначала включить №1,2…4?

1Dimon1:

включение/выключение двух разных устройств воможно только с определенной задержкой во времени, то есть

То есть, пилотируя самолет- еще и помнить, на каком нажатии и после скольких секунд “удержания”- выпустится шасси? 😃
Терминатором надо быть.

1Dimon1

По моему алгоритму:
Пять нажатий подряд - включается только устройство номер пять. небольшая пауза можно включить или выключить другое устройство таким же образом например три раза подряд нажать - включилось/выключилось устройство 3.
Петр, почему вы решили, что данная система нацелена на летающие модели? Об этом вроде нигде ничего не было написано, и я уже указывал о том, что данный метод пригоден где быстродействие не нужно.
Об алгоритме как это сделать я писал выше.

foxfly
1Dimon1:

что данная система нацелена на летающие модели

Да не решил: просто, наиболее характерный пример, где требуется многоканальность.
В авто и судо- подобное устройство просто почти не применяется.
Я занимаюсь разработкой и производством всякой прикладной электроники не давно, а очень давно: с 1978 г, поэтому при проектировании- придерживаюсь принципа, что изделие- должно быть максимально защищено “от дурака” 😃
А введение всяких задержек и алгоритмов, про которые надо думать в процессе управления моделью ( автор же -пишет на модельном форуме?), усложняет пользование изделием обычного, без спецподготовки, человека.

1Dimon1

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

foxfly
1Dimon1:

на этом форуме находятся и танкисты и автомобилисты и железнодорожники

Да в курсе я, где это можно применить: в 1969, 71 гг- я был чемпионом РСФСР по Р/У моделям- копиям автомобилей.
И там у меня дворники работали (УАЗ-451М, "буханка) и свет включался и гудок гудел…
Все это было надо- при стендовой оценке.
А когда несешься по трассе, с трудом вписываясь в повороты- абсолютно некогда “кликать” и считать задержки.
Я и пытаюсь объяснить ТС формулу оптимизации потребительских свойств конструкции, раз уж он :

eugenim:

Недавно заинтересовался программированием микроконтроллеров. Пока только пробую воспроизвести изделия других

А кому то что то доказывать- нет абсолютно никакого желания 😦

eugenim

to 1Dimon1

Вы совершенно правы!
Во-первых, я и предполагал включение/отключение вспомогательных устройств. Во-вторых, действительно, включение/отключение может быть через 3-5 секунд (это не критично, так как устройства вспомогательные).

to ubd
С решением, предложенным Вами, я сталкивался на разных форумах, но это не моя задачка.
Ваше решение с кнопкой - просто и со вкусом. Спасибо.

foxfly:

Да в курсе я, где это можно применить: в 1969, 71 гг- я был чемпионом РСФСР по Р/У моделям- копиям автомобилей.
И там у меня дворники работали (УАЗ-451М, "буханка) и свет включался и гудок гудел…
Все это было надо- при стендовой оценке.
А когда несешься по трассе, с трудом вписываясь в повороты- абсолютно некогда “кликать” и считать задержки.
Я и пытаюсь объяснить ТС формулу оптимизации потребительских свойств конструкции, раз уж он :

Сообщение от eugenim

Недавно заинтересовался программированием микроконтроллеров. Пока только пробую воспроизвести изделия других

А кому то что то доказывать- нет абсолютно никакого желания

Петр!
Спасибо за участие в обсуждении.
Действительно ситуация выглядит так, что не хватает каналов на различные вспомогательные устройства. Защита “от дурака” конечно хорошо, когда пилот не “владеет” моделью, но данное устройство будет применено на не основных органах управления. Как сказал Дмитрий, это свет, звук, но может быть шасси…
Кстати, думаю, что вешать более 3-х исполнительных устройств на канал, будет не удобно. Изначально - 3

foxfly
eugenim:

что вешать более 3-х исполнительных устройств на канал, будет не удобно

Я применяю то устройство, на которое давал ссылку, на ФПВ модели с автопилотом: пять кнопок с индикацией, “какая сейчас включена”- вполне комфортно 😃
Думаю, что начав разработку- Вы тоже придете к прямому выбору команды, вместо перебора.
Но, если хочется поиграться разными вариантами- “кто ж запретит солдату- спеть на войне”? 😃
ЗЫ:для уменьшения трудозатрат- советую применить программу симуляции Протеус.
В ней можно, нарисовав схему и вогнав в процессор программу- получить возможность виртуально “понажимать” все кнопки, зажечь лампочки и т.д.

eugenim

Мне кажется, устройство, на которое Вы дали ссылку, просто-напросто является “железным” микшером. Я ошибаюсь?

foxfly
eugenim:

просто-напросто является “железным” микшером. Я ошибаюсь?

Абсолютно!
Дело в том, что я летаю на автопилоте Ардуино, который требует по каналу управления- определенных длительностей, чтобы он понимал, чего от него хотят.
То есть, грубо говоря: берется канал управления с потенциометром и каждому положению этого пот.- соответствует какой то режим.
Леша Козин, который и сделал эту штуку, очень толково решил задачу “попадания” в положения потенциометра: сделал устройство, которое при нажатии одной из кнопок (любой, а не по порядку), выдает передатчику определенное напряжение, которое и определяет длительность канального импульса.
На борту Арду- получает тарированный импульс и знает, что при длительности 0,9 мКс- он должен начать полет по маршруту (к примеру) 1,7- направить самолет домой .
И .т.д.
При этом любой параметр - можно перенастроить, вся платка- подключается к 3 проводам, идущим в передатчике от потенциометра, кнопки- подсвечены яркими LED, то есть, какая сейчас включена- видно даже днем в поле.
Никакого вмешательства в схему передатчика (как и никакого микширования)- нет.
Ну, кроме отпаивания трех проводов от потенциометра и припаивания их- к данной платке.
Фактически, мы заменяем обычный потенциометр в передатчике- цифровым.

1Dimon1

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

1Dimon1

И еще, если я правильно понял логику работы вашего устройства, то включено может быть только одно устройство (одновременно два или более устройств включить дновремено нельзя) или я не прав?

foxfly
1Dimon1:

правильно понял логику работы вашего устройства

1Dimon1:

не прав?

Логику данного устройства- понял правильно.
Возможности- нет.
В том и состоит кайф работы с МК, что путем добавления нескольких строк в код- можно задать ему любую логику, в том числе- “при удержании нескольких кнопок- включить все устройства одновременно” 😃
В том применении, для которого это делалось, такое просто не нужно и даже вредно: нельзя же автопилоту задать: “стой там- иди сюда”? Поэтому, нажатие любой следующей кнопки- сбрасывает предыдущую.
В применении, которое нужно ТС, его можно прошить такой логикой: первое нажатие на кнопку №1 - включает БАНО (к примеру), второе- выключает. И так далее.
Никто не запрещает, кстати, сделать на борту дешифратор с каким угодно количеством командных выходов (лишь бы портов- хватило)

eugenim:

Так вот захотелось сделать раздвоитель канала

eugenim:

Одним (произвольным) тумблером включать несколько устройств

Кстати, раз автор хочет передавать несколько команд - в одном канале, то от дешифратора на борту- не уйти никак: в приемник то будет приходить всё равно только РРМ импульс разной длительности.
И- что?
Откуда бортовые устройства смогут узнать- чё надо?
Значит, или ставить несколько RC свитчей, настраивая каждый на свою длительность, или- делать бортовой дешифратор, понимающий какой импульс пришел и- выдающий на соответствующие выходы- 0 или 1.
Вообще, всякая подобная работа- начинается с написания подробного ТЗ.

eugenim
foxfly:

делать бортовой дешифратор, понимающий какой импульс пришел

Вы правы. Именно о неком устройстве на принимающей стороне я и говорил. Это устройство считает количество щелчков тумблера (или кнопки без фиксации) в определенное количество времени и потом передаёт управляющий сигнал на исполнительное устройство, номер которого соответствует количество щелчком тумблером.

foxfly
eugenim:

Это устройство считает количество щелчков тумблера (или кнопки без фиксации) в определенное количество времени

“Это устройство” прежде всего, должно понимать, что произошел “щелчок”?
А для этого: уметь измерять длительность посылки, пришедшей по каналу управления.
Для чего- надо найти в описании процессора аппаратный вход для ШИМ сигнала и- написать соответствующую программу.
А уж определив длительность- можете с ней делать, что хочется.
Тут на вкус- все иогурты разные 😃

foxfly
eugenim:

Это устройство считает количество щелчков

У меня почему то создалось впечатление, что Вы не совсем себе представляете принципы работы RC аппаратуры?
Если это не так- извините.
А если так- то почитайте: очень доходчиво всё описано :skyflex.air.ru/pages/glider/gl041.shtml

2 months later
Probelzaelo
eugenim:

Это устройство считает количество щелчков тумблера (или кнопки без фиксации) в определенное количество времени и потом передаёт управляющий сигнал на исполнительное устройство, номер которого соответствует количество щелчком тумблером.

Может быть не ограничиваться единственным тумблером, а подключить вместо него целый блок дополнительных кнопок/тумблеров? Это достаточно просто при условии что тумблер висит на одном из аналоговых входов контроллера аппаратуры(если он трехпозиционный то скорее всего так и есть), несколько сложнее если на цифровом входе. Но и в этом случае можно что то пытаться. Универсальное решение для всех типов аппаратуры найти врядли удастся, тк любая переделка или доработка будет индивидуальной.