Отговори на тема  [ 24 мнения ]  Отиди на страница 1, 2  Следваща
кодиране с коригиране на грешката 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение кодиране с коригиране на грешката
Ето, че продължавам темата със смущенията от DC мотора но вече в друг раздел :(. Оказа се, че филтрацията на моторите е ефикасна но не е достатъчна. С осцилоскопа свалих няколко пакета от предаваните байтове на изхода на приемника - при натоварен мотор. Когато ги разгледах, видях къде ми объркват данните смущенията пристигащи от мотора. Явно няма да ми се размине и ще се наложи използването на някой от кодировките с корекция на грешките. Молбата ми е, ако има човек занимавал се с подобно чудо - нека помага. Пускам една картинка за да покажа как влиаят смущенията ... примерно. Когато бях студент си мислех, че е безполезна теория но явно съм сгрешил.


Прикачени файлове:
3.JPG
3.JPG [ 24.32 KiB | Прегледано 2326 пъти ]
Чет Авг 24, 2006 1:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Гледайки картинката ми хрумва следната идея (без филтрация): Времето между спадащ и качващ фронт ти е константно,така че можеш да въведеш в приемника забрана към входа за време 2.4 - 2.5 милисекунди (малко по-малко от времето между спадащ и нарастващ фронт).Освен това може и да проверяваш дължината на импулса,т.е ако приетия импулс е по-къс от 3.5 милисекунди значи е смущение и не го вземаш в предвид.За момента това ми хрумва.Айде успех :)


Чет Авг 24, 2006 2:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
най-просто пробай с интерливинг. така ако смущенията са с някакъв период ще избегнеш повтаряемост на грешката. кодовете за корекция изискват малко повече ресурс на процесора така че ако ползваш някакъв слаб контролер...ще имаш проблеми.

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Авг 24, 2006 2:28 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Дек 22, 2004 2:56 pm
Мнения: 347
Местоположение: Хасково
Мнение 
Или пък друга идея, ако наистина честотата на импулсите е е постоянна и времето в LOW и HIGH също е постоянно можеш например да си вземаш по три семпъла на равни промеждутъци м/у тях, и ако поне два са еднакви (LOW или HIGH) да вземеш това ниво за вярно - така както е направено в USART -a. Вярно идеята е малко безумна ама защо не?

ЕДИТ: Лошото е че не можеш да четеш дълги пакети ......


Прикачени файлове:
untitled.GIF
untitled.GIF [ 2.98 KiB | Прегледано 3500 пъти ]
Чет Авг 24, 2006 3:06 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
проблема е, че това са смущения и никой не знае в кой момент ще се появят и как ще повлиаят на предаваната дума. Правил съм какви ли не опити, като мерене на ширина, следене по падащ и повдигаш се фронт ... и накрая става една огромна каша! В момента съм с PWM кодиране, но мисля да мина на Манчестър и да направя напречно-надлъжна /редове и колони/ проверка със смятане на грешката, но със сигурност ще ми трябва помощ


Чет Авг 24, 2006 3:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Що не ползваш някое манчестър или NRZ кодиране първо.
ПП. Сондата на скопа калибрирал ли си я скоро 8) ?


Чет Авг 24, 2006 3:21 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
Dimitar написа:
Що не ползваш някое манчестър или NRZ кодиране първо.
ПП. Сондата на скопа калибрирал ли си я скоро 8) ?


Сондата на скопа е такова дърво ... преди седмица разглобих целият скоп докато се усетя, че проблема е в сондата :))) но ... сондите на ТЕКтроникса са доста скъп лукс :)
Тази вече ще сменя PWMa с манчестър ... дано да даде резултат.


Чет Авг 24, 2006 3:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Ако смущенията можеха да се придвидят - нямаше да бъдат смущения!Изчисти си максимално програмата,т.е пускай я по модули.Когато се увериш че даден модул работи коректно тогава пиши следвашия.Управляваш двигател -но не скоростта му а само посока на въртене! Имаш ПУСК,СТОП,ЛЯВО,ДЯСНО.Елементарно казано това са 4 команди,т.е 4 кодови думи.Преди малко ти написах какво да направиш,но явно не си го прочел:Времето между импулсите е константно,така че по време на паузата ЗАБРАНЯВАШ или ИГНОРИРАШ това на изхода от приемника. В интервала когато чакаш ако дойде импулс,проверяваш дължината му и ако е над 70% от времето значи е "1" в противен случай имаш "0".Почнеш ли да правиш кодиране,така както обесняваш,ако кода не е от тези изправящи грешки,може 2 бита да сгрешиш и пак оцапваш работата.Другия вариант е да предаваш всяка команда по 2 или 3 пъти.Ако приемника регистрира 2 еднакви комбинации от битове,значи командата е вярна и я изпълнява(това е по-продължително като време но е сигурно а и ти имаш само 4 команди).Ако пак не си ме разбрал -обади се.


Чет Авг 24, 2006 3:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
дай малкко яснота:
предаваш команди, статус или кво?
имам в предвид къси съобщения или непрекъснат поток информация?
ако си организираш нещата така, че да съобщението да го предаваш три пъти, в приемната страна ще можеш да вземеш решение за достоверност 2 от 3(majority voting му се вика по книгите)!
още по-голям ефект ще има ако разместиш байтовете в трите пъти предавано съобщение в някакъв псевдослучаен ред (един вид интерливинг)-> в приемната страна по обратен ред подреждаш ги и вземаш решение.
иде реч, че ако има периодични смущения, при разместени байтове няма да ти се прецака един и същи байт.

