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

 
 
> Вопросы по схеме энкодера
Папа Карло
сообщение Nov 28 2008, 20:29
Сообщение #1


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

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Всем привет.

Есть двигатель коллекторный с редуктором.
После редуктора хочу поставить энкодер.
У энкодера 80 тиков за оборот.
Двигатель крутится не быстрее 60 об\мин.

МК LPC2134 будет программно обрабатывать энкодер.

Алгоритм такой:
таймер настроен на прерывание с частотой 2кГц
каждое прерывание смотрим состояние на выходе энкодера
если есть изменение состояние, то записываем "тик" в переменную
Через 50 прерываний таймера вычисляем скорость движения
по формуле sp = 0x80 - ( p - 5 )
где sp - скорость, 0x80 константа максимального кол-ва "тиков", 5 - константа минимальных "тиков"
p - сколько натикало за 50 прерываний.

Хотелось бы замечания по алгоритму или советы?
Ниже выкладываю схему энкодера.
Стоит ли ставить триггер ?
Подойдёт ли фильтр такой ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
evgeny_ch
сообщение Nov 28 2008, 20:53
Сообщение #2


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

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



Простенький алгоритм.
Optical Encoding.
Потом, возможно, вам захочется узнать скорость ДПТ. biggrin.gif
Single Chip Velocity Measurement System for Incremental Optical Encoders.
Для полноценного управления нужно ещё и значение тока мерять.
? biggrin.gif


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
Adviser
сообщение Nov 28 2008, 21:01
Сообщение #3


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

Группа: Новичок
Сообщений: 84
Регистрация: 22-09-05
Пользователь №: 8 854



Цитата(evgeny_ch @ Nov 28 2008, 23:53) *
Потом, возможно, вам захочется узнать скорость ДПТ. biggrin.gif

+1

Обычное место энкодера - это вал двигателя. На валу редуктора - это как-то экзотично.

Тема кстати не так давно обсуждалась:
Тема

Сообщение отредактировал Adviser - Nov 28 2008, 21:18
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Nov 29 2008, 16:27
Сообщение #4


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

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



evgeny_ch
Мне простенький алгоритм, который считает импульсы с энкодера не нужен.
Увеличивать константу или уменьшать я в состоянии сделать.

Мне нужен регулятор скорости из моего оборудования.
А это энкодер показанный на схеме с 1 каналом, который выдаёт импульсы.
Завести на прерывание я не могу сигнал с энкодера, поэтому обрабатываю программно состояния.

Во второй вашей ссылки я ничего не понял...
Датчик тока есть, но он очень разные значения выдаёт и даже усреднённое значение из 4 выборок
очень сильно плавает.

Adviser
В двигателе, увы, нету датчика, а врезать на соплях в двигатель свой энкодер я несмог...
К тому же мне советовали, как раз, ставить на вал после редуктора знающие люди, а любители
ставили в двигатель датчик холла или вырезали в корпусе дырки и там ставили оптический энкодер.

Темы я прочитал все по энкодерам и ПИДам, но сделать свой у меня хорошо не выходит.

Хотелось бы совет по алгоритму регулятора скорости?!
И стоит ли ставить триггер Шмидта, если я буду программно вносить задержки для устранения дребезга?
Сможет ли мне помочь от устранения дребезга фильтр с заданными параметрами ?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 29 2008, 16:42
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Папа Карло @ Nov 29 2008, 19:27) *
evgeny_ch

Датчик тока есть, но он очень разные значения выдаёт и даже усреднённое значение из 4 выборок
очень сильно плавает.


Хотелось бы совет по алгоритму регулятора скорости?!

В двигателе у Вас щетки... коммутируют... обмотки разные... Надо немного фильтровать, но это, понятное дело, внесет задержку... Ток пропорционален моменту - производной от скорости...Если проинтегрировать..., я уже это недавно писала тут где-то... Заводите на второй вход интегратора сигнал от системы управления (ПИД или что Вам больше нравится) - получится управление по скорости. Выход интегратора включает-выключает....
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Nov 29 2008, 16:52
Сообщение #6


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

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



Цитата(Папа Карло @ Nov 29 2008, 20:27) *
evgeny_ch
...

По случаю выходного можно посмотреть похожую ветку. В понедельник продолжим, м. б. завтра.
Извините. smile.gif


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Dec 2 2008, 17:27
Сообщение #7


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

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Сделал схему и написал обработчик вот такой:
Код
struct motorstatus
    {
    unsigned int oc;//счётчик тиков обратной связи
    char ocs;//состояние датчика
    char speedcur;//текущая скорость мотора
    char speed;//
    char flag;//
    char dir;//
    volatile unsigned long *reg;//
    };

