Господа, есть вопрос. Скорее к тем, кто уже делал подобное.
Есть линк на CC1101-PA-LNA. Выходная мощность усилителя в передатчике - +30 dBm. На полную мощность вблизи работать не получается - когда на входе приемника входной сигнал выше чем -15 dBm связь пропадает. А работать нужно как в непосредственной близости, так и на максимальном удалении - около 500 м.
Хочется сделать автоматическую регулировку усиления. Не столько для того, чтобы работать и вблизи и на удалении, сколько для того, чтобы на засорять эфир чрезмерно мощным сигналом.
Мой мозг родил пока следующий алгоритм: передатчик посылает постепенно нарастающие по мощности сигналы. В пакет добавляется байт с информацией об выставленной мощности передатчика. Как только приемник получает пакет, он отправляет ответ передатчику о том, что он услышан. Фишка в том, что приемник считает - раз до него дошел пакет, то значение мощности, закодированное в пакете можно использовать для отправки ответа - дойдет гарантировано.
Либо наоборот - как только сигнал слишком мощный, отправлять ведущему сигнал о том, что мощность неплохо было бы уменьшить.
Задача с одной стороны несложная, просто я не хочу изобретать велосипед, наверняка есть проверенные решения, к которым я могу и не прийти сам сразу.
Кто-что посоветует?
Profi2005
Dec 5 2013, 06:57
Добрый день,
Соответственно связь на дальней дистанции прекрасно работает,
или иными словами, глубина АРУ в приемнике недостаточна?!?
Таки может АРУ подкрутить? Или аттенюатор на вход поставить,
который будет загрублять сигнал при больших мощностях?
В системах сотовой связи сделано динамическое управление мощностью.
В 3G (WCDMA) это все реализовано и работает, т.к. все абоненты сидят в одной полосе частот.
В 2G (GSM) на практике мощность базовой станции ставят на максимум,
т.к. разделение каналов временное, соседние TSL друг-другу не мешают,
а вот при случайном пропадании линка он восстанавливается намного быстрее.
Труба же динамически меняет излучаемую мощность согласно информации от BTS.
С уважением,
К.
Цитата(zheka @ Dec 4 2013, 21:19)

Мой мозг родил пока следующий алгоритм: передатчик посылает постепенно нарастающие по мощности сигналы. В пакет добавляется байт с информацией об выставленной мощности передатчика. Как только приемник получает пакет, он отправляет ответ передатчику о том, что он услышан. Фишка в том, что приемник считает - раз до него дошел пакет, то значение мощности, закодированное в пакете можно использовать для отправки ответа - дойдет гарантировано.
?
Не занимался таким вплотную, но вспоминаю один доклад на конференции. Там боролись с проблемой железнодорожники.
Машинист локомотива может быть услышан сразу несколькими диспетчерами, а нужен один. Вот там что-то подобное применялось, первый кто услышал посылает остальным (радиостанция, не человек) сигнал игнорировать вызов. И что-то в регулировании мощности подобное.
Так что Ваш алгоритм выглядит вполне.
Цитата(zheka @ Dec 4 2013, 22:19)

