|
Обработчик сигнала от инкрементого энкодера |
|
|
|
Jul 6 2008, 10:17
|
Местный
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188
|
Цитата(Pasha 111 @ Jul 6 2008, 03:30) Поставить ПЛИС или DSP (например от TI - TMS320F2801 - там встроенный аппаратный счётчик есть) не могу, так как дела с ними раньше не имел, а на изучение нет времени.
Буду очень рад любому совету! Надежный вариант (ИМХО) - только аппаратный. Освоение работы с ПЛИС ("МАХ+" + изготовление байтбластера) - задача нескольких дней. А вообще ситуация до боли знакомая - я сам впервые приобщился к PLD в такой же ситуации с точно такой же задачей.
|
|
|
|
|
Jul 6 2008, 14:01
|
Частый гость
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515
|
Спасибо за ответы. В общем, как я вижу, есть 2 варианта: либо ставить что-то вроде EPM3032A (PLD, 35 рублей), либо, например, ATMega48 (27 рублей). Последняя имеет частоту 20 МГц и все интерфейсы (uart, spi и т.д.). А что с EPM3032A? Кто мне расскажет, что такое Usable Gates и Macrocells? Я просто боюсь, что из-за ошибки готовое спаянное устройство не заработает (а вот с мегой-то всё ясно). И как, кстати, этот pld соединять с процессором? Сколько энкодеров потянет одна такая микросхема, если нужно обрабатывать каналы А и Б с частотой 100 КГц каждый? И потянет ли вообще?
|
|
|
|
|
Jul 6 2008, 15:00
|
Местный
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188
|
Цитата(stells @ Jul 6 2008, 16:48) это из каких соображений вы утверждаете, что надежный вариант только аппаратный? аппаратный вариант становится лучше только тогда, когда программному быстродействия не хвататет или жесткая синхронизация нужна... больше никаких плюсов нет... Из тех соображений, что быстродействием можно гарантированно решить проблемы только на стендах. А в реальных механизмах - с вибрациями и неидеальными приводами, с программной реализацией проблемы гораздо вероятней.
|
|
|
|
|
Jul 6 2008, 15:40
|
Частый гость
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515
|
У меня (см. мой 1-й пост) всё вроде работало может я конечно что-то не замечал, но ПИД регулятор замечательно работал и всё нормально двигалось, как и было задумано. В конце концов, при частоте 100 КГц +/- пару тактов в подсчётах не принципиальны. БОльшую погрешность вносит то, что ШИМ имеет 2000 градаций "всего" при частоте 24 КГц Вспомнил, у меня по расчётамполучалось, что один такт энкодера - это где-то около 2 мкм =) хотя люфт можно было тактильно ощутить, если колёсико в руку взять и попробовать пошевелить...
|
|
|
|
|
Jul 6 2008, 17:11
|
Местный
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188
|
Цитата(stells @ Jul 6 2008, 19:15) это как? счетчик на ПЛИС в условиях вибраций надежнее программного? интересно... Эти утверждения основаны на личном опыте - в далекие 90-е годы я сделал около десятка проектов с инкрементальными датчиками (20 MHz Microchip'ы тогда тоже были известны - и любимы).
|
|
|
|
|
Jul 7 2008, 04:59
|
Знающий
Группа: Свой
Сообщений: 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? Я просто боюсь, что из-за ошибки готовое спаянное устройство не заработает (а вот с мегой-то всё ясно). И как, кстати, этот pld соединять с процессором? Сколько энкодеров потянет одна такая микросхема, если нужно обрабатывать каналы А и Б с частотой 100 КГц каждый? И потянет ли вообще? В EPM3032A всего 32 триггера, (это и есть Usable Gates и Macrocells). Если надо счётчик разрядов на 16 то уже не влезет. Я бы взял EPM240, это уже более современная вещь. В неё влезет примерно десяток полноценных декодеров со счётчиками, в зависимости от требуемой разрядности. С частотой проблем нет, ПЛИС работают и на сотнях мегагерц. К процу удобно подключить по SPI на максимальной скорости, хотя можно и 8-ми разрядную шину сделать. Я уже говорил где есть готовые примеры декодеров. Там все по настоящему, цифровой фильтр на входе, потом правильный декодер, который и пропущенные импульсы обнаруживает, далее реверсивный счётчик, дальше интерфейс к процу. Аппаратное решение все таки единственный правильный способ, если недопустимы пропуски импульсов, как например в системах позиционирования.
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Jul 7 2008, 06:28
|
Местный
Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031
|
Цитата это как? счетчик на ПЛИС в условиях вибраций надежнее программного? интересно... У любого инкрементного преобразователя одна из характеристик - минимальное время между двумя ближайшими фронтами. И какие бы вибрации не были, это время не будет меньше! Макс. выходная частота может достигать нескольких МГц. Соотвественно, чтобы не было пропусков и насчётов, опрос должен производится как минимум с удвоенной частотой и поэтому использовать для этих целей контроллер без аппаратного модуля обработки квадратурных сигналов не совсем целесообразно! Кстати наиболее распространнёная ошибка - скорости небольшие, поэтому такой частоты быть не может. На самом деле может, если преобразователь остановится на границе дискреты, тогда любая вибрация, приведёт к "дребезгу". Естественно всё это относится к магнитным и оптическим преобразователям, которые насколько я понял и использует Pasha 111Есть ещё контактные датчики, которые ставят например в автомагнитолы, цифровые осцилографы и т.д. - это совсем другое дело, совсем другой дребезг и совсем другие частоты. Цитата всё нормально двигалось, как и было задумано. Возможно, однако если вы делаете позиционную систему, как только вы поставите её на станок вам сразу выкатят притензии. Цитата хотя люфт можно было тактильно ощутить, если колёсико в руку взять и попробовать пошевелить... Что это за колёсико? Может хоть тип своего датчика укажите для ясности?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|