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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение NorthStar » 17 мар 2011, 15:48

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

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

Любой МК потянет.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение boez » 17 мар 2011, 16:15

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

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

Обороты максимальные какие?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение Michael_K » 17 мар 2011, 16:16

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

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

Вы не правы.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение dccharacter » 17 мар 2011, 16:25

Ладно, почти любой. У меня на столе лежит россыпь пиков по 43 рубля штука. Тактовая частота с PLL - 32МГц. Движок сколько оборотов? 3, 5, 10 тысяч? Это частота 10 МГц. Или я опять про что-то забываю?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Myp » 17 мар 2011, 16:26

если у него там 10 тыщ оборотов в минуту то это получается 170 тыщ импульсов в секунду
для 8 мГц процессора 170 кГц сигнал не должен быть проблемой....
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение dccharacter » 17 мар 2011, 16:33

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

Ну я, конечно, теоретизирую, но вскоре после окончания битвы с i2c slave и до этого руки дойдут...
Последний раз редактировалось dccharacter 17 мар 2011, 16:34, всего редактировалось 1 раз.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение =DeaD= » 17 мар 2011, 16:34

Мне просто интересно - куда такая точность? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение dccharacter » 17 мар 2011, 16:35

А я тебе уже говорил :-)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Michael_K » 17 мар 2011, 16:36

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


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

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

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

Да уж не на игрушечное колесико, наверное :))
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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 секунд:
Да хотья пяток выделенных МК на каждый енкодер поставь - дешевле будет :-)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Michael_K » 17 мар 2011, 16:41

Что это было?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение =DeaD= » 17 мар 2011, 16:43

Кстати, а топикстартер уже назвал конкретные скорости - оборотов в минуту, на которых ардуино на прерываниях не успевает отработать энкодер на 1024 клика? И надо бы скетч выложить к ардуино, на котором это делалось.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение dccharacter » 17 мар 2011, 16:44

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

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

Добавлено спустя 55 секунд:
А почему 50 тактов на фронт - напряженно?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Michael_K » 17 мар 2011, 16:53

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

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

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

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

Добавлено спустя 3 минуты 32 секунды:
Я бы взял ИксМегу
http://www.atmel.com/dyn/resources/prod ... oc8109.pdf
К иксмеге можно до трех энкодеров подключить. аппаратно.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14