| Автор |
Съобщение |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
Чак пък 16 !?
Аз го правя не с таблица, а със сравняване. В края на краищата на теб ти трябват 4 от тези 16 състояния. Ако сравняванията не ми съвпаднат с никое от тези четири състояния, изпадам в грешка и игнорирам. Самото сравнение ми заема по-малко код отколкото таблицата.
_________________ Digitally yours: Optron
|
| Вто Окт 26, 2010 10:58 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Добре, де. В мишките е пълно с оптронни енкодери. Няма ли ги в подходящ за монтиране вид на пазара. Едва ли е чак такава философия. Пък и по-лесно се чете по начина както съм го направил аз - едно прекъсване и един бит за посока.
|
| Нед Окт 31, 2010 3:19 am |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
В мишките всичко виси по платката. Разглобявал съм, виждал съм. Такива готови в единен корпус не съм виждал.
А действително това с прекъсването е най-лесно реализируемото от софтуерна гледна точка.
_________________ Digitally yours: Optron
|
| Съб Ное 06, 2010 9:37 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 Четене на механичен енкодер
Прилагам ви един код, който доста успешно се справя с четенето на механични енкодери и е малък по обем.
Примера е реализиран за атмел контролери (atxmega), но съм убеден, че лесно ще можете да го префасонирате за вашия любим такъв
Идеята е взета на готово от ChaN, като леко е модифициран кода за по голяма универсалност.
ПС: Наистина няма да е лошо, да се инсталира и едно Wiki, че такива неща да има къде да се слагат.
|
| Пон Май 23, 2011 8:52 pm |
|
 |
|
wxorx
Ранг: Минаващ
Регистриран на: Съб Ное 06, 2010 12:03 pm Мнения: 3
|
Ето моя код, който не ползва прекъсвания и таймери, и работи бетон - хваща си и едно прецъкване, и две, и много, и то бързи. Зашумяването при превключване, както и времето на лагване между фронтовете варира доста и зависи от скоростта на въртене, от енкодера и въобще не може да се разчита на него, така че всички опити с таймери и прекъсвания са прекалено точни и бързи и ненужни. Да не говорим че понякога евтините енкодери могат да запецнат в междинно състояние. Кода е за няква мега8, с авр-гцц:
По принцип винаги си коментирам кода на английски. Българските коментари на дефайните ги добавих за яснота тук
_delay_ms() е библиотечна функция, от авр-либц. Може да си я смените с ваша ако не ползвате стандартните библиотеки..
|
| Нед Юли 10, 2011 10:32 am |
|
 |
|
VANK
Ранг: Ориентиран
Регистриран на: Чет Май 12, 2005 11:10 am Мнения: 211
|
Значи според мен проблемът ти е в начина на отчитне.
Аз съм направил много неща с такива енкодери и други доста по-големи.
Свързвам двете фази на В-порта старша част и пускам прекъсване от промяна на състояние н входа.
Сетне чета и двете фази.
Преди това съм запомнил до сега какви са били фазите.
И зависимост от състоянието (това са 4 комбинации) вземаш решение ступка напред или стъпка назад.
Няма грешка - бъди сигурен!!!
|
| Сря Юли 13, 2011 8:59 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: Rotary encoder
Да не отварям нова тема пък и то си е продължение на тая де. Любопитно ми е какво налага софтуерното (или друго) debounce-ване на тия механичните врътки. Това че шуморлясват около точките на прекъсване ясно, но то не би било проблем освен ако не се застъпват (т.е. да шуми не само тоя изход в преход ами и тоя, дето е стабилен по това време). Така ли шумят наистина? Аз наскоро сложих два - ама купих оптически, да нямам изненади а и очаквах да се връткат по-мазно (и се въртят доббре наистина  ). Понеже е еднократно изпълнение за да се подсигуря купих от тия: http://eu.mouser.com/Search/ProductDeta ... D-C24-L32S. Работят добре по отношение връткане, но копчето за натискане изолацията му падна до към 1 кило - след само месец спорадично пипане по време на разработката. Аз го напънах повечко и засега работи, ако откаже ще пробивам дупки в кутията и ще слагам отделни бутони, кво да правя. Разказвам историята като поучителна защо не винаги по-скъпият вариант е по-сигурен  . Инак любопитстовото ми е само защо става дума за debounce-ване, днес търсех нещо друго (линк който бях поствал) и попаднах и на тая тема дето ми е актуална в момента  .
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Ное 16, 2011 8:51 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Rotary encoder
Ами те в действителност двата ключа включват почти едновременно в момента на кликването, единия малко изпреварва/изостава в зависимост от посоката. Когато не се върти и двата са изключени. Пък вече за дебаунсване - зависи как го слушаш ключето. То по принцип е хубаво да е на прекъсване единия край и тогава реакцията на контролера е доста бърза та сработва няколко пъти. Аз лично за да не си натоварвам софта им слагам 100nF и 4,7k пулъпи и всичко става ок.
|
| Сря Ное 16, 2011 10:30 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: Rotary encoder
Чакай бе, не са ли отместени на 90 градуса фронтовете? Т.е. единият цъка по средата на стабилното състояние на другия? Изглежда и механически по-лесно постижимо ама знам ли. Тия оптическите са така поне. И очевидно ако не пука някой докато трябва да е стабилен няма нужда от филтри, първата пуканка хваща, остнаналите до следващия път (т.е. след пуканка в другия канал) се игнорират.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Ное 16, 2011 10:41 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Rotary encoder
То и аз така си мислех отначало, ама тия дето ги имаше в комет се оказа че не са.
Е да де ама нали следиш фронта на единия канал - та той като е на прекъсване неговите пуканки се хващат по 10-20 пъти. Другия че не пукал - той ми е само за определяне на посоката.
|
| Сря Ное 16, 2011 10:59 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: Rotary encoder
Е, колко са няколко пуканки за игнориране. То аз и двата ги дебна в прекъсване де, точно за да филтрирам по "първи цъкнал", но товарът е пренебрежим както и да го гледаш. Въпросът е да не се разшумят и двата едновременно (че за посоката при прекъсването на единия гледам нивото на другия, а и "първи цъкнал" отива на кино ако правят малки пуканки и в стабилната си част).
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Ное 16, 2011 11:09 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Rotary encoder
В стабилната част не съм забелязал да пукат - то и няма логика  . Както казах 100nF спасяват положението. По принцип винаги съм бил противник на преборването на хардуерни проблеми със софтуерни средства  Ама и варианта с оптични си е по-добър отвсякъде. Особено ако оптроните имат вградени шмигери - тогава си става чудно.
|
| Сря Ное 16, 2011 11:20 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: Rotary encoder
Специално тия цъкат стръмно, явно имат шмигери. То за $20+ остана и да не цъкат свястно. Инак моят принцип пък е ако нещо става (става като става, без компромиси във функционалността) в софтуера спестяваме съответния хардуер  . В случая бях максимално далече от тоя принцип де, тия хем щракат хубаво хем всичко но са на 5 волта та ги буферирах надолу (4-те изхода, нали два имам) с едно 74hc132, и понеже не ги знаех как ще се държат а време за експерименти нямах, сложих и по една RC група на всеки изход  . Но както и да се пази човек от гадни изненади все му намират цаката гадините, ей го за $20+ едната врътки почнаха да им се развалят натискарките от нищо. Откак ги напънах с повечко ток държат де, ама ще мога да кажа, че това работи ако удържат поне година оттук натам.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Ное 16, 2011 11:43 pm |
|
|