|
Обработчик сигнала от инкрементого энкодера |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
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Есть ещё контактные датчики, которые ставят например в автомагнитолы, цифровые осцилографы и т.д. - это совсем другое дело, совсем другой дребезг и совсем другие частоты. Цитата всё нормально двигалось, как и было задумано. Возможно, однако если вы делаете позиционную систему, как только вы поставите её на станок вам сразу выкатят притензии. Цитата хотя люфт можно было тактильно ощутить, если колёсико в руку взять и попробовать пошевелить... Что это за колёсико? Может хоть тип своего датчика укажите для ясности?
|
|
|
|
|
Jul 7 2008, 07:40
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(stells @ Jul 7 2008, 10:32)  1.если преобразователь остановится на границе дискреты, то и цифровой фильтр не поможет - частота дребезга будет определяться частотой вибрации... и какая она будет? 2.энкодер наверняка не контактный, контактный на 100кГц в принципе работать не должен 3.для подавления дребезга любого контактора нужно знать параметры этого дребезга, а если они известны, то неважно, как вы сделаете эту фильтрацию, программно или аппаратно В энкодерах имеется несимметрия каналов. Аппаратные счётчики работают по фронтам импульсов и могут быть с достаточной точностью привязаны к синхрочастоте. В случае "интерполяции" сигнала энкодера "дребезжит" направление, что очень хорошо заводит привод, а это добавляет "вибраций".
Сообщение отредактировал evgeny_ch - Jul 7 2008, 07:46
--------------------
Quo vadis?
|
|
|
|
|
Jul 7 2008, 08:24
|

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

|
Цитата(evgeny_ch @ Jul 7 2008, 12:06)  В случае фильтрации вы потеряете в быстродействии. Привод будет перемещаться очень торжественно. Можно сказать как в трауре. вот те раз! интересно, как он у него сейчас вообще работает? о программной фильтрации речь не идет, я имею ввиду обычный метод подавления дребезга, в том числе и дребезга направления... а вот аппаратное решение как раз и может привести к тому, что привод "заведется" при дребезге направления... в общем, мне почему-то кажется, что проблем только автор наживет, если посмотрит в сторону применения ПЛИС... я не говорю о том, что это вообще неправильно, но проблем будет гораздо больше... а при применении контроллеров (скорее всего не одного, а по одному на каждый энкодер, зато простому) все понятно, прогнозируемо и поддается оперативному изменению в процессе отладки
|
|
|
|
|
Jul 7 2008, 08:27
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(stells @ Jul 7 2008, 11:24)  вот те раз! интересно, как он у него сейчас вообще работает? о программной фильтрации речь не идет, я имею ввиду обычный метод подавления дребезга, в том числе и дребезга направления... а вот аппаратное решение как раз и может привести к тому, что привод "заведется" при дребезге направления... в общем, мне почему-то кажется, что проблем только автор наживет, если посмотрит в сторону применения ПЛИС... я не говорю о том, что это вообще неправильно, но проблем будет гораздо больше... а при применении контроллеров (скорее всего не одного, а по одному на каждый энкодер, зато простому) все понятно, прогнозируемо и поддается оперативному изменению в процессе отладки Согласен, если частота дискретизации на порядок выше частоты следования импульсов энкодера.
Сообщение отредактировал evgeny_ch - Jul 7 2008, 08:27
--------------------
Quo vadis?
|
|
|
|
|
Jul 7 2008, 09:49
|
Местный
  
Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031

|
Цитата 1.если преобразователь остановится на границе дискреты, то и цифровой фильтр не поможет - частота дребезга будет определяться частотой вибрации... и какая она будет? Я же писал уже. Частота будет не более той, которая указана в параметре преобразователя. При опросе квадратурных сигналов с частотой хотя бы в два раза меньше погрешность считанной с преобразователя информации станет +- [фиг знает сколько]  . Цитата для подавления дребезга любого контактора нужно знать параметры этого дребезга, а если они известны, то неважно, как вы сделаете эту фильтрацию, программно или аппаратно Правильно, но в оптических и магнитных преобразователя нет дребезга, подобного механическому! Цитата 32-BIT QUADRATURE COUNTER WITH SERIAL INTERFACE Оно как бы есть, но его как бы нет  То бишь купить эту цацу затруднительно + на неё ещё clk надо заводить, а если их 4 штуки ставить, то и места они займут нормально + ценник на них чувствую будет неадекватен. Кстати можно взять преобразователь с SSI, тогда все проблемы самоустронятся.
|
|
|
|
|
Jul 7 2008, 10:16
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Sam_ @ Jul 7 2008, 12:49)  ... Оно как бы есть, но его как бы нет  То бишь купить эту цацу затруднительно + на неё ещё clk надо заводить, а если их 4 штуки ставить, то и места они займут нормально + ценник на них чувствую будет неадекватен. Кстати можно взять преобразователь с SSI, тогда все проблемы самоустронятся. В Петербурге СКБ ИС работает с такого типа схемами, (как правильно заметили, заказные) если хорошо попросить, то возможно дадут.
Сообщение отредактировал evgeny_ch - Jul 7 2008, 10:17
--------------------
Quo vadis?
|
|
|
|
|
Jul 7 2008, 15:25
|

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