Господа, есть вопрос. Скорее к тем, кто уже делал подобное.
Есть линк на CC1101-PA-LNA. Выходная мощность усилителя в передатчике - +30 dBm. На полную мощность вблизи работать не получается - когда на входе приемника входной сигнал выше чем -15 dBm связь пропадает. А работать нужно как в непосредственной близости, так и на максимальном удалении - около 500 м.
Хочется сделать автоматическую регулировку усиления. Не столько для того, чтобы работать и вблизи и на удалении, сколько для того, чтобы на засорять эфир чрезмерно мощным сигналом.
Мой мозг родил пока следующий алгоритм: передатчик посылает постепенно нарастающие по мощности сигналы. В пакет добавляется байт с информацией об выставленной мощности передатчика. Как только приемник получает пакет, он отправляет ответ передатчику о том, что он услышан. Фишка в том, что приемник считает - раз до него дошел пакет, то значение мощности, закодированное в пакете можно использовать для отправки ответа - дойдет гарантировано.
Либо наоборот - как только сигнал слишком мощный, отправлять ведущему сигнал о том, что мощность неплохо было бы уменьшить.
Задача с одной стороны несложная, просто я не хочу изобретать велосипед, наверняка есть проверенные решения, к которым я могу и не прийти сам сразу.
Кто-что посоветует?
Думаю, начинать надо с установки диплексора, а уж затем отрабатывать алгоритм
ух... еханый бабай...
Господа, у меня есть готовый модуль приемник, передатчик, усилитель мощности, дополнительный усилитель сигнала.
Ради какой такой великой цели нужно устанавливать атенюаторы, диплексоры? И крутить то, что в CC1101 не крутится? Вопрос не общего плана, о приемниках и передатчиках вообще, а о конкретном трансивере. Задачу нужно решить средствами, доступными этому трансиверу. Я даже примерно прикидываю, как, просто хотел знать, как это делают другие.
Цитата
или иными словами, глубина АРУ в приемнике недостаточна?!?
По документации, насыщение приемника (или демодулятора), короче неспособность девайс распознавать пакеты наступает при -14 dBm. У меня 14 dBm примерно на 2-3 метрах.
vadimp61
Dec 6 2013, 04:28
У меня не работало на 2-3м даже при +10dBm, но такой задачи не было что бы рядом работать.
Если у вас двухсторонний обмен типа запрос - ответ, добавьте в ответ уровень приема RSSI, а база сама будет решать с какой мощностью выдавать пакет данному абоненту. Аналогично в обратную сторону, эта процедура в технологии DSL называется HandShaike (рукопожатие). То есть перед основным обменом идет служебный для определения достаточной мощности для безошибочной работы в кабеле связи. Обменяйтесь с базой парой пакетов для настройки мощности, алгоритм придумывайте сами.
Цитата
добавьте в ответ уровень приема RSSI, а база сама будет решать с какой мощностью выдавать пакет данному абоненту.
Спасибо, что-то вроде этого я и ожидал услышать.
Вот только это способ все-таки хуже того, что я предложил. Так как один и тот же RSSI может быть при слабом источнике сигнала вблизи, и при мощном источнике сигнала на удалении. Это получается полученный приемником RSSI нужно передавать обратно передатчику, а тот уже будет принимать решение, исходя из своей мощности.
Цитата
в технологии DSL называется HandShaike (рукопожатие).
Так вроде бы рукопожатие осуществляется один раз, во время установления связи. А тут нужно будет постоянно вычислять мощность.
Да, это проблема сс110, проходил. Вылечили кардинально — поставили Si4463
vadimp61
Dec 6 2013, 05:46
Цитата(zheka @ Dec 6 2013, 08:56)

Спасибо, что-то вроде этого я и ожидал услышать.
Вот только это способ все-таки хуже того, что я предложил. Так как один и тот же RSSI может быть при слабом источнике сигнала вблизи, и при мощном источнике сигнала на удалении. Это получается полученный приемником RSSI нужно передавать обратно передатчику, а тот уже будет принимать решение, исходя из своей мощности.
Так вроде бы рукопожатие осуществляется один раз, во время установления связи. А тут нужно будет постоянно вычислять мощность.
У нас в каждом устройстве есть Глонасс модуль, поэтому нет проблем далеко-близко).
Передавайте уровень мощности передатчика, и тогда, сравнивая уровень передачи и RSSI в приемнике можно будет вычислить далеко или близко находится передатчик.
Да, прийдеться каждый раз вычислять мощность.
Цитата(DASM @ Dec 6 2013, 09:04)

