| Микроконтролери и електроника 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-то (не че това има значение в случая две позции преди целта почваше спиране.... Нещо в тоя дух би намалило броя на входовете ти 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 ] | |||||||||
| Заглавие: | ||||||||||
......ще стигне , ще стигне ..... само акъл и желание да има човек всичко стига . |
||||||||||
| Автор: | 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 ] | |||||||||
| Заглавие: | ||||||||||
Е от това по скъпо решение няма |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|