Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Икономично свързване на много на брой ротационни енкодери
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=4947
Страница 1 от 1

Автор:  juzisound [ Чет Окт 11, 2007 12:03 pm ]
Заглавие:  Икономично свързване на много на брой ротационни енкодери

Здравейте!
Нали знаете че съм музикант - или ако не знаете...
Върти ми се идеята да си направя един MIDI контролер, на базата на ротационни енкодери - или по-точно тия дето се продават в Комет. Чудя се обаче дали има някакъв по-хитър начин за връзка на много енкодери - към по-малко пинове на процесора - иначе ще се наложи да слагам голям процесор с много крака - а и те обикновенно имат и много повече ресурси, които в случая пък изобщо не са необходими.
То реално не е проблем, щото нито е скъпо - нито пък ще са много бройки, а и има под ръка подходящ процесор, но като цяло търся /най вече от любопитство/ някакъв по оптимален вариант. Опитах се сам да измизля - ама май няма как или поне аз съм достатъчно тъп да не се сетя...

Автор:  nik [ Чет Окт 11, 2007 5:40 pm ]
Заглавие: 

дали ще мине номера на принципа на динамичната индикация?

Автор:  tgi [ Чет Окт 11, 2007 9:07 pm ]
Заглавие: 

Преди над - малее, бая над 10 - години реших подобен проблем използвайки аналогов
вход и резисторна матрица на encoder-а. Имах само 6 позиции да хвана, та беше лесно,
но до към 16 позиции с 8 бита ADC би трябвало да е все още лесно.
Тогавашното ми безумие беше един 14x6 миниатюрен галетен превключвател (диаметър
към 10-12 мм), въртян от също толкова миниатюрно серво; една от 14-те секции на
галетата беше за обратна връзка, с резисторната матрица на нея. MCU-то (не че това
има значение в случая :-) ) беше HC11, регулирах с PWM двигателя на три степени,
две позции преди целта почваше спиране....
Нещо в тоя дух би намалило броя на входовете ти 16 пъти, ако encoder-ът е с по
крак на позиция.

Автор:  juzisound [ Чет Окт 11, 2007 9:23 pm ]
Заглавие: 

Да уточня за какво става дума. Значи става дума за енкодери - или наричани още безкрайни врътки - които не показват текуща позиция - а посока на въртене на оста. Откак ги научих как се ползват ги предпочитам пред всички останали видове бутончета. Мислил съм за принципа на динамичната индикация - ама сякаш е неприложим за тия енкодери - или поне аз не мога да измисля как. Щото може да се въртят поне 2 едновременно и то в различни посоки. А и да става - ще икономисам по 1 пин на енкодер а те нормално заемат по 2 - та не е кой знае каква икономия - ако е за сметка на сигурността...

Автор:  nik [ Чет Окт 11, 2007 10:07 pm ]
Заглавие: 

че 1 жица на енкодер икономия малко ли е :)
иначе се връзват лесно и ако ги четеш достатъчно бързо няма да си пречат даже и сичките наведнъж да ги въртиш
схемата е следната - тая врътка представлява 2 прекъсвача с общ извод
по сайтовете на микроконтролерите има примери за четене на клавиатура 4х4, това са 16 бутона или 8 енкодера
това е с минимален хардуер с 8 жици 8 енкодера или 10 жици 12 енкодера - тук икономията е повече :)

Автор:  Ico_Belqta [ Пет Окт 12, 2007 10:33 am ]
Заглавие: 