|
Цитата(evgeny_ch @ Jul 7 2008, 13:46)  А теперь представьте, что ваш электродвигатель работает в режиме автокоммутации от энкодера, т. е. любое запаздывание коммутации ведет в потере момента, и как следствие, к потере синхронизации на больших частотах. Вы хотите сказать, что тут все в реальном времени работает? и нет никакой инерционности? это что же за двигатель и привод такой? как знаете... на мой взгляд красивое было бы решение: 4 отдельные платки драйверов энкодеров с контроллерами (8 пинов хватит, tiny25), изолированными источниками питания для каждого энкодера (механизм все-таки), опторазвязками сигналов от него и интерфейсом I2C на плату центрального процессора. завтра заказчик, как та старуха в золотой рыбке, скажет, что хочет не 4 канала, а 8 - пожалуйста! добавит автор еще 4 драйвера и не будет опять мучиться в поисках схемотехнического решения
Сообщение отредактировал stells - Jul 7 2008, 16:00
|
|
|
|
|
Jul 8 2008, 05:42
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(stells @ Jul 7 2008, 18:25)  Вы хотите сказать, что тут все в реальном времени работает? и нет никакой инерционности? это что же за двигатель и привод такой? как знаете... на мой взгляд красивое было бы решение: 4 отдельные платки драйверов энкодеров с контроллерами (8 пинов хватит, tiny25), изолированными источниками питания для каждого энкодера (механизм все-таки), опторазвязками сигналов от него и интерфейсом I2C на плату центрального процессора. завтра заказчик, как та старуха в золотой рыбке, скажет, что хочет не 4 канала, а 8 - пожалуйста! добавит автор еще 4 драйвера и не будет опять мучиться в поисках схемотехнического решения Реальный привод - ЛШД, Тстатора=0,64 мм (512 микрошагов на период) , Тэнкодера=10мкм, V=1м/сек. Частота следования импульсов коммутации 800кГц.
--------------------
Quo vadis?
|
|
|
|
|
Jul 8 2008, 09:41
|

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

|
Цитата(evgeny_ch @ Jul 8 2008, 09:42)  Реальный привод - ЛШД, Тстатора=0,64 мм (512 микрошагов на период) , Тэнкодера=10мкм, V=1м/сек. Частота следования импульсов коммутации 800кГц. ну так ведь не всегда такие привода используются... у нас, например, в лебедках каротажных станций(для проведения скважинных исследований) стоит "нормальный" синхронный 3-фазный двигатель, энкодер с частотой следования 250 импульсов на оборот (в секунду) и т.д. так какой привод "реальный"? ни о чем говорим... принимать решение автору топика
|
|
|
|
|
Jul 8 2008, 17:38
|

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

|
slogСпасибо за разъяснение, пойду читать литературу по плисам... EPM240 (QFP 100 который) стоит как 4 авр-ки кстати  ... _Sam_Цитата Возможно, однако если вы делаете позиционную систему, как только вы поставите её на станок вам сразу выкатят притензии. Нет, режущим инструментом станка никто не двигает  Цитата Что это за колёсико? Это колёсико одной из частей мобильного робота  Точность тут до 1 мм только нужна, а при большом коэффициенте редукции этот 1мм выливается в несколько сотен тактов энкодера. В задаче с 2-мя двигателями использовались магнитные энкодеры, встроенные в двигатель Faulhaber (не помню точно модель). Сейчас скорее всего будут оптические энкодеры от bourns (или другие отические/магнитные). Частота импульсов зависит от выбранного редуктора и максимальной скорости. В принципе, для текущей задачи хватит и порядка 10000 тактов энкодера/с, но хочется сделать с запасом... evgeny_chЦитата 32-BIT QUADRATURE COUNTER WITH SERIAL INTERFACE В условия нехватки времени для меня - идеальный вариант, но вот нигде не продаётся. Нашёл ещё один вариант - HCTL-2020 от HP, но в продаже также нет... Цитата Привод будет перемещаться очень торжественно. Можно сказать как в трауре. Ну П, И, Д и апериодические звенья ещё никто не отменял  при частоте работы регулятора порядка 1 КГц, задержка будет измеряться в мс, что может быть даже меньше, чем, скажем, механическая постоянная, связанная в моментом инерции механизма. Ох... даже не знаю как делать. Почитаю литературу про ПЛИСы, но думаю, что всё-таки склонюсь в сторону 4-х авр-ок, задачка с плисом на порядок сложнее для меня получается.
|
|
|
|
|
Jul 8 2008, 19:16
|
Местный
  
Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031

|
Цитата Это колёсико одной из частей мобильного робота Точность тут до 1 мм только нужна, а при большом коэффициенте редукции этот 1мм выливается в несколько сотен тактов энкодера. А, ну тогда всё понятно  Всё же вы упустили ещё один вариант. Взять датчики с SSI интерфейсом, тем более, что всё равно менять собираетесь. В этом случае масштабируемость - количество драйверов RS422 ну и конечно свободных ножек микроконтроллера! Опрос всех датчиков можно будет производить синхронно, подавая ssi_clk одновременно на все датчики и, считывая ssi_data с одного или нескольких портов. 8-битного порта хватит для опроса 7 датчиков:1(ssi_clk) + 7(ssi_data). Если расстояния небольшие, то можно и без RS422 драйверов обойтись! Например: 8мм магнитный датчик.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|