| Автор |
Съобщение |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
 Проблеми с шумове при RF дистанционно
Колеги,искам ако може да споделите мнения за кодиране и декодиране на сигнали при RF дистанционно.Имам страхотни проблеми с шумовете,Направих си кодер с ATtiny44 ,кодирането си го измислих сам,като ползвам за синхронизация импулс с дължина 2,4милисекунди и пауза 600 микросекунди ,за лог."0" ползвам импулс 600микросекунди и пауза 600микросекунди,за лог"1" ползвам импулс 1,2 милисекунди и пауза 600 микросекунди.Командата ми е 30 битова .На всеки 4 бита имам контролен бит по четност и накрая последния е общ контролен бит за пакета.Декодера ми е изпълнен с АТМЕGA8.Имам 6 команди .На симулация в Протеус всичко е перфектно.При тест на реален хардуер, като декодера е вързан директно с кабел към кодера,отново всичко си работи идеално.Използвам RF модули на Aurel с амплитудна модулация за 433МHZ,като приемника е суперхетеродинен с добра чувсвителност и филтрация.Когато закача кодера и декодера съответно към предавателя и приемника започват проблемите.Трудно се дешифрират командите ,не се държи стабилно.На изхода на приемника с осцилоскопа се виждат разни импулси със случаен характер ,без да има излъчване от предавателя.Декодера се опитва да захване синхро импулса,но таймера се нулира преждевременно от смущаващи импулси и проваля всичко.Пробвах да филтрирам данните от приемника преди декодера ,но отново без успех.Дайте идеи какво мога да направя.Ако мина на RF модули с честотна модулация,дали 6те се реши проблема или да сменя начина на кодиране с друг,но какъв да бъде за да е мах шумозащитен?
|
| Вто Юни 16, 2009 10:34 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
при близко разположени приемник и предавател сигнала трябва да е като цифров - без никакви шумове. ако това не е така приемника ти не е настроен или предавателя е зле. филтровка аналогова - задължително, с времеконстанта около 200 микросекунди. тригер на шмид и той задължителен.
|
| Вто Юни 16, 2009 11:11 am |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
по принцип на изхода на приемничетата на аурел има непрестанно импулси, независимо че предавател няма в обхвата. Това се дължи на принципът им на работа.
Основният проблем тук ми се струва само софтуерът за декодиране.
Аз работя със суперрегенеративни приемничета на аурел като скоростта ми на предаване е 2 пъти по-бърза от тази която си описал и работят много стабилно до 30 метра на открито например, иначе в сгради в рамките на апартамент 80 квадрата бетон.
А колкото до разстройването на приемника и предавателя - повечето модулчета са настроени с разни печатни индуктивности и капацитети и не подлежат на донастройка, въпреки че има и такива които могат да се пипнат
|
| Вто Юни 16, 2009 1:46 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Софтуера декодира ,като измерва време с таймера между два съседни предни фронта и в зависимост от това дали времето е в обхвата за синхро импулс,"1" или"0" съответно стартира декодирането и записва 0 или 1 в нулевия бит на една unsigned long int променлива ,транслация с един бит наляво и т. н. до 30.Проблема е че не виждам как да направя софтуера за да избягам от фалшиви прекъсвания заради смущения които ми спират таймера и отчетените времена са нереални,така че алгоритъма ги отхвърля.Както и да го направя винаги ще търся предни или задни фронтове,трябва да имам и прекъсвания .Мислех си за Манчестър,но не е от любимите ми кодове.Скоро правих RFID четец ,там имах същите проблеми с интегралните схемиEM4095 и U2270 - сигнал на изхода без да има карта.На базата на доста компромиси там успях да се справя ,но мисля че тук Манчестър кода няма да ми реши проблема.Пробвах с интегрираща верига с времеконстанта 200 микросекунди както предложи колегата,малко се подобри работата ,но още съм далеч от истината за надеждна работа.
|
| Вто Юни 16, 2009 2:21 pm |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
Кодирането ти е добро. По принцип всички дистанционни за аларми кодират така - всеки бит се състои от времеви интервал 3Т.
лог. 0 - през първия интервал Т имаме 0, следващите 2 интервала Т имаме 1
лог. 1 - през първите два интервала Т имаме 0, на третия интервал имаме 1
Обикновено 1 бит се предава за време от 300 до 500 микросекунди.
Има само 1 бит за старт - синхробит.
Пакетите се предават непрестанно като времето между тях е от 1 до 10 милисекунди - което всъщност елиминира задействане на декодера ти от случайни флуктоации в приемника.
|
| Вто Юни 16, 2009 3:21 pm |
|
 |