Това няма да стане.
Защото тия енкодери са с твърди позиции. Или дават контакт към 1 или към нула.
А матричните клавиатури са на принципа на детектиране на натиснат клавиш или отворена линия . Ако имаш два натиснати бутона няма да хванеш нищо. А тия енкодери ако има два едновременно в позиция която дава 1 няма да може да прочетеш нищо.
Даже и нулата да я направиш през резистор и да откриваш само 1-ци ако получиш 1 по две линии блокираш сканирането.
За да работи това както ти искаш трябва нулата да е през голям пулл даун резистор , а единицата да е кодирана с диференциран импулс през R-C верига , като направиш преминаване от 0-1 да ти даде къс импулс и да освободи линията. А за инверсния сигнал обратното 1 през пул-ъп а нула през диференциращ.
Може много хора да ми се разсърдят ама замислете се че тия енкодери не са като матрична клавиатура въобще .
Защо всеки път трябва да откриваме топлата вода и да правим всякви изчанчени дизайни дето после да ни вгорчават живота .
То и аз съм виждал ПИК дето с 4 крачета се организира динамична индикация , клавиатура и аналогови входове , но това по-скоро е като пример за студентите да видят как се организира мултиплексация на входовете и какви са предимствата от нея и как да се извади максимален резултат от минимален ресурс , но мисля че тук понякога се оливаме в рационализации и полет на мисълта .
Братле пробвай да си начертаеш схемата и да я разиграеш с позиции и времедиаграми и ще видиш че няма да стане.

Автор:  Nikola Kirov [ Пет Окт 12, 2007 11:51 am ]
Заглавие: 

Ще стане без много зор. Общите краища на ключетата на енкодерите към процесора. Ключетата заедно и с 2 резистора към +. Сканираш като на общия край на енкодера който искаш да четеш даваш нула докато на останалите Z.
Ама с тоя умрял пик може и да не ти стига производителност да обработваш много енкодери по този начин.

Автор:  valioman [ Пет Окт 12, 2007 12:52 pm ]
Заглавие: 

Nikola Kirov написа:
Ама с тоя умрял пик може и да не ти стига производителност да обработваш много енкодери по този начин.


......ще стигне , ще стигне ..... само акъл и желание да има човек всичко стига .

Автор:  tolstolob [ Пет Окт 12, 2007 1:00 pm ]
Заглавие: 

Хвърли поглед на това:
http://www.ucapps.de/

Мисля, че специално DIN модула е това, което ти трябва, а и като цяло от проекта може да се видят и други чалъми.

Автор:  juzisound [ Пет Окт 12, 2007 4:24 pm ]
Заглавие: 

И аз стигнах до извода - както казва Никола Киров, че най-лесно ще стане ако вържа средния извод на всеки енкодер на отделен пин, а другите 2 заедно за всички. Така обхождам всичките подред - и ако някъде открия движение - оставам там докато видя какво става. Незнам само ако почна да местя 2 енкодера едновременно дали няма да има проблем. Софтуера изглежда ще е лесен и бърз и изобщо няма да е проблем. Досега съм ги чел все в прекъсване на около 1мс. Ама сега си мисля че най добре ще е да пусна на всичките 0 и да чакам прекъсване от някой от 2та крака - примерно към порт Б. Така в прекъсването веднага обхождам всичките и разбирам кой е врътнат. Чудя се само дали ще е достатъчно бързо - ама май ще е. Кофти става обаче ако имам и някакво друго по продължително прекъсване - че тогава може да изпусна момента - ама ще пробвам. То по-икономичен начин едва ли има.

Автор:  xor [ Чет Окт 18, 2007 9:27 am ]
Заглавие:  А защо не с мултиплексор

Не разбрах точно каква ти е целта.
Само процесорът ли да не е с много крака, или изобщо да няма елемент с много крака?
Ако е първото, може да ползваш отделен цифров мултиплексор (по-скоро два за двата изхода на всяка врътка).
С процесора въртиш адресите. Това са да речем 4 извода за 16 врътки.
Още два входа за да следиш сигналите А и В. Общо 6 извода за 16 енкодера.
Няма да е необходимо и кой знае какво бързодействие. Гледам че на енкодерите им дават по 2mS паразитни сигнали по време на фронтовете.

Автор:  dimoto [ Чет Окт 18, 2007 2:04 pm ]
Заглавие: 

Сложи по едно малко пик-че на всеки енкодер и ги разпитвай после по един SPI, или какъвто се сетиш сериен интерфейс.

Автор:  valioman [ Чет Окт 18, 2007 2:21 pm ]
Заглавие: 

dimoto написа:
Сложи по едно малко пик-че на всеки енкодер и ги разпитвай после по един SPI, или какъвто се сетиш сериен интерфейс.


Е от това по скъпо решение няма :))) все пак човека търсеше ИКОНОМИЯ май :oops:

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/