но това помага е ако си сигурен че физическия пренос на инфо ти е ОК. ако имаш бози по предавател / приемник по захранване ,нестабилност на кварцови генератори, съгласуване на антени и т.н.....първо тях трябва да гониш

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Авг 24, 2006 3:54 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
предавам 48 бита като последните 8 бита са ми чек сума а предпоследните 8 са ми данните за управлението /нарочно съм ги сложил в 8 бита/. Когато натисна бутон - например UP - приемника ми получава командата и започва да я изпълнява - като движи мотора нагоре. Когато не е натоварен самият мотор и продължавам да предавам командата UP - съответно мотора продължава да се движи нагоре и ако в последните 0,5 секунди не получи команда UP - спира движението!!! И какво става когато ефира стане боза !? Няма команда UP и мотора спира, а когато спре - ефира е чист и веднага получава командата и пак започва движението нагоре ... и става едно накъсване на движението!!! Нямам време да го проверявам 2 или 3 пъти този код за да си осигуря достоверност, просто ми трябва поне един читав код за тези 0,5 секунди за да не ми спира мотора. Появява се и проблем ако меря дължината на импулса - на осцилоскопа забелязах и обратното смущение - когато е високо нивото - ми го сваля на 0 и пак се оцапват работите.


Чет Авг 24, 2006 4:19 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
предавам 48 бита като последните 8 бита са ми чек сума а предпоследните 8 са ми данните за управлението /нарочно съм ги сложил в 8 бита/. Когато натисна бутон - например UP - приемника ми получава командата и започва да я изпълнява - като движи мотора нагоре. Когато не е натоварен самият мотор и продължавам да предавам командата UP - съответно мотора продължава да се движи нагоре и ако в последните 0,5 секунди не получи команда UP - спира движението!!! И какво става когато ефира стане боза !? Няма команда UP и мотора спира, а когато спре - ефира е чист и веднага получава командата и пак започва движението нагоре ... и става едно накъсване на движението!!! Нямам време да го проверявам 2 или 3 пъти този код за да си осигуря достоверност, просто ми трябва поне един читав код за тези 0,5 секунди за да не ми спира мотора. Появява се и проблем ако меря дължината на импулса - на осцилоскопа забелязах и обратното смущение - когато е високо нивото - ми го сваля на 0 и пак се оцапват работите.


Чет Авг 24, 2006 4:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
пич още не си драснал къф процесор използваш?
защото тия 0.5секунди за едни са много за едни са малко
на сигнален процесор TMS320VC33/ на 7мегахерца честота на кварца(по 5 за вътрешния генератор)->седемкратно 32битово мажоритарно кодиране ми върви за 50 микросекунди, рийдсоломон оправя 7 пакетни грешки за 2.5милисек.
но ако имаш контролер...зависи

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Авг 24, 2006 4:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
За такива случаи като твоя никакво кодиране не ти трябва.
Предай си няколко пакета последователно всеки с собствена контролна сума. Ако имаш команди които са аналогични на push button /не знам как да се изразя по добре :) / си сложи в началото още един баит които да е пореден номер на командата и след успешно приета команда следващите вярно пакети със същия пореден номер се игнорират. в предавателя си пазиш номера на последната предадена команда и при всяка излъчена команда го инкрементираш.

Какво толкова има да го мислиш. Общи линии елементарен проблем. А и малко филтриране на входа по методите които ти подказаха колегите няма да са излишни ако все пак се окаже че от няколкото пакета които предаваш на всяка команда пак се случва нито един да не премине нормално.

В общи линии увеличавайки броя на пакетите които пращаш на всяка команда се намалява и вероятноста да имаш недекодирана команда някога. Така че пускай си възможно повече пакети на всяка команда.


Чет Авг 24, 2006 4:29 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
Ползвам PIC16F628 с 4 мегахерца кварц. Време има колкото си искаш!!! Проблема е, че не мога да приема нещо читаво когато има смущения. Дори сега намалих думата на 32 бита за да има повече време за приемане на "здрав" пакет! Записвам и в ЕЕПРОМа грешно получените кодове, за да се ориентирам на къде съм - е, има по 2 - 3 бита грешни които не ми позволяват да продължа напред! :(


Чет Авг 24, 2006 4:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Май нещо не е наред защото:бутона като го натиснеш процесора отработва движението а колко трае то ?Следващата команда идва след (според картинката ти ) -> 4(деления)х1.56(милисекунди)х48(бита)=295.6 милисекунди.Ако процеса на движение е инертен тези 0.3 секунди няма да ги усетиш.Другия вариант е да преправиш алгоритъма- когато бутона е задържан над 2 секунди мотора да се върти докато не получи команда стоп,спре го краен изключвател или работи определено време (брой цикли зададени от тебе с константно време). Наистина е неприятно да цикли но пак си обмисли алгоритъма,а и 48 бита за такова нещо ми се виждат малко множко.Според мен е добре следния вариант:1 стартов,1 стопов,2 за чек сума и 4 за код за команда и се вмвстваш в 8 бита.Кратка команда,малко време за предаване(може и да я повториш спокойно),комадната е кодирана ,знае се от приемника и си спокоен.Според мен се пробваш да трепеш комари с гаубица ,не се обиждай но така ми се струва.Не си усложнявай сам задачите повече от необходимо -това докарва само нерви !


Чет Авг 24, 2006 4:55 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 24 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни