Отговори на тема  [ 13 мнения ] 
Икономично свързване на много на брой ротационни енкодери 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение Икономично свързване на много на брой ротационни енкодери
Здравейте!
Нали знаете че съм музикант - или ако не знаете...
Върти ми се идеята да си направя един MIDI контролер, на базата на ротационни енкодери - или по-точно тия дето се продават в Комет. Чудя се обаче дали има някакъв по-хитър начин за връзка на много енкодери - към по-малко пинове на процесора - иначе ще се наложи да слагам голям процесор с много крака - а и те обикновенно имат и много повече ресурси, които в случая пък изобщо не са необходими.
То реално не е проблем, щото нито е скъпо - нито пък ще са много бройки, а и има под ръка подходящ процесор, но като цяло търся /най вече от любопитство/ някакъв по оптимален вариант. Опитах се сам да измизля - ама май няма как или поне аз съм достатъчно тъп да не се сетя...


Чет Окт 11, 2007 12:03 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 22, 2006 3:25 am
Мнения: 6418
Мнение 
дали ще мине номера на принципа на динамичната индикация?


Чет Окт 11, 2007 5:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Чет Окт 11, 2007 9:07 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Да уточня за какво става дума. Значи става дума за енкодери - или наричани още безкрайни врътки - които не показват текуща позиция - а посока на въртене на оста. Откак ги научих как се ползват ги предпочитам пред всички останали видове бутончета. Мислил съм за принципа на динамичната индикация - ама сякаш е неприложим за тия енкодери - или поне аз не мога да измисля как. Щото може да се въртят поне 2 едновременно и то в различни посоки. А и да става - ще икономисам по 1 пин на енкодер а те нормално заемат по 2 - та не е кой знае каква икономия - ако е за сметка на сигурността...


Чет Окт 11, 2007 9:23 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

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


Чет Окт 11, 2007 10:07 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

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

_________________
Мразя червени жички !!!


Пет Окт 12, 2007 10:33 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ще стане без много зор. Общите краища на ключетата на енкодерите към процесора. Ключетата заедно и с 2 резистора към +. Сканираш като на общия край на енкодера който искаш да четеш даваш нула докато на останалите Z.
Ама с тоя умрял пик може и да не ти стига производителност да обработваш много енкодери по този начин.


Пет Окт 12, 2007 11:51 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
Nikola Kirov написа:
Ама с тоя умрял пик може и да не ти стига производителност да обработваш много енкодери по този начин.


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


Пет Окт 12, 2007 12:52 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение 
Хвърли поглед на това:
http://www.ucapps.de/

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


Пет Окт 12, 2007 1:00 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

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


Пет Окт 12, 2007 4:24 pm
Профил WWW
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

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


Чет Окт 18, 2007 9:27 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Окт 05, 2007 1:15 pm
Мнения: 21
Местоположение: Ireland
Мнение 
Сложи по едно малко пик-че на всеки енкодер и ги разпитвай после по един SPI, или какъвто се сетиш сериен интерфейс.


Чет Окт 18, 2007 2:04 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
dimoto написа:
Сложи по едно малко пик-че на всеки енкодер и ги разпитвай после по един SPI, или какъвто се сетиш сериен интерфейс.


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


Чет Окт 18, 2007 2:21 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

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


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

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