roboforum.ru

Технический форум по робототехнике.

Работа с Энкодером

Работа с Энкодером

NorthStar » 17 мар 2011, 15:48

Добрый день!
Подскажите плиз микроконтроллер, который наиболее просто позволял бы работать с Энкодером 1024.
Пробовал на Arduino через прерывания, но работает только если мотор руками крутить, если сам крутится, то не хватает частоты.
Сейчас смотрю в сторону STM32 или dsPIC30.
Дайте пример кода, кто такие вещи реализовывал. Может есть контроллеры с аппаратной поддержкой энкодера? (чтоб сам положение и скорость выдавал, без программирования прерываний)
Общая задача - проще некуда. Микроконтроллер - PID регулятор - драйвер на H-мосту - мотор 12V c энкодером 1024. Всё есть, но пока затык - как считать данные с энкодера.

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 15:52

Рекомендую присмотрется к Intel Core 2 Duo, или даже Quad... Правда с разводкой платы могут быть проблемы, но ничего.

Сейчас дам код для энкодера.

Добавлено спустя 1 минуту 2 секунды:
http://www.piclist.com/techref/microchi ... enc-dk.htm
http://letsmakerobots.com/node/24031

Любой МК потянет.

Re: Работа с Энкодером

boez » 17 мар 2011, 16:15

dccharacter писал(а):Любой МК потянет.

На какой частоте потянет? Написано же, проблема не в коде как таковом, а в его производительности.
Про аппаратные решения. Если вращение однонаправленное - пойдет любой МК, имеющий таймер с внешним входом. А вот если хочется ловить направление - лично я использовал TMS320F240, но он старый, щас есть много новых МК из серии TMS320LF24xx и TMS320F28xx, они все имеют на борту декодер квадратурных сигналов с энкодера, а некоторые и по два. 2801 самый дешевый и мелкий.

Обороты максимальные какие?

Re: Работа с Энкодером

Michael_K » 17 мар 2011, 16:16

посмотрите в сторону xmega, там вроде бы аппаратно реализовано декодирование квадратурных энкодеров.

Добавлено спустя 23 секунды:
dccharacter писал(а):Любой МК потянет.

Вы не правы.

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 16:25

Ладно, почти любой. У меня на столе лежит россыпь пиков по 43 рубля штука. Тактовая частота с PLL - 32МГц. Движок сколько оборотов? 3, 5, 10 тысяч? Это частота 10 МГц. Или я опять про что-то забываю?

Re: Работа с Энкодером

Myp » 17 мар 2011, 16:26

если у него там 10 тыщ оборотов в минуту то это получается 170 тыщ импульсов в секунду
для 8 мГц процессора 170 кГц сигнал не должен быть проблемой....

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 16:33

А, ну да, я еще и движки прикидывал со скоростью вращения от 180 до 600 ТЫСЯЧ оборотов в минуту. И то тянуло :-)))

Ну я, конечно, теоретизирую, но вскоре после окончания битвы с i2c slave и до этого руки дойдут...
Последний раз редактировалось dccharacter 17 мар 2011, 16:34, всего редактировалось 1 раз.

Re: Работа с Энкодером

=DeaD= » 17 мар 2011, 16:34

Мне просто интересно - куда такая точность? :)

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 16:35

А я тебе уже говорил :-)

Re: Работа с Энкодером

Michael_K » 17 мар 2011, 16:36

Myp писал(а):для 8 мГц процессора 170 кГц сигнал не должен быть проблемой....


Ну это как делать, и чем еще, кроме этого заниматься.
50 тактов на фронт - это уже напряженно.
В смысле проц будет все время только этим и заниматься - это нехорошо.

И, кстати, вполне может быть, что 1024 позиции - это 4096 фронтов (энкодер квадратурный, считать можно по-разному).

Добавлено спустя 48 секунд:
=DeaD= писал(а):Мне просто интересно - куда такая точность? :)

Да уж не на игрушечное колесико, наверное :))

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 16:41

Michael_K писал(а):В смысле проц будет все время только этим и заниматься - это нехорошо.

dsPIC30F2020-30I/SO DSC 16 bit, 4K x 24 Enh Flash, NO EE, 0.5K RAM, Power control PWM 359.42 в резерве MICROCHIP
dsPIC30F4011-30I/PT DSC 16 bit, 16K x 24 Enh Flash, 1K EE, 2K RAM, CAN, Motor Control PWM 6 ch. 266.11 Да MICROCHIP
dsPIC30F4013-30I/PT DSC 16 bit, 16K x 24 Enh Flash, 1K EE, 2K RAM, CAN, AC'97 233.28 Да MICROCHIP
dsPIC30F5011-30I/PT DSC 16 bit, 22K x 24 Enh Flash, 1024 EE, 4096 RAM, 2 x CAN, AC'97 253.15 Да MICROCHIP
dsPIC30F6012A-30I/PT DSC 16 bit, 48K x 24 Enh Flash, 4K EE, 8K RAM, 2 x CAN, AC'97 337.82 Да MICROCHIP
dsPIC30F6014A-30I/PF DSC 16 bit, 48K x 24 Enh Flash, 4K EE, 8K RAM, 12-bit АЦП, 2 x CAN 378.78 Да MICROCHIP
dsPIC33FJ16GS504-I/PT DSC 16 bit, 16K Flash , 2K RAM, Motor Control PWM 8 ch 172.80 Да MICROCHIP

Добавлено спустя 2 минуты 55 секунд:
Да хотья пяток выделенных МК на каждый енкодер поставь - дешевле будет :-)

Re: Работа с Энкодером

Michael_K » 17 мар 2011, 16:41

Что это было?

Re: Работа с Энкодером

=DeaD= » 17 мар 2011, 16:43

Кстати, а топикстартер уже назвал конкретные скорости - оборотов в минуту, на которых ардуино на прерываниях не успевает отработать энкодер на 1024 клика? И надо бы скетч выложить к ардуино, на котором это делалось.

Re: Работа с Энкодером

dccharacter » 17 мар 2011, 16:44

Michael_K писал(а):Что это было?

Это цены на МК, которые ТС хочет использовать для чтения энкодеров, ага

Добавлено спустя 55 секунд:
А почему 50 тактов на фронт - напряженно?

Re: Работа с Энкодером

Michael_K » 17 мар 2011, 16:53

Не вижу логики. При чем здесь цена?

Не нужно заниматься шапкозакидательством. Представьте, что в проце есть еще пара прерывний и задач, помимо чтения энкодеров, и радужные картинки тут же исчезнут.

Наверное в 50 тактов что-то можно выдумать, но вряд ли разумно для этого использовать даже Си (не говоря уж про вайринг). И всю прогу под это дело придется затачивать (разрешать прерывания внутри других прерывний, избегать всяких непредсказуемых операций и т.п.)

Если нужны высокие скорости, то спасают только аппаратные решения. Они есть. Зачем же городить огород ради несчастного энкодера (обработка которого явно не основная задача).

Добавлено спустя 3 минуты 32 секунды:
Я бы взял ИксМегу
http://www.atmel.com/dyn/resources/prod ... oc8109.pdf
К иксмеге можно до трех энкодеров подключить. аппаратно.


Rambler\'s Top100 Mail.ru counter