Да, это проблема сс110, проходил. Вылечили кардинально — поставили Si4463
То есть если рядом +30 дбм, приемник принимает все пакеты?
и рядом - это сколько?
еще попутный вопрос для тех кто городил внешний усилитель мощности -между включением усилителя мощности и посылкой строба STX задержку ставите? у меня передатчик корректно работает только в том случае, если после включения усилителя мощности ждать 500 мксек. а должны ли выдерживаться какие либо интервалы при отключении PA и включении LNA и наоборот? у меня имеются чисто технические задержки (пока буфер заполняю и читаю) - вроде работает.
чем больше думаешь над задачей, тем больше мысли приходят в порядок, а неподходящие варианты отсекаются.
Все таки получается следующее: передатчик пингует ведомое устройство пакетом, содержащим информацию о своей мощности. Эта информация нужна только для того чтобы ведомый мог отправить адекватный по мощности ответ. а в ответе ведомый отправляет уровень принятого RSSI. ведущий, прибавляет мощность до тех пор пока не только будет приходить ответ, но и РССИ не станет приемлемым.
Как оценивать РССИ? Наверное по значению LQI. Понятно, что при одних условиях достаточнь будет и -100 дбм, а при других и -40 будет не ахти. В этом случае RSSI теряет свою ценность и является балластом. Таким образом, код, работающий в ведущем устройстве будет выглядеть примерно следующим образом:
{
While ((не пришел ответ) || (значение LQI лишком мало))
{
МОЩНОСТЬ++;
}
}
Цитата(vadimp61 @ Dec 6 2013, 08:46)

У нас в каждом устройстве есть Глонасс модуль, поэтому нет проблем далеко-близко).
То есть если рядом +30 дбм, приемник принимает все пакеты?
и рядом - это сколько?
+34 дБм, на паре метров принимает. Может и ближе - они на разных столах были. Антенны J-типа прикручены, на 433, работал с полосой 20 кГц, 2-FSK
vadimp61
Dec 6 2013, 09:16
Цитата(zheka @ Dec 6 2013, 12:18)

еще попутный вопрос для тех кто городил внешний усилитель мощности -между включением усилителя мощности и посылкой строба STX задержку ставите? у меня передатчик корректно работает только в том случае, если после включения усилителя мощности ждать 500 мксек. а должны ли выдерживаться какие либо интервалы при отключении PA и включении LNA и наоборот? у меня имеются чисто технические задержки (пока буфер заполняю и читаю) - вроде работает.
чем больше думаешь над задачей, тем больше мысли приходят в порядок, а неподходящие варианты отсекаются.
Все таки получается следующее: передатчик пингует ведомое устройство пакетом, содержащим информацию о своей мощности. Эта информация нужна только для того чтобы ведомый мог отправить адекватный по мощности ответ. а в ответе ведомый отправляет уровень принятого RSSI. ведущий, прибавляет мощность до тех пор пока не только будет приходить ответ, но и РССИ не станет приемлемым.
Как оценивать РССИ? Наверное по значению LQI. Понятно, что при одних условиях достаточнь будет и -100 дбм, а при других и -40 будет не ахти. В этом случае RSSI теряет свою ценность и является балластом. Таким образом, код, работающий в ведущем устройстве будет выглядеть примерно следующим образом:
{
While ((не пришел ответ) || (значение LQI лишком мало))
{
МОЩНОСТЬ++;
}
}
А на чем у вас сделан УМ?
Я использовал RF5110, задержки уже не помню, подбирали под задачу. За 1с получить 30 байт информации с как можно большего число абонентов
Скорость 9600, полоса 58, 2FSK. получилось около 10 абонентов.
Если точно надо знать, то надо мерить длительности на коммутаторе трактов RX и TX.
Вот даташит на мой модуль.
DASM, скажите, а у вас был готовый модуль с усилителем в 30 dBm ?
Ссылочкой, где брали, не поделитесь?
vadimp61
Dec 6 2013, 19:53
Цитата(zheka @ Dec 6 2013, 18:16)

Вот даташит на мой модуль.
DASM, скажите, а у вас был готовый модуль с усилителем в 30 dBm ?
Ссылочкой, где брали, не поделитесь?
Что то я не увидел второго коммутатора RX TX и фильтрануться бы не помешало по приему каким нибудь ПАВ фильтром.
Так там по моему одним коммутатором все переключается..
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.