реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Обработчик сигнала от инкрементого энкодера
Pasha 111
сообщение Jul 5 2008, 23:30
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Есть инкрементный энкодер (каналы А и Б). Делал проект для управления 2-мя двигателями на проце AT91SAM7S64 (ARM, 48 MHz). Прерывание ставил только на изменение канала А. В итоге проц мог обрабатывать 2 энкодера с общей частотой вызовов прерываний около 200 КГц. Реально частота при работе ниже, но в нормальном режиме загруженность проца доходила до 70% только при обратобке энкодеров.

Сейчас датчиков уже 4. Соответственно процессор уже не справится. Существуют ли аппаратные счётчики энкодеров в виде отдельного устройства, подключаемого к процу по последовательному нтерфейсу?

Искал решения на этом форуме - встречал темы, где частоты были менее 10 КГц, там всё решалось программно. Поставить ПЛИС или DSP (например от TI - TMS320F2801 - там встроенный аппаратный счётчик есть) не могу, так как дела с ними раньше не имел, а на изучение нет времени.

Буду очень рад любому совету!
Go to the top of the page
 
+Quote Post
Stas
сообщение Jul 6 2008, 02:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751



Я делал в ПЛИС блок из 3 и 2 энкодеров. Был случай сигнал дребезжал - проявилялось как набор координаты от вибрации - сделал логическую обработку сигнала энкодера в ПЛИС. А на процессоре такие штуки вряд ли можно делать... Видимо проще убить неделю и сделать энкодер с интерфейсом в простенькой ПЛИС типа MAX3000, MAXII или заказать на сторону wink.gif
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 6 2008, 03:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Pasha 111 @ Jul 6 2008, 02:30) *
Есть инкрементный энкодер (каналы А и Б). Делал проект для управления 2-мя двигателями на проце AT91SAM7S64 (ARM, 48 MHz). Прерывание ставил только на изменение канала А. В итоге проц мог обрабатывать 2 энкодера с общей частотой вызовов прерываний около 200 КГц. Реально частота при работе ниже, но в нормальном режиме загруженность проца доходила до 70% только при обратобке энкодеров.

Сейчас датчиков уже 4. Соответственно процессор уже не справится. Существуют ли аппаратные счётчики энкодеров в виде отдельного устройства, подключаемого к процу по последовательному нтерфейсу?

Искал решения на этом форуме - встречал темы, где частоты были менее 10 КГц, там всё решалось программно. Поставить ПЛИС или DSP (например от TI - TMS320F2801 - там встроенный аппаратный счётчик есть) не могу, так как дела с ними раньше не имел, а на изучение нет времени.

Буду очень рад любому совету!

А зачем вам аппаратные?Сделайте проект на нескольких процессорах.Проц на 1 или 2 датчика и по последовательным каналам к вашему основному процу smile.gif
Go to the top of the page
 
+Quote Post
slog
сообщение Jul 6 2008, 06:32
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Программная обработка энкодера годится если у процессора есть ресурсы чтобы обрабатывать примерно раз в 20 большие частоты чем частота при максимальной скорости вращения энкодера. Или если допустимы пропуски единичных импульсов. В остальных случаях квадратурный декодер и счётчик должен быт аппаратный. Есть варианты - в процессорах заточенных под электропривод он есть внутри. Есть и специальные микросхемы например у Agilent, но дорогие и не особо доступные. Или проще всего сделать это например на CPLD MAXII. Примеры квадратурных счётчиков есть например у Atmel и Xilinx. Это не сложная и очень полезная задача.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 6 2008, 06:47
Сообщение #5


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Евгений Германович @ Jul 6 2008, 07:54) *
А зачем вам аппаратные?Сделайте проект на нескольких процессорах.Проц на 1 или 2 датчика и по последовательным каналам к вашему основному процу smile.gif

ну да... на каждый энкодер по простенькому контроллеру типа tiny (с дребезгом легко разберетесь) и последовательный канал (I2C) на основной процессор
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 6 2008, 09:19
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(stells @ Jul 6 2008, 09:47) *
ну да... на каждый энкодер по простенькому контроллеру типа tiny (с дребезгом легко разберетесь) и последовательный канал (I2C) на основной процессор

именно так
Go to the top of the page
 
+Quote Post
Axel
сообщение Jul 6 2008, 10:17
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(Pasha 111 @ Jul 6 2008, 03:30) *
Поставить ПЛИС или DSP (например от TI - TMS320F2801 - там встроенный аппаратный счётчик есть) не могу, так как дела с ними раньше не имел, а на изучение нет времени.

Буду очень рад любому совету!


Надежный вариант (ИМХО) - только аппаратный. Освоение работы с ПЛИС ("МАХ+" + изготовление байтбластера) - задача нескольких дней. А вообще ситуация до боли знакомая - я сам впервые приобщился к PLD в такой же ситуации с точно такой же задачей.
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 6 2008, 12:48
Сообщение #8


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Axel @ Jul 6 2008, 14:17) *
Надежный вариант (ИМХО) - только аппаратный. Освоение работы с ПЛИС ("МАХ+" + изготовление байтбластера) - задача нескольких дней. А вообще ситуация до боли знакомая - я сам впервые приобщился к PLD в такой же ситуации с точно такой же задачей.

это из каких соображений вы утверждаете, что надежный вариант только аппаратный? аппаратный вариант становится лучше только тогда, когда программному быстродействия не хвататет или жесткая синхронизация нужна... больше никаких плюсов нет...
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Jul 6 2008, 14:01
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Спасибо за ответы.

В общем, как я вижу, есть 2 варианта: либо ставить что-то вроде EPM3032A (PLD, 35 рублей), либо, например, ATMega48 (27 рублей). Последняя имеет частоту 20 МГц и все интерфейсы (uart, spi и т.д.).