|
emilvtc
Ранг: Форумен бог
Регистриран на: Вто Фев 06, 2007 8:44 pm Мнения: 3175 Местоположение: Пловдив
|
Радиопредавателя и радиоприемника ти изкривяват сигналите които преминават през тях. Например ако прекараш през тракта сигнал с коефициент на запълване 50% - то на изхода на приемника ше видиш сигнал с коефициент на запълване различен от 50%. Нещо повече - това изкривяване зависи и от разстоянието между приемника и предавателя.
Точно заради това трябва да "кодираш" нивата на лог. сигнали по начин, котйто въпреки тези "изкривявания" да ти позволява правилно да ги детектираш. Например за лог."1" можеш да използваш импулс с продължителност 300мкс и пауза 600мкс. За лог. "о" - импулс 600мкс и пауза 300мкс. (погледни формата на KEELOQ HCS300 na микрочип например).
За начало на трансмисията е добре да използваш "маркер", който е силно различим от начина по който кодираш лог."0" и лог. "1". Например можеш да предаваш 10-20 импулса 300мкс и пауза 300мкс. Техният коефициент на запълване е 50%.
Погледни описанието на "HCS300" на микрочип и съм сигурен, че ще ти дойдат много идеи как да направиш собствен протокол максимално отговарящ на потребностите ти.
Относно шумотевицата на изхода на радиоприемника ти когато не излъчваш сигнал - това е неизбежно. Има я винаги, когато входният сигнал (в твоят случай фоновият шум) е с ниво около границата на чувствителност на приемника ти. Трябва да се справиш с това софтуерно.
Ако радиото ти има изход RSSI - то можеш да мериш нивото му и да се "заслушваш" само ако е над определена стойност. Това разбира се би ограничило обхвата на радиовръзката и не ти го препоръчвам..
Разбира се по-добре би било ако работиш с FM вместо AM модулация. Разбира се АМ решенията са значително по-евтини за сметка на влошена шумоустойчивост. Е, всичко е въпрос на компромис цена/качество и конкретно приложение.
Мисля си, че няма да е лошо първо да се поразровиш и да видиш как работят подобни системи и какъв е протоколът им - и после да синтезираш свой собствен, който да отговаря на изискванията ти.
|
| Вто Юни 16, 2009 3:24 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Много Bи благодаря за съветите колеги,ще прегледам как го правят Микрочип и ще направя маркер с 12импулса по 400микросекунди за синхронизация и коеф.на запълване 50% .
|
| Вто Юни 16, 2009 4:15 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
ти все пак не каза най-важното, колко са отдалечени приемник и предавател когато ги мери тия неща.
|
| Вто Юни 16, 2009 4:21 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Не знам как ги правят днес дистанционните, ама преди много години имаше
един стандарт за писане по касетофони, дето работеше при много тежки откъм
шум условия - някои може и да го помнят. Kansas City се казваше, 4 периода
на 1200 Hz е 0, 8 периода на 2400 Hz е 1.
Това в комбинация с някаква тъпа чексума съм го докарвал до практически
непробиваемо за шумове (т.е или работеше или не,грешни данни не помня
да съм видял да минат), и е съвсем елементарно за реализация.
32 бита биха минали за под 200 mS, за дистанционни трудно може да се
измисли по-стабилно нещо.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Вто Юни 16, 2009 4:59 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Приемника и предавателя са на 2метра.Наистина е така,както каза колегата emilvtc направих маркера с 12 импулса по 400микросекунди.На симулация всичко е перфект,без ВЧ модулите всичко е ОК.Като мина сигнала през ВЧ модулите и импулсите от синхро маркера си промениха дължините .Импулса се удължи с 60 микросекунди а паузата намаля с 30 микросекунди.Това изобщо не бях го взел под внимание ,ако не ми бяхте казали за това нямаше да се сетя.Сега си играя да нагаждам времената,за да постигна синхромаркера да стане с коеф на запълване 50%
|
| Вто Юни 16, 2009 5:09 pm |
|
 |