__irq void T0_Isr( void )
{

if( motstat[ 1 ].oc < 255 ) motstat[ 1 ].oc ++;//считает тики
//motstat[ 1 ].oc ++;
    //ÎÑ2
    if( ( IOPIN0 & 0x100000 ) && !motstat[ 1 ].ocs )//при изменении состояния запишем скорость
        {
        if( motstat[ 1 ].oc > 5 ) motstat[ 1 ].speedcur = 255 - ( motstat[ 1 ].oc );
//        motstat[ 1 ].speedcur = ( motstat[ 1 ].oc >> 1 );
        motstat[ 1 ].oc = 0;
//        motstat[ 1 ].oc ++;
        motstat[ 1 ].ocs = 1;
        }
    else
        if( !( IOPIN0 & 0x100000 ) && motstat[ 1 ].ocs )
            {
//            motstat[ 1 ].speedcur = ( motstat[ 1 ].oc );
//            motstat[ 1 ].oc = 0;
//            motstat[ 1 ].oc ++;
            motstat[ 1 ].ocs = 0;
            }
}


Прерывание вызывается с частотой 6кГц.
Но при медленном вращении двигателя, например при минимальном вращении, скорость выдаёт от 0 до 20.
Если увеличить мощность, то скорость начинает стабилизироваться и уже не бегает так сильно.
Как бы мне получить стабильные значения или тут уже сам двигатель с редуктором подёргивается ?

В прерывании я написал возможность считать скорость по обеим фронтам, но результат оказался нестабильным значения бегали прилично даже при подачи нормальной мощности.
Из за чего это могло быть вызвано ?


Вот картинка диска энкодера, который я разместил на валу редуктора.
Он работает на отражение.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Adviser
сообщение Dec 2 2008, 17:50
Сообщение #8


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

Группа: Новичок
Сообщений: 84
Регистрация: 22-09-05
Пользователь №: 8 854



Цитата(Папа Карло @ Dec 2 2008, 20:27) *
Вот картинка диска энкодера, который я разместил на валу редуктора.
Он работает на отражение.


Тут вот есть вариант прикручивания самопального энкодера к валу двигателя.

Самодельный энкодер

Там (судя по картинкам) диск просто приклеивают к валу. Хороший клей сейчас можно подобрать.

Хорошо ли ставить энкодер после редуктора - не знаю. Всегда видел их на валу двигателя. Видимо надо более подробно посмотреть на это дело с точки зрения механики - как в этом случае изменится инерционная составляющая системы и хорошо ли это с т. зрения алгоритма управления.

Сообщение отредактировал Adviser - Dec 2 2008, 17:53
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Dec 2 2008, 18:44
Сообщение #9


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

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Вопрос не в том, как изготовить, а как получить результат...
Энкодер я уже сделал давно, сейчас в схему ввёл фильтр НЧ и триггер Шмидта.
И написал обработчик, но на низких скоростях очень нестабильная скорость.

На самой маленькой скорости программа выдаёт показания от 0 до 20.
И соответственно, при стабилизации скорости будут рывки, т.к. программа будет пытаться стабилизировать вращения. а оно хаотично бегает...
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Dec 3 2008, 13:40
Сообщение #10


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

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Может я что то спросил не то ?
Или просто никто не делал похожее ?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 3 2008, 14:00
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Папа Карло @ Dec 3 2008, 16:40) *
Может я что то спросил не то ?
Или просто никто не делал похожее ?

Похоже, что так...
Похоже, Вы не думали, что нестабильность трения при малых скоростях проявляется в нестабильности скорости вращения...
Go to the top of the page
 
+Quote Post
Adviser
сообщение Dec 3 2008, 18:11
Сообщение #12


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

Группа: Новичок
Сообщений: 84
Регистрация: 22-09-05
Пользователь №: 8 854



Цитата(Tanya @ Dec 3 2008, 17:00) *
Похоже, Вы не думали, что нестабильность трения при малых скоростях проявляется в нестабильности скорости вращения...


Еще свою лепту в нестабильность внесут люфты редуктора, наверняка имеющие место. Собственно, одна из причин - почему энкодер предпочтительнее на валу двигателя.

Ну а регулятор - ИМХО кроме добросовестно исполненного ПИД-регулятора тут сложно что-то еще предложить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 21:06
Рейтинг@Mail.ru


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