мультисвитч на Atmega ... как ?

andrey_by

парни… хочу сделать мультисвитч на atmega 8 или 16 …
значит будет состоять из двух модулей… 1 - кодер , 2 - декодер
для передачи будет задействован всего лишь один канал .

кто нить делал такое ? … могу описать идею… как что дальше сделать , но надо написать код … можно на Basic для Atmega (Bascom называется)

ubd

Есть Basic для PIC. И у меня есть готовый проект, который вам нужно на PIC Basic. Только на 4 канала. Просто не задействуйте 3 канала и всё.

И зачем вам передавать один канал? По радиоканалу?

andrey_by

мультисвитч это такая штука которая через пропорциональный канал может передавать до 16 дискретных канала… т.е вкл-выкл…

для 8 канального код выглядит так - 00000000 … когда все дискретные каналы находятся в OFF … если нужно включить 2ой и 6ой дискретные каналы… будет передана комбинация 01000100 …
передать такие комбинации через пропорциональный канал не сложно … нужно просто посчитать, к примеру … если границы сервомашинок находятся от 800мкс до 2200мкс а середина в в точке 1500мкс… всего диапазон равен 1400 мкс

код 01000100 =70 … 70*5=350 мкс … 350+800 = 1150 мкс
код 00000100 = 4 … 4*5=20мкс … 20+800=820 мкс

…теперь обратное декодирование… к примеру приемник получает сигнал 1210мкс … 1210-800=410 … 410/5=82 … 82 = 01010010 … вот значит … пр иполучении сигнала 1210мкс .будет означать что включены тумблера 2 , 4 ,7 … к примеру в модельке включены фары , мигалка и открылся бомболюк.

andrey_by

слишком большие задержки… неудобно .

1Dimon1

Быстрей никак, если выиспользуете дискретный канал, но если вы будете использоватьпропорциональный, то быстродействие можно “подтянуть” и количество каналов тоже. Об этом тоже есть ссылки в вышеуказаной теме. В самом первом посту.

А точнее в этой теме rcopen.com/forum/f8/topic315794 есть интересующая вас информация и ссылки на готовые проекты.

Enigm
andrey_by:

мультисвитч это такая штука которая через пропорциональный канал может передавать до 16 дискретных канала… т.е вкл-выкл…

для 8 канального код выглядит так - 00000000 … когда все дискретные каналы находятся в OFF … если нужно включить 2ой и 6ой дискретные каналы… будет передана комбинация 01000100 …
передать такие комбинации через пропорциональный канал не сложно … нужно просто посчитать, к примеру … если границы сервомашинок находятся от 800мкс до 2200мкс а середина в в точке 1500мкс… всего диапазон равен 1400 мкс

код 01000100 =70 … 70*5=350 мкс … 350+800 = 1150 мкс
код 00000100 = 4 … 4*5=20мкс … 20+800=820 мкс

…теперь обратное декодирование… к примеру приемник получает сигнал 1210мкс … 1210-800=410 … 410/5=82 … 82 = 01010010 … вот значит … пр иполучении сигнала 1210мкс .будет означать что включены тумблера 2 , 4 ,7 … к примеру в модельке включены фары , мигалка и открылся бомболюк.

То есть как я правильно понял, то шаг у вас в 5мкс ?
Если так то тут есть несколько проблем.
Их суть вот в чем.
Вы ведь мультисвитчь будете к свободному аналоговому каналу к аппе подключать так ?
А вот канал в аппе управляется напряжением а не импульсом.
И вам нужно будет взять осцилограф с милливольтметром и узнать какое напряжение соответствует шагу в 5мкс, и это будет справедливо только для вашей аппы и возможно ее клонов.
И это только первая проблема.
Теперь вторая, вам на кодере надо делать или цап или еще как, чтобы ожно было формировать напряжение с шагом не больше 56милливольт. (при вашем диапозоне 1400мкс с дискретностью 5мкс, будет 280 шагов, а это при 5вольтах будет шаг приблизительно в 56милливольт, точное значение для данной аппы будете мерять) что тоже достаточно сложно сделать.
И да, еще надо делать в приемнике несколько замеров и их сравнивать, тем самым пытаясь как то защитится от помехи(иначе неизвестно что приемник выдаст на выходе), а это уже дополнительное время на срабатывание.
И это только на 8 независимых каналов, а что будет на 16 каналов? думаю независимых на 16 каналов таким образом не получить.
Тут только импульсной кодировкой, а это уже задержки или импульсно аналоговой, побыстрее выйдет.
У меня так медленно из за того что пик слабенький и без кварца не потянет большую скорость, а кварц занимает 2 выхода.

1Dimon1

Не понял о каком аналоге идет речь если с приемника на каждый канал выдаются импульсы с определенным периодом и меняющейся шириной в пределах как указал автор топика. Здесь есть другая проблема и связана именно с методом передачи. Я говорю о помехах и нестабильности детектора в приемнике. Из за этих факторов ширина принятого импульса будет “гулять”. Пределы этой гульбы зависит от уровня помех дальности и качества детектора. Но могу точно сказать 5мкс это очень мало. Для устойчивого приема с малым количеством ложных срабатываний я бы взял не менее 20мкс. А вообще можно посчитать . Думаю в большинстве случаев пары десятков доп каналов , как говориться выше крышы. Берем 20 каналов и делим как вы указывали 1400мкс (опять же можно округлить до 1000) на эти 20 и получаем время на канал тоесть в вашем случае 1400/20=70мкс. Вот в этих 70мкс можно и “прятать” канал.

Enigm

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

1Dimon1
Enigm:

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

Да нет все я прекрасно понял. По русски говоря тс предлагает кодировать двоичное число, которое прямо указывает какое именно дополнительное устройство включить, десятичным и передовать импульс шириной пропорционально этому числу. В принципе идея хорошая но очень помехонезащищенная.

Enigm

Ну на 4 канала такое пойдет и от помех можно хорошо избавиться, а вот на те же 8 я уже расписал проблемы этого способа и от помех сложно избавиться.