|
emilvtc
Ранг: Форумен бог
Регистриран на: Вто Фев 06, 2007 8:44 pm Мнения: 3175 Местоположение: Пловдив
|
Не се занимавай да променяш формата на импулсите за да ти са 50% след преминаване през радиотракта. Това не ти трябва. Просто направи "патърните" на импулсите силно разграничаеми.
Например 1/3 "high1" и 1/3 "low" за единица и 1/3 "low" и 1/3 "high1" за нула. Даже ако искаш направи съотношенията не 1/3 а 1/4 или повече. Това за съжаление ще ти намали бодрейта, но както ти писах и преди - "пълно щастие няма" и всичко е въпрос на компромис.
Можеш да помислиш да направиш протокола ти да не зависи от промяната на честотата на процесора ти - т.е. да можеш да използваш RC осцилатор (вътрешен или външен).
По този начин примерно можеш да измериш честотата на импулсите от "преамбъла" на фрейма ти и по тях да определиш бодрейта на сигнала. Това може да става при приемането на началото (преамбъла) на всеки фрейм. Така и двата ти процесора - в приемника и предавателя могат да ти използват RC неточни осцилатори.
|
| Сря Юни 17, 2009 10:55 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Погледни дейташиита на това MC145026P, аз по него си направих протокол и се получи доста прилично. В приемника засичам някакви относителни времена генерирани от някой от таймерите, следя и двата фронта и с малко проверчици филтрирам всички шумове. Преамбюла ми е 3Т High + 1Т low, сигнала 2T high + 1T low за 1 и 1Т high + 2T low за нула, на около 2KHz
|
| Сря Юни 17, 2009 12:41 pm |
|
 |
|
Ugeen
Ранг: Новодошъл
Регистриран на: Пон Яну 16, 2006 5:20 pm Мнения: 122 Местоположение: гр. Горна Оряховица
|
Направих всичко така както казвате.Аз още отначало съм си кодирал "0" и "1" така че да се различават и то доста.Единствено синхроимпулса не ми беше направен с преамбъл от няколко еднакви импулса .Вчера го направих с 12 импулса по 400 микросекунди 50% коеф. на запълване.Следва пауза 4милисекунди и започва командата.По принцип за да хвана преамбъла и дългата пауза преди командата следя и двата фронта,но като започне командата следя само предни фронтове и меря с таймера дали съм в допуските за "1" или "0".Устроиството ми работи значително по добре.Днес пробвах на пряка видимост и постигнах около 70м.Но ако наклоня антената на някъде командите прекъсват не работи надеждно.От близко е доста по добре,но си мисля че не бих разчитал напълно на това дистанционно.Може би това са възможностите на тези ВЧ модули с АМ на Аурел.Предавателя е за 3 волта-RTX-MID-3V ,а приемника RX-4MM5.Предавателите на дистанционните за коли са за 12 волта и може би са по-мощни.Ако имате опит с някои по-кадърни и прилично евтини модули за АМ препоръчайте ми нещо .По принцип гоня 100метра надеждна работа.
|
| Сря Юни 17, 2009 4:54 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
Не са по мощни!
Дори и 6V да му сложиш на твоя излъчвател пак ще работи защото е един обикновен транзистор и не зависи толкова от това какво напрежение му пускаш.
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Сря Юни 17, 2009 5:13 pm |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 11:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Да бе, нямало значение! Тя колата разбира на коя фирма е бензина пък мощността дето е U*I а I обикновено зависи от U...
Ugeen, навремето си играх с еднотранзисторни FM предавателчета на звук на 100 и 400 мХц. Приемникът беше добър суперхетередин с 1/4 антена. Предавателчето трябваше да е компактно но работеше в доста тежък за батерия режим с над 0.1Вт изходна (тогава можех да ги изчислявам тези неща). Обаче дори с "некомпактна" предавателна антена и по-голяма мощност 100-те метра бяха задоволителният максимум.
Ама то въртиш ли антената все ще намериш неподходящ ъгъл...
Иначе: ти радио не си ли слушал? На AM винаги има смущения а на FM има шум само ако няма сигнал (освен ако няма детекция която да дава на mute при липса на сигнал) и съответно принципът на работа е различен.
Обаче в твоя случай софтуерният ти декодер е прекалено прост: не трябва да се съобразява с краткотрайни изменения - както е в управлението на клавиатура. Или направо симулирай верига от итегратор-шмитер, шмитерът се задейства на 1/3 и 2/3 от макс. сума до която интеграторът стига за 1/2 време от най-краткият импулс (това го казах по памет, вече не бих го изчислил). Така получените "импулси" вече преминават през времеви компаратор с праг на превключване посредата. А хардуерно: 1-а RC верига към шмитерен вход също е добре.
Дано съм помогнал с нещо.
|
| Сря Юни 17, 2009 10:23 pm |
|
|