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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Обработка инкрементального энкодера
PhX
сообщение Nov 18 2008, 04:05
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(haker_fox @ Nov 18 2008, 07:27) *
Все понял! Спасибо за объяснение! Просто я хотел сказать, что мы не заметим промежуточных состояний энкодера: например, энкодер с 45 "лепестками" на диске, даст 45 импульсов на один оборот вала, а если отслеживать все изменения (изменение в каждой фазе), то получим 4 * 45 = 180 имп/оборот вала. Вот об этих "дополнительных" импульсах речь и шла.

Ну для данной задачи мне импульсов энкодера хватит вполне. А вообще в следующий раз буду выбирать МК с соответствующей переферией на борту.

p.s. Да, haker_fox, ваша схема также дает разрешение 1x. А зачем подтяжки 2.7К к шине питания?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Nov 18 2008, 04:22
Сообщение #17


чукчхэшаражогрмонтажник
*****

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



Цитата(PhX @ Nov 18 2008, 08:05) *
Ну для данной задачи мне импульсов энкодера хватит вполне. А вообще в следующий раз буду выбирать МК с соответствующей переферией на борту.

Если есть АЦП, и энкодер синуснокосинусный, можно обрабатывать сразу, без перехода к лог. уровням.
А энкодеры с импульным выходом содержат, как правило, схему обработки и учетверения.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 18 2008, 04:31
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(evgeny_ch @ Nov 18 2008, 08:22) *
Если есть АЦП, и энкодер синуснокосинусный, можно обрабатывать сразу, без перехода к лог. уровням.
А энкодеры с импульным выходом содержат, как правило, схему обработки и учетверения.

Евгений, простите, но я не понял, что Вы подразумеваете под "схемой обработки и учетверения". Вы имеете в виду преобразования синуса в прямоугольники?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Nov 18 2008, 04:52
Сообщение #19


чукчхэшаражогрмонтажник
*****

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



Цитата(PhX @ Nov 18 2008, 08:31) *
Евгений, простите, но я не понял, что Вы подразумеваете под "схемой обработки и учетверения". Вы имеете в виду преобразования синуса в прямоугольники?

Да, ещё есть довольно экзотические схемы, которые обрабатывают аналог, потом цифровые фронты и "0" метку. Дробят период на 2N. Раньше они назывались интерполяторы или похоже.
Исходный сигнал энкодера (от фотоприёмников) аналоговый.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 18 2008, 05:11
Сообщение #20


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(evgeny_ch @ Nov 18 2008, 10:22) *
Если есть АЦП, и энкодер синуснокосинусный, можно обрабатывать сразу, без перехода к лог. уровням.

Только (на сегодняшний день) лучше это не возлагать на МК (даже если он мощный), поручить более специальным микрухам.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 18 2008, 08:45
Сообщение #21


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 18 2008, 12:05) *
p.s. Да, haker_fox, ваша схема также дает разрешение 1x.

Да, это так. Но на МК поступает частота в 4 раза меньшая, чем мы снимаем с любой фазы энкодера. В моем случае это было довольно существенно.
Цитата(PhX @ Nov 18 2008, 12:05) *
А зачем подтяжки 2.7К к шине питания?

Ну, наверно, это уже "классика", чтобы входы логики не болтались в воздухе smile.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 18 2008, 11:10
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Вот еще вариант программной реализации. Код вызывается по таймеру с частотой такой, чтобы каждое состояние энкодера было хотя бы один раз прочитано. В данном случае каналы A и B считываются с младших разрядов порта E.
if((PINE & 0x3) != position)
{ // перемещение ручки
position = PINE & 0x3;
p = PINE & 0x3;
switch(StL)
{
case 0x0: if(p == 0x1) {StL = 0x1;}
else if(p == 0x2) StL = 0x12;
break;
case 0x1: if(p == 0x3) {pntL++; StL = 0x3;}
else if(p == 0x0) StL = 0x10;
break;
case 0x2: if(p == 0x0) {pntL++; StL = 0x0;}
else if(p == 0x3) StL = 0x13;
break;
case 0x3: if(p == 0x2) {StL = 0x2;}
else if(p == 0x1) StL = 0x11;
break;
case 0x10: if(p == 0x2) {StL = 0x12;}
else if(p == 0x1) StL = 0x1;
break;
case 0x11: if(p == 0x0) {pntL--; StL = 0x10;}
else if(p == 0x3) StL = 0x3;
break;
case 0x12: if(p == 0x3) {pntL--; StL = 0x13;}
else if(p == 0x0) StL = 0x0;
break;
case 0x13: if(p == 0x1) {StL = 0x11;}
else if(p == 0x2) StL = 0x2;
break;
default: StL = p;
}
}
Go to the top of the page
 
+Quote Post
dpss
сообщение Nov 18 2008, 17:04
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 19-04-08
Из: Москва
Пользователь №: 36 913



Цитата(dxp @ Nov 18 2008, 08:11) *
Только (на сегодняшний день) лучше это не возлагать на МК (даже если он мощный), поручить более специальным микрухам.

у таких микрух есть ограничение по максимальной частоте выхода 500 - 1000 килогерц. Для энкодеров с большим разрешением будет заметное ограничение по максимальной скорости вращения. Например для 50000 импульсов на оборот скорость меньше 10 оборотов в секунду.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 19 2008, 03:22
Сообщение #24


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(dpss @ Nov 19 2008, 01:04) *
у таких микрух есть ограничение по максимальной частоте выхода 500 - 1000 килогерц. Для энкодеров с большим разрешением будет заметное ограничение по максимальной скорости вращения. Например для 50000 импульсов на оборот скорость меньше 10 оборотов в секунду.

ИМХО, это также относится и к предыдущему посту: поллить энкодеры "высокочастотные" энкодеры не есть лучшее занятие, хотя, может быть я и ошибаюсь. Интересно, как в этом случае поведет себя связка ПЛИС + МК? Просто в некотором будущем, возможно, предстоит работать с такими энкодерами. Управлять придется 6 двигателями, на каждом энкодер, ориентировочно 1000 им / об.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Nov 19 2008, 04:03
Сообщение #25


чукчхэшаражогрмонтажник
*****

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



Цитата
Any sin/cos-encoder, with analog output signals as shown in Figure 1, can be interfaced
to the TMS320F240 DSP controller as shown in Figure 5. Note that the components and
values used are applicable to an incremental encoder with a line count N = 2048 and a
maximum speed of 12000 rpm, hence the maximum frequency is fA,B,max = 410 kHz. The
main aspects of the circuit are discussed below.
TMS320F240 DSP-Solution for High Resolution Position with Sin/Cos Encoders.
Материал десятилетней давности. biggrin.gif

Сообщение отредактировал evgeny_ch - Nov 19 2008, 04:07


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 19 2008, 04:11
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Добавление НЧ фильтра не помогло. Хотя прямоугольники бегущие с энкодера сгладились по краям ошибка все равно оказывается такой же большой. 07.gif
Подал на двигатель импульсы высокой частоты (2кГц), при этом двигатель жужал, но не вращался. В одном случае переменная pulses иногда оставалость постоянной, а иногда начинала быстро убывать или нарастать.
Такое ощущение, что МК не успевает считать. Надо бы посмотреть продолжительность обработчика прерывания...
Код:
Прикрепленные файлы
Прикрепленный файл  main.rar ( 1.34 килобайт ) Кол-во скачиваний: 60
 


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Nov 19 2008, 08:18
Сообщение #27


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(PhX @ Nov 17 2008, 12:15) *
Мат. часть: Вал шагового двигателя соединен с оптическим инкрементальным энкодером посредством эластичной трубки. Двигатель работает на холостом ходусо скоростью 2 об/мин.
Энкодер обрабатывается atmegoй следующим образом:
Сигнал с канала A вызывает прерывание INT1. В зависимости от сигнала на ножке PC1 инкрементируется или декрементируется переменная pulses
Точность ужасная. Погрешность видимо связана с высокочастотным дребезгом вала при завершении шага. Кто что может посоветывать по этому поводу?

У вас ошибка в алгоритме. При наличии импульсов только в канале А (Вибрация на границе сектора) и стабильного уровня на канале В будет счет в одном направлении.
Я, в свое время, Использовал прерывания по обоим фронтам канала А, А лучше по всем четырем Фронтам каналов и А и В одновременно повышается в четыре раза дскретность датчика.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 19 2008, 09:05
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(MaslovVG @ Nov 19 2008, 12:18) *
У вас ошибка в алгоритме. При наличии импульсов только в канале А (Вибрация на границе сектора) и стабильного уровня на канале В будет счет в одном направлении.
Я, в свое время, Использовал прерывания по обоим фронтам канала А, А лучше по всем четырем Фронтам каналов и А и В одновременно повышается в четыре раза дскретность датчика.

Вот СПАСИБО!!!! a14.gif beer.gif
Как я сам не допер.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 19 2008, 09:13
Сообщение #29


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 19 2008, 17:05) *
Вот СПАСИБО!!!! a14.gif beer.gif
Как я сам не допер.

Да уж) Значит все таки интуитивно мой совет был верным: нужно отслеживать все четыре состояния энкодера))))
Поздравляю с победой!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 19 2008, 09:49
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(haker_fox @ Nov 19 2008, 13:13) *
Да уж) Значит все таки интуитивно мой совет был верным: нужно отслеживать все четыре состояния энкодера))))
Поздравляю с победой!

И Вам СПАСИБО! И вообще Всем СПАСИБО!!!


--------------------
Если все, то не я...
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 Текстовая версия Сейчас: 17th June 2025 - 17:24
Рейтинг@Mail.ru


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