А что с EPM3032A? Кто мне расскажет, что такое Usable Gates и Macrocells? smile.gif Я просто боюсь, что из-за ошибки готовое спаянное устройство не заработает (а вот с мегой-то всё ясно). И как, кстати, этот pld соединять с процессором? Сколько энкодеров потянет одна такая микросхема, если нужно обрабатывать каналы А и Б с частотой 100 КГц каждый? И потянет ли вообще?
Go to the top of the page
 
+Quote Post
Axel
сообщение Jul 6 2008, 15:00
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(stells @ Jul 6 2008, 16:48) *
это из каких соображений вы утверждаете, что надежный вариант только аппаратный? аппаратный вариант становится лучше только тогда, когда программному быстродействия не хвататет или жесткая синхронизация нужна... больше никаких плюсов нет...


Из тех соображений, что быстродействием можно гарантированно решить проблемы только на стендах. А в реальных механизмах - с вибрациями и неидеальными приводами, с программной реализацией проблемы гораздо вероятней.
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 6 2008, 15:15
Сообщение #11


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Axel @ Jul 6 2008, 19:00) *
Из тех соображений, что быстродействием можно гарантированно решить проблемы только на стендах. А в реальных механизмах - с вибрациями и неидеальными приводами, с программной реализацией проблемы гораздо вероятней.

это как? счетчик на ПЛИС в условиях вибраций надежнее программного? интересно...
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Jul 6 2008, 15:40
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



У меня (см. мой 1-й пост) всё вроде работало smile.gif может я конечно что-то не замечал, но ПИД регулятор замечательно работал и всё нормально двигалось, как и было задумано.

В конце концов, при частоте 100 КГц +/- пару тактов в подсчётах не принципиальны. БОльшую погрешность вносит то, что ШИМ имеет 2000 градаций "всего" при частоте 24 КГц smile.gif

Вспомнил, у меня по расчётамполучалось, что один такт энкодера - это где-то около 2 мкм =) хотя люфт можно было тактильно ощутить, если колёсико в руку взять и попробовать пошевелить...
Go to the top of the page
 
+Quote Post
Axel
сообщение Jul 6 2008, 17:11
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(stells @ Jul 6 2008, 19:15) *
это как? счетчик на ПЛИС в условиях вибраций надежнее программного? интересно...


Эти утверждения основаны на личном опыте - в далекие 90-е годы я сделал около десятка проектов с инкрементальными датчиками (20 MHz Microchip'ы тогда тоже были известны - и любимы).
Go to the top of the page
 
+Quote Post
slog
сообщение Jul 7 2008, 04:59
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Цитата(Pasha 111 @ Jul 6 2008, 18:01) *
В общем, как я вижу, есть 2 варианта: либо ставить что-то вроде EPM3032A (PLD, 35 рублей), либо, например, ATMega48 (27 рублей). Последняя имеет частоту 20 МГц и все интерфейсы (uart, spi и т.д.).

А что с EPM3032A? Кто мне расскажет, что такое Usable Gates и Macrocells? smile.gif Я просто боюсь, что из-за ошибки готовое спаянное устройство не заработает (а вот с мегой-то всё ясно). И как, кстати, этот pld соединять с процессором? Сколько энкодеров потянет одна такая микросхема, если нужно обрабатывать каналы А и Б с частотой 100 КГц каждый? И потянет ли вообще?


В EPM3032A всего 32 триггера, (это и есть Usable Gates и Macrocells). Если надо счётчик разрядов на 16 то уже не влезет. Я бы взял EPM240, это уже более современная вещь. В неё влезет примерно десяток полноценных декодеров со счётчиками, в зависимости от требуемой разрядности. С частотой проблем нет, ПЛИС работают и на сотнях мегагерц. К процу удобно подключить по SPI на максимальной скорости, хотя можно и 8-ми разрядную шину сделать. Я уже говорил где есть готовые примеры декодеров. Там все по настоящему, цифровой фильтр на входе, потом правильный декодер, который и пропущенные импульсы обнаруживает, далее реверсивный счётчик, дальше интерфейс к процу.

Аппаратное решение все таки единственный правильный способ, если недопустимы пропуски импульсов, как например в системах позиционирования.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Jul 7 2008, 06:28
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
это как? счетчик на ПЛИС в условиях вибраций надежнее программного? интересно...

У любого инкрементного преобразователя одна из характеристик - минимальное время между двумя ближайшими фронтами. И какие бы вибрации не были, это время не будет меньше! Макс. выходная частота может достигать нескольких МГц. Соотвественно, чтобы не было пропусков и насчётов, опрос должен производится как минимум с удвоенной частотой и поэтому использовать для этих целей контроллер без аппаратного модуля обработки квадратурных сигналов не совсем целесообразно! Кстати наиболее распространнёная ошибка - скорости небольшие, поэтому такой частоты быть не может. На самом деле может, если преобразователь остановится на границе дискреты, тогда любая вибрация, приведёт к "дребезгу".
Естественно всё это относится к магнитным и оптическим преобразователям, которые насколько я понял и использует Pasha 111
Есть ещё контактные датчики, которые ставят например в автомагнитолы, цифровые осцилографы и т.д. - это совсем другое дело, совсем другой дребезг и совсем другие частоты.

Цитата
всё нормально двигалось, как и было задумано.

Возможно, однако если вы делаете позиционную систему, как только вы поставите её на станок вам сразу выкатят притензии.

Цитата
хотя люфт можно было тактильно ощутить, если колёсико в руку взять и попробовать пошевелить...
Что это за колёсико? smile.gif

Может хоть тип своего датчика укажите для ясности?
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th June 2024 - 04:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.04472 секунд с 7
ELECTRONIX ©2004-2016