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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> ENCODER, Помогите начинающему!
haker_fox
сообщение Aug 1 2009, 11:11
Сообщение #16


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

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



Цитата(muravei @ Aug 1 2009, 15:31) *
А какие у вас номиналы, ну или пост. времени.
Я попробовал, что-то у меня дребезг не давит, а импульсы , при быстрм вращении валятся в половину.

При быстром вращении длина импульса становится настолько мала, что RC-цепочка "давит" амплитуду импульсов. Вот и получается пропуск. RC-цепочка хороша для механических энкодеров, предназначенных для управления приборами. Там частота вращения ротора низка, а длительность импульсов при вращении много больше длительности импульсов дребезга. И при расчете постоянной времени не возникает проблем. Тогда RC-цепь эффективна. В остальных случаях спасает поллинг. По-крайней мере я пришел к такому выводу.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 1 2009, 20:33
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(muravei @ Aug 1 2009, 10:31) *
А какие у вас номиналы, ну или пост. времени.
Я попробовал, что-то у меня дребезг не давит, а импульсы , при быстрм вращении валятся в половину.

Ничего удивительного - бороться с дребезгом механических энкодеров RC-цепочками это идиотизм. С бубном вокруг поплясать - и то больше толку. Надо сделать автомат состояний, забирая выборки либо по прерываниям (от обоих каналов энкодера), либо поллингом с достаточно высокой частотой. Дальше все просто, имеем два значения в текущий момент и два те же самые, но на предыдущей выборке. Всего 16 комбинаций. Их декодируем в три варианта - счетчик в "+", в "-" либо ничего не делать. Для большинства энкодеров один щелчок - сдвиг счетчика на 4 либо на 2 (реже). Выборку обработали, сдвинули "историю" и так дальше. Я использовал выборку 4 kHz, энкодер PEC16. Ошибка на шаг при резких рывках вперед-назад - событие редчайшее, при вращении в одну сторону вообще никаких проблем.
Go to the top of the page
 
+Quote Post
muravei
сообщение Aug 5 2009, 07:50
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(rx3apf @ Aug 2 2009, 00:33) *
Дальше все просто, имеем два значения в текущий момент и два те же самые, но на предыдущей выборке. Всего 16 комбинаций. Их декодируем в три варианта - счетчик в "+", в "-" либо ничего не делать. Для большинства энкодеров один щелчок - сдвиг счетчика на 4 либо на 2 (реже). Выборку обработали, сдвинули "историю" и так дальше. Я использовал выборку 4 kHz, энкодер PEC16. Ошибка на шаг при резких рывках вперед-назад - событие редчайшее, при вращении в одну сторону вообще никаких проблем.

Энкодер такой .
У Чана тоже самое:
Код
volatile struct {
    long position;  
    int moved;      
} Encoder;


void sample_encoder(void)
{
    static const int dir[] = { 0,1,-1,0,-1,0,0,1,1,0,0,-1,0,-1,1,0 };
    static int i;                          
    int n;


    i = (i << 2) + (PA.PIN.BYTE & 3);  
    n = dir[i & 15];                  
    if (n) {                            
        Encoder.position += n;
        Encoder.moved = 1;
    }
}


Что-то написано про 1 кГц, я с такой частотой опрашивал его. Нифига не работает, скачет непредсказуемо.
Или надо эту функцию вызывать, получив стабильные данные?
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 5 2009, 09:48
Сообщение #19


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

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



rv3dll(lex), есть такой вариант, правда на verilog.
http://www.fpga4fun.com/SerialInterface4.html
После слов: «We filter the data, so that short spikes...»
Он интуитивно понятнее и существенно проще описан.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 10th July 2025 - 19:18
Рейтинг@Mail.ru


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