Научная статья на тему 'УСТРОЙСТВО ВВОДА ИНФОРМАЦИИ НА БАЗЕ МЕХАНИЧЕСКОГО ИНКРЕМЕНТАЛЬНОГО ЭНКОДЕРА EC11'

УСТРОЙСТВО ВВОДА ИНФОРМАЦИИ НА БАЗЕ МЕХАНИЧЕСКОГО ИНКРЕМЕНТАЛЬНОГО ЭНКОДЕРА EC11 Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
214
30
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭНКОДЕР / ПОТЕНЦИОМЕТР / ПЕРЕМЕННЫЙ РЕЗИСТОР / ДРЕБЕЗГ КОНТАКТОВ / ПОДТЯГИВАЮЩИЙ РЕЗИСТОР / RC-ФИЛЬТР / МИКРОКОНТРОЛЛЕР / STM32

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Кондратьев Никита Олегович, Кузнецов Кирилл Андреевич, Трубин Виталий Геннадьевич

Рассматриваются основные вопросы, возникающие при работе с механическим энкодером на базе отладочной платы STM32VLDISCOVERY.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Кондратьев Никита Олегович, Кузнецов Кирилл Андреевич, Трубин Виталий Геннадьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «УСТРОЙСТВО ВВОДА ИНФОРМАЦИИ НА БАЗЕ МЕХАНИЧЕСКОГО ИНКРЕМЕНТАЛЬНОГО ЭНКОДЕРА EC11»

Устройство ввода информации на базе механического инкрементального энкодера

EC11

Н.О. Кондратьев, К.А. Кузнецов, В.Г. Трубин ФГБОУ ВПО НГТУ, Новосибирск, Россия

Аннотация: Рассматриваются основные вопросы, возникающие при работе с механическим энкодером на базе отладочной платы S TM32 VLDISCO VERY.

Ключевые слова: Энкодер, потенциометр, переменный резистор, дребезг контактов, подтягивающий резистор, RC-фильтр, микроконтроллер, STM32.

ВВЕДЕНИЕ

В цифровой технике часто бывает необходимо оперативно изменять некоторые значения переменных в системе. Это могут быть: изменение яркости свечения светодиода, изменение громкости динамика, мощности, увеличение/уменьшение скорости вращения и т. д. В большинстве случаев с такими задачами справляются потенциометры. Потенциометров существует огромное количество, с различным набором параметров под конкретные задачи. Но основной принцип работы потенциометра неизменен. У переменного резистора имеется 3 контакта: средний контакт соединен с кольцевым контактом внутри. А ручка регулировки просто передвигает перемычку, соединяющую графитовую дорожку и кольцевой контакт. При вращении ручки меняется длина дуги графитовой дорожки, которая в конечном итоге и определяет сопротивление переменного резистора.

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

1. ПРИНЦИП РАБОТЫ ЭНКОДЕРА

Энкодер (англ. encoder - кодировщик) -цифровой датчик угла поворота. Энкодеры бывают абсолютные и инкрементальные. И если абсолютные сразу выдают двоичный код угла поворота, то инкрементальные, выдают определённое количество импульсов на оборот, а так же указывают направление вращения. Также по принципу действия энкодеры принято разделять на оптические, резистивные, магнитные, индуктивные и механические.

В данной статье рассматривается инкрементальный механический энкодер ЕС11 оснащённый кнопкой, которую можно использовать, нажав на вал регулятора (Рис. 1).

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

Рис. 1. Энкодер

Энкодер ЕС11 имеет 5 выводов. Два вывода (фото слева) - выводы кнопки, три вывода (фото справа) - выводы энкодера. Из них - два сигнальных (А и В) и 1 общий (посредине). Схема подключения энкодера ничем не отличается от подключения обычных кнопок. Сигнальные выводы энкодера можно подключать к любому порту ввода-вывода микроконтроллера. Общий вывод энкодера подключается к «земле» или питанию.

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

поворот вправо

"1 п

поворот влево

Рис. 2. Сигналы на выходе энкодера

Остается только «научить» микроконтроллер эти сигналы обрабатывать. Например, если первым приходит импульс с выхода В (при вращении ручки вправо), необходимо инкрементировать счетчик. Если первым пришел импульс с выхода А (вращение вала влево), счетчик нужно декрементировать.

2. ВНУТРЕНЕЕ УСТРОЙСТВО ЭНКОДЕРА

Чтобы подробно разобраться в том, как на выходе получаются такие сигналы, разберем один энкодер на части.

Рис. 3. Составные части энкодера (последовательно)

Энкодер состоит из (слева направо) -основы, которая удерживает все части вместе; кнопки; диска с метками; вращающегося контактного диска; вала регулятора; гайки для фиксации.

Физические размеры энкодера:

• длина - 18 мм

• ширина - 12 мм

• высота - 25 мм

Конечно же, основной интерес представляет контактная часть, поэтому рассмотрим её поближе, см. Рис. 4.

Рис. 4. Механические контакты энкодера

При вращении ручки энкодера вращаются скользящие контакты сложной формы над тремя секторами, которые соединены с соответствующими выводами (сплошная дуга -средний вывод, и две прерывистые дуги - с двумя крайними выводами). Происходит замыкание среднего сектора на контактные площадки то левого, то правого вывода в нужной последовательности. Зная обе

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

Исследуемый энкодер £01 имеет 24 отсчёта, т. е. его выводы сменят состояние, а после вернутся к исходному, ровно 24 раза за один полный оборот ручки. Это значит, что за один щелчок ручка поворачивается на 15°.

Принцип работы кнопки на энкодере не отличается от работы обычной кнопки: цепь замыкается, пока есть давление на толкатель.

Рис. 6. Кнопка в разборе

Для надежной фиксации вращающегося контактного диска, на валу регулятора имеется фиксатор (представлен в виде медного крепления, Рис. 7). Для полноты картины на Рис. 8 изображена основа, которая скрепляет все части энкодера, в единое устройство.

Медное крепление

Рис. 7. Вал регулятора и гайка для крепления

Для удобной эксплуатации, на вал регулятора, возможно, установить ручку.

Рис. 9. Ручка для энкодера

3. ПОДКЛЮЧЕНИЕ ЭНКОДЕРА К МИКРОКОНТРОЛЛЕРУ STM32

Ознакомившись с принципом работы энкодера, можно понять, как программно отследить импульсы и направление вращения. Для обработки сигналов будем использовать отладочную плату STM32VLDISCOVERY на базе микроконтроллера STM32F100RBT6B. Для работы с энкодером задействуем таймер TIM3 в режиме чтения информации с энкодера.

Существует два способа подключения энкодера: подключение среднего вывода энкодера на «землю» или подключение к питанию +3.3 В (Рис. 10 и 11 соответственно).

Рис. 10. Схема подключения энкодера (общий вывод энкодера на «землю»)

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

Следующий немаловажный шаг - это подключение подтягивающих резисторов. Такие резисторы предназначены для того, чтобы гарантировать на логическом входе, с которым соединён проводник, высокий либо низкий уровень сигнала. А так же для предотвращения наводок в момент, когда проводник не соединён с логическими выходами.

Подтягивающие резисторы могут быть внешние или встроенные в микроконтроллер. В первом случае мы подключаем питание или землю через внешние резисторы к портам микроконтроллера, Рис. 10 и 11. Во втором случае, при инициализации портов микроконтроллера, подключаем внутренние подтягивающие резисторы.

Рис. 12. Схема подключения энкодера с внутренними подтягивающими резисторами

Допустимо применение обоих вариантов. Однако при использовании внутренних подтягивающих резисторов их сопротивление изменить нельзя. Значение сопротивления можно уточнить из документации на микроконтроллер [1].

Для используемого микроконтроллера это 40±10 кОм. В свою очередь номинал внешних подтягивающих резисторов, можно подбирать под конкретную задачу.

На этом физическое подключение энкодера завершено. Следующим шагом будет программная настройка портов

микроконтроллера.

Рис. 11. Схема подключения энкодера (общий вывод энкодера на «питание»)

Таблица 1.

Table 34. I/O static characteristics

Symbol Parameter Conditions Min Typ Max Unit

*PU Weak pull-up equivalent resistor*5' V|N - Vss 30 40 50 kii

rpd Weak pull-down equivalent resistor*5' V,n = Vdd 30 40 50 kil

//Зададим максимальное значение счётчика

#defme MaxEncoder 30

//Каналы 1 и 2 на вход с подтяжкой к питанию

GPIOInitTypeDefInitPORTA; InitPORTA. GPIO Pin = GPIO Pin 6 | GPIO_Pin_7;

InitPORTA. GPIOSpeed = GPIOSpeedlOMHz; InitPORTA. GPIOMode = GPIOModeIPU; GPIO_Init(GPIOA, &Init_PORTA);

Настройка таймера:

//Инициализация таймера

TIMTimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_T IM3, ENABLE);

TIM_TimeBaseStructure. TIMPeriod = (MaxEncoder << 1) - 1; TIM_TimeBaseStructure. TIMPrescaler = 0; //Prescaler обязательно должен быть 0! TIM_TimeBaseStructure. TIMClockDivision = 0; TIM_TimeBaseStructure. TIMCounterMode = TIM CounterMode Up | TIMCounterModeDown; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

//Считаем все переходы лог. уровней с обоих каналов

TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI1,TIM_ICPolarity_Rising, TIMICPolarityRising); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_Cmd(TIM3, ENABLE);

Обработка сигналов:

uint16_t CTEncoder = 0, CTEncoderOLD = 0; uint8_t i = 0;

//Энкодер выдает 2 импульса за шаг, поэтому делим на два с помощью сдвига

while (1) {

CT Encoder = TIM_GetCounter(TIM3) >> 1; if (CT Encoder != CT Encoder OLD) { i = CT Encoder % 2; if(i) GPIO SetBits(GPIOC, GPIO_Pin_8); else GPIO ResetBits(GPIOC, GPIO_Pin_8); CT Encoder OLD = CT Encoder;}

}

Для визуализации результата был использован светодиод на плате STM32VLDISCOVERY, который подключен к выводу PC8.

После инициализации портов и настройки таймера в счётном регистре TIM3->CNT будет содержаться количество подсчитанных импульсов при повороте ручки энкодера.

Если в микроконтроллере нет аппаратной подсистемы для работы с экнкодером, то алгоритм программной обработки сигналов можно посмотреть в [3].

4. ПОДАВЛЕНИЕ ДРЕБЕЗГА КОНТАКТОВ ЭНКОДЕРА

Дребезг контактов - явление, возникающее в электрических переключателях, а именно: формирование группы импульсов, вместо требуемого одиночного импульса. Это происходит из-за механической конструкции контактов, которая не позволяет надежно за короткое время зафиксировать контакт. Это явление принято считать негативным, т. к. оно может привести к многократному срабатываний вместо одного. Применимо к энкодеру, это означает, что при повороте ручки на один отсчет значение на выходе может измениться в непредсказуемое количество раз.

Чтобы избежать ложного срабатывания, возникающего в связи с дребезгом контактов, необходима фильтрация сигнала. Фильтровать можно как аппаратно, так и программно. Для начала посмотрим на сигнал без обработки.

.

► | 1 , III

1 Li

CHI = ] L00V Time 10 ms CH2 = 1.00 V

Рис. 13. Сигналы с энкодера без фильтрации

На осциллограмме Рис. 13 виден небольшой дребезг по переднему фронту. В ходе исследования дребезг проявлялся по обоим фронтам. Одним из способов борьбы с дребезгом контактов является использование

RC-фильтров для сглаживания сигналов, например, см. Рис. 14.

Рис. 14. Схема подключения энкодера с RC-фильтром

Принцип работы схемы следующий: в момент, когда ключ переключается из разомкнутого состояния в замкнутое (поворот энкодера/передний фронт), конденсаторы разряжаются на землю через резисторы. В это время происходит переход из состояния логической единицы в состояние логического нуля. Необходимо, чтобы время этого перехода превысило время дребезга. Аналогично, когда ключ переключается из замкнутого состояния в разомкнутое (поворот энкодера/задний фронт), конденсаторы заряжаются до напряжения логическое единицы.

Разницу не фильтрованного и фильтрованного сигнала можно проследить на Рис. 15.

Без RC-филыпра

1

С RC-фильтром

V г

Рис. 15. Нефильтрованный и фильтрованный сигналы

Выбирая номинал резистора для RC-цепочки важно помнить, что два последовательно подключенных резистора являются делителем напряжения. Если резистор в RC-цепи, будет слишком большого номинала, то снизится помехоустойчивость.

Для того, чтобы подробнее разобраться в этом рассмотрим простую схему, представленную на рис. 16.

Опс1

Рис. 16. Схема с последовательно подключенными резисторами

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• Напряжение питания Ип примем равным

3.3 В.

• Сопротивление R1 известно из документации на микроконтроллер, это 40±10 кОм.

• Для того чтобы определить предельное напряжение на входе микроконтроллера при котором еще будет распознаваться уровень логического нуля также обратимся к документации [1].

Таблица 2

Table 34. I/O static characteristics

Symbol ParamQter Min Typ Max Unit

VlL Standard I/O input low level voltage -C.3 - 0.28*(Vdd-2 V)+Q.e V V

I/O FT*11 input low level voltage -0.3 - Q.32-(Vdd-2 VJ+0.75 V

Верхний уровень логического нуля для стандартного порта ввода/вывода

рассчитывается по формуле

Vout max = 0.28x(3.3-2) + 0.8 = 1.164 В Это означает, что напряжения на резисторе R2 должно составлять не более 1.164 В, иначе микроконтроллер может не распознать уровень логического «0».

Далее произведем расчет R2 по формуле

V = V

out in

R

Ri + R2

Выразим R2:

VoutR2

R

V + V

in out

22кОм

Итак, номинал резистора Я2 не должен превышать значения 22 кОм. (при ¥пит = 3.3 В, Я1 = 40 кОм).

Существует эмпирически выработанное правило, по которому для гарантированного получения логического нуля резисторы подбираются в соотношении 1:10, Я1 к Я2 соответственно. Т. к. Я1 = 40 кОм, возьмем Я2 равным 4.7 кОм. Этот номинал находится в диапазоне допустимых значений, соответствует соотношению 1:10, а так же достаточно распространён на рынке.

Так же очень важно правильно подобрать емкость конденсаторов. Если емкость будет велика, то время зарядки конденсатора может превысит время обработки сигнала. Различие выходных сигналов энкодера при использовании конденсатора емкостью 0.1 мкФ (синий) и емкостью 0.01 мкФ (красный) представлено на Рис. 17.

/

+

СН1 = [.00 V Типе 10 тз СН2 = 1.00 V

Рис. 17. Осциллограмма системы с конденсатором емкостью 0.01 мкФ (красный) и 0.1 мкФ (синий) при единичном отсчете

При быстрой прокрутке ручки энкодера, конденсатор емкостью 0.1 мкФ (синий) не успевает зарядиться, и микроконтроллер может не распознать сигнал, в отличие от конденсатора с емкостью 0.01 мкФ (красный), см. Рис. 18.

Рис. 18. Осциллограмма системы с конденсатором емкостью 0.01 мкФ (красный) и 0.1 мкФ (синий)

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

Отдельно подключенный в схему резистор, не влияет на сглаживание фронтов, но от него

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

СН1 = [.00 V Типе 10 те СН2 - 1.00 V

Рис. 19. Осциллограмма системы с резисторами номиналом 10 кОм.

Отдельно подключенный конденсатор влияет на сглаживание заднего фронта. При этом никак не влияет на сглаживание переднего фронта из-за практически мгновенной разрядки конденсатора при замыкании контактов на энкодере, см. Рис. 20.

1-

/

/

СН1 = 1.00 V Типе 10 те СН2 = 1.00 V

Рис. 20. Осциллограмма системы с конденсаторами номиналом 0.1 мкФ (синий) и 0.01 мкФ (красный).

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

ВЫВОДЫ

• В многих областях применения энкодер является хорошей и простой заменой переменному резистору.

• Энкодер также обладает лучшей точностью потому, что не является аналоговым устройством;

• Нет ограничения угла поворота;

• Энкодер достаточно просто подключается к микроконтроллерам серии 8ТМ32, которые содержат аппаратные средства для работы с ними, что существенно упрощает работу на программном уровне.

ЛИТЕРАТУРА

[1] Документация на микроконтроллеры: STM32F100x4 STM32F100x6 STM32F100x8 STM32F100xB.

http://www.st.com/content/ccc/resource/technical/doc ument/datasheet/dd/87/fd/2a/fb/3f/48/5c/CD0025173 2.pdf/files/CD00251732. pdf/j cr:content/translations/e n.CD00251732.pdf

[2] Документация на отладочную плату STM32VLDISCOVERY: UM0919 User Manual.

http://www.st.com/content/ccc/resource/technical/doc ument/user manual/f3/16/fb/63/d6/3d/45/aa/CD0026 7113.pdf/files/CD00267113.pdf/jcr:content/translatio ns/en.CD00267113.pdf

[3] Stm32 Урок 35: Реализация алгоритма работы энкодера

https://www.voutube.com/watch?v=tuvms5U7VkA

Никита Олегович Кондратьев

- студент группы АА-37 кафедры Автоматики НГТУ. E-mail: nikitok.08.95@mail.ru

Кирилл Андреевич Кузнецов

- студент группы АА-37 кафедры Автоматики НГТУ. E-mail: kuznetsovk@ngs.ru

Виталий Геннадьевич Трубин

- зав. лаб. кафедры Автоматики НГТУ, директор ООО «КБ Автоматика». E-mail: trubin@ngs.ru

Information Input Device on the Basis of Mechanical Incremental Encoder EC11

V.G. TRUBIN, NO. KONDRATYEV, K.A. KUZNETSOV

Novosibirsk State Technical University, Novosibirsk, Russia

Abstract: This article deals with primary questions, that arises during working with encoder, based on development board

STM3 2 VLDISCO VERY

Keywords: encoder, potentiometer, contact bounce, pull-up resistor, RC-filter, microcontroller, the STM32.

i Надоели баннеры? Вы всегда можете отключить рекламу.