ПОДКЛЮЧЕНИЕ КНОПОК, ДИСКРЕТНЫХ СИГНАЛОВ К МИКРОКОНТРОЛЛЕРУ STM32F103

Подключение кнопок, дискретных сигналов к микроконтроллеру STM32F103

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

Аннотация: В данном материале рассматривается проблема, возникающая при подключении дискретных сигналов к микроконтроллеру, а именно проблема дребезга контактов. В ходе работы, для наглядности, произведено снятия сигналов с кнопок с помощью осциллографа. Рассматриваются как аппаратный, так и программный методы подавления дребезга контактов. В качестве микроконтроллера для примера выбран STM32F103, для которого приведён пример исходного кода программы на языке Си.

Ключевые слова: Кнопка, дискретные входы, гальваническая развязка, дребезг контактов, микроконтроллер, STM32, STM32F103, PC817, PC847, осциллограф, электромагнитное реле, защитный диод, Ш4001, внутреннее сопротивление порта, диод Шоттки.

ВВЕДЕНИЕ

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

1. ДРЕБЕЗГ КОНТАКТОВ КНОПКИ

Дребезг контактов кнопки [1] - явление, происходящее в электромеханических коммутационных устройствах и аппаратах (кнопках, реле, герконах, переключателях, контакторах, магнитных пускателях и др.), длящееся некоторое время после замыкания электрических контактов. После замыкания происходят многократные неконтролируемые замыкания и размыкания контактов за счет упругости материалов и деталей контактной системы — некоторое время контакты отскакивают друг от друга при соударениях, размыкая и замыкая электрическую цепь.

В зависимости от размеров, массы, материала и конструкции контактной системы время дребезга (время от первого соприкосновения контактов до затухания механических колебаний и установления стабильного контакта) составляет

0,1—1 мс у миниатюрных герконов до сотен миллисекунд у мощных контакторов. Пример контактной группы микропереключателя можно увидеть на Рис. 1.

Рис. 1. Контактная группа микропереключателя

До установления стабильного контакта напряжение на выводе микроконтроллера, к которому подключена кнопка, несколько раз будет достигать уровней логической единицы и нуля. В дальнейшем будут рассматриваться примеры с использованием микроконтроллера (МК) STM32F103 фирмы STMicroelectronics. Рассчитаем уровень логической единицы для микроконтроллера STM32F103 при напряжении питания 3.3 В. Согласно технической

документации производителя [3], напряжение логической единицы рассчитывается по формуле:

Vmin_i = 0.41(Vdd -2V) + 1.3V,

где VDD - напряжение питания МК.

Следовательно, минимальный уровень напряжения, соответствующий логической единице, будет равен 1,83 В. Для стандартных входов данного МК максимально допустимое входное напряжение соответствует уровню VDD + 0.3 В, следовательно, при напряжении питания 3.3 В оно составляет 3.6 В [3, «5.3.1. General operating conditions»].

У данного МК имеются входы, допускающих подачу на них напряжения 5 В (они имеют обозначение «FT» = 5V tolerant), что освобождает разработчика от необходимости согласования

уровней напряжения при подключении устройств, работающих от напряжения 5 В. На таких входах максимальный уровень напряжения может достигать 5.5 В [3, «5.3.1. General operating conditions»'].

2. АНАЛИЗ СИГНАЛА С КНОПКИ

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

Рис. 2. Схема подключения кнопки, способ 1

Рис. 3. Схема подключения кнопки, способ 2

Рассмотрим более подробно процессы в схеме Рис. 2. При нажатии на кнопку образуется делитель напряжения, см. Рис. 4, где RS1 - приблизительное сопротивление нажатой кнопки S1.

Рис. 4. Схема образования делителя напряжения при

нажатой кнопке

Напряжение на выходе делителя определяется

резистивного формулой

UmR2l( Rsl + R2),

RS1 = 2.2 Ом,

следовательно, при R2 = 1 кОм,

Uout = 3300/(2.2 +1000) = 3.29К . Данное

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

Далее для снятия сигнала дребезга с разных кнопок используем первый способ подключения, см. Рис.3. Используем следующие виды кнопок:

• Низковольтная кнопка;

• Кнопка дверного звонка;

• Комнатный выключатель.

Для всех снимаемых графиков были использованы следующие шкалы:

• Время - 500 мкс / деление.

• Напряжение - 1 В / деление.

На Рис. 5-7 представлены результаты эксперимента.

Звонок

lB/кп

0,5мс/кл

Рис. 5. Сигнал с низковольтной кнопки

Рис. 6. Осциллограмма кнопки дверного звонка

Рис. 7. Осциллограмма комнатного выключателя

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

3. МЕТОДЫ ПОДАВЛЕНИЯ ДРЕБЕЗГА КОНТАКТОВ

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

35

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

3.1. АППАРАТНЫЙ МЕТОД

В связи с тем, что стоимость современных МК 1-2$ подавление дребезга кнопок с использованием логических микросхем, имеющих стоимость около 0,2$ (плюс обеспечение их питания, монтаж), представляется, в большинстве случаев, экономически нецелесообразным, поэтому в данном материале не рассматривается.

Среди аппаратных методов наиболее доступным является использование -КС-цепочки [2]. Её использование позволяет сгладить колебания за счет того, что напряжение на конденсаторе не может измениться мгновенно.

Схема включения КС-цепочки представлена на Рис. 8.

Рис. 8.Схема включения ЯС-цепочки

Расчёт конденсатора произведём по формуле Т = КС, где Т - время заряда конденсатора до 63% от полной ёмкости, К - номинал резистора [Ом] и С - номинал конденсатора [Ф]. Этого достаточно, так как 63% • 3.3 В = 2.079 В, что

выше Vmm 1. Из полученных осциллограмм видно,

что наибольшая продолжительность дребезга в нашем случае - 0.5 мс. Зададим Т = 0.5 мс, К = 1 кОм. Используя вышеприведённую формулу, получим С = 500 нФ. В наличии был конденсатор 1 мкФ, который и был установлен в схему. Осциллограмма сигнала с кнопки с применением КС-цепочки представлена на Рис. 9.

3.2. ПРОГРАММНЫЙ МЕТОД

Рассмотрим представленную на Рис. 10 схему подключения кнопки и светодиода к микроконтроллеру.

Рис. 10. Способ подключения кнопки при программном методе подавления дребезг

Расчёт сопротивления резистора К1 производится исходя из условий использования устройства. В большинстве случаев в качестве подтягивающего резистора К1 принято использовать резисторы с номиналом от 1 до 100 кОм. Использование резистора большего номинала может привести к образованию делителя напряжения (см. Рис. 11), при котором напряжение на входе МК может оказаться ниже уровня логической единицы.

+3.3 в|

X

VI и кр ОКО 1 г TP 0.1, г с p

Вьод NIK

1 Них

X

Рис. 9.Осциллограмма с применением RC-цепочки

Рис. 11. Схема образования делителя напряжения на входе МК

Рассмотрим данный вопрос подробнее. Для микроконтроллера STM32F103 производитель явным способом не объявляет входное сопротивление порта, но его возможно оценить, используя параметр «Input leakage current» (Ток утечки на входе). Для стандартных входов МК ток утечки равен 1 мкА [3, «5.3.13. General input/output characteristics»]. Напряжение питания МК 3.3 В, по закону Ома Rin = U11 = 3.3V I0.00000U = 3.3MOm.

С учетом запасов и простоты запоминания рекомендуется считать входное сопротивление обычного цифрового порта равным 1 МОм. Теперь, зная входное сопротивление порта МК, рассчитаем напряжение на нем при использовании резисторов по формуле Uin = URin I (R + Rin ) , где U - напряжение в цепи, Rin - внутреннее входное сопротивление

порта, R - сопротивление резистора R\ на схеме подключения кнопки к МК.

UR=lkam = 3.3V

U = 3 3V

^ R=\0k0m •J -Jy

\M0m \.OO\MOm \MOm

= 3.296V.

\.O\MOm

= 3.2967V

U

R=\00k0m

= 3.3V IM0m = 3V . \.\M0m

Если устройство предполагает работу от батарей или аккумуляторов, то следует максимально экономно относиться к расходу электроэнергии и выбрать резистор номиналом 30-50 кОм (исходя из закона Ома: чем больше сопротивление, тем ниже ток в цепи). А при работе от сетевого источника питания, где расход энергии не играет значительной роли - можно выбирать резистор номиналом 1 кОм. При этом повышается помехозащищённость схемы, так как ток в цепи выше, чем при использовании резистора, например, номиналом 10 кОм. Следовательно, требуется больший ток помехи, чтобы исказить правильные данные.

Среди программных методов наиболее простым и понятным является накопление и анализ состояний входа МК через равные промежутки времени. Например, с помощью прерывания по таймеру каждую миллисекунду опрашивается состояние входа, и производится запись бита состояния входа, например, в 0 бит беззнаковой 8-битной целочисленной переменной (ши/8_/ для STM32) с предварительным сдвигом указанной переменной влево на 1 бит. В главной программе проверяется значение данной переменной, и если оно равно 0 (0x00 - все нули), то считаем кнопку нажатой, если оно равно 255 (0xFF - все единицы), то считаем кнопку отжатой, в противном случае (например, 11010111) считаем, что на входе дребезг.

BINARY HEX Состояние

0 0 0 0 0 0 0 0 0х00 Нажата

\ \ \ \ \ \ \ \ 0хFF Отжата

0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0x0\ 0xFE Дребезг

Программный алгоритм реализуем следующим образом: инициализируем МК, определяем PORTC13 как линию, настроенную на вывод, а PORTB11 на ввод, период срабатывания прерывания по таймеру устанавливаем равным 1 миллисекунде. Объявим переменную KN как беззнаковый байт. В обработчике прерывания каждую миллисекунду производится сдвиг переменной KN влево на один бит. После этого происходит копирование состояния порта в 0 бит переменной KN. После 8 итераций при стабильном контакте происходит заполнение всех восьми бит переменной нулями и переменная (в данном примере это переменная KN) принимает значение 0x00. В главном цикле функции main производится проверка значения переменной KN, и если оно равно 0x00, то зажигается светодиод, подключенный к PORTC13. При установлении значения 0х¥¥ происходит выключение светодиода.

Полный программный код представлен ниже.

Программный код приведён для случаев, в которых не предусмотрена фиксация состояния, т.е. при отпускании кнопки светодиод гаснет. Для добавления фиксации следует заменить тело цикла while(1) на следующие строки: if (KN == 0x00 && F1 == 0) { i = !i; F1 = 1; } else if(KN == 0xFF) {

F1 = 0;

}

if(i) {

GPIO_ResetBits(GPIOC, Blue);

} else {

GPIO_SetBits(GPIOC, Blue);

}

#include <stm32f\0x.h> #define Blue GPIO_Pin_\3 volatile uint8_t i = 0, F\ = 0; volatile uint8_t KN;

//============= Глобальные переменные ===============

GPIO_InitTypeDef Init_PORTB, Init_PORTA, Init_PORTC; USART_InitTypeDef USART_InitStructure; SPI_InitTypeDef SPI_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; ErrorStatus HSEStartUpStatus; #include "mafunc.c"

void TIM2_IRQHandler(void) {

//================= TIM2:обработчик прерывания (выполняется каждую \ мс) =====

if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); KN <<= \; // сдвиг влево на \ бит

if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_\\) == \) KN |= \;

} }

/* ====================== Инициализация и обработка ====================*/

int main(void) {

SetSysClockToHSE();_

RCC_ADCCLKConfig(RCC_PCLK2_Div2); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB 1 PeriphClockCmd(RCC_APB 1 Periph_TIM2, ENABLE); Init_PORTC.GPIO_Pin = Blue; Init_PORTC.GPIO_Speed = GPIO_Speed_10MHz; Init_PORTC.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &Init_PORTC); GPIO_SetBits(GPIOC, Blue); Init_PORTB.GPIO_Pin = GPIO_Pin_11; Init_PORTB.GPIO_Speed = GPIO_Speed_10MHz; Init_PORTB.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &Init_PORTB);

1*==================== Настройка прерывания каждую миллисекунду =

TIM_TimeBaseStructure.TIM_Period = 50-1; II 1 миллисек. TIM_TimeBaseStructure.TIM_Prescaler = 1440 - 1; II квант = 20 мкс TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM2, ENABLE);

I*====================== Настройка прерывания ================

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE); I* TIM enable counter *I while (1) {

if (KN == 0x00) { i = 1;

} else if (KN == 0xFF) { i = 0;

}

if(i) {

GPIO_ResetBits(GPIOC, Blue);

} else {

GPIO_SetBits(GPIOC, Blue);

} }; }

4. ГАЛЬВАНИЧЕСКАЯ РАЗВЯЗКА

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

4.1. ЭЛЕКТРОМАГНИТНОЕ РЕЛЕ

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

Рис. 12.Схема гальванической развязки с помощью электромагнитного реле, способ 1

Рис. 13.Схема гальванической развязки с помощью электромагнитного реле, способ 2

Принцип работы схемы, собранной первым способом: при отпущенной кнопке £1 питание на обмотку реле не подаётся, соответственно, на

*

I

выводе МК, подключенному к подвижному контакту реле будет напряжение 3.3 В через подтягивающий резистор Я1. При нажатии кнопки £1 происходит подача напряжения на обмотку реле, и оно замыкает выходные контакты. Вывод МК соединяется с землёй и напряжение на нём составит 0 В. Защитный диод Б1 на данной схеме необходим для гашения выброса напряжения, возникающего в обмотке реле при отключении кнопки.

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

4.2. ОПТОПАРА

Оптопара - микросхема, которая сочетает в себе светодиод на входе и транзистор на выходе, отпираемый световым потоком. Схемы подключения двумя способами представлены на Рис. 14-15.

Рис. 14.Схема гальванической развязки с помощью оптопары,способ 1

Рис. 15. Схема гальванической развязки с помощью оптопары,способ 2

Для примера возьмём широко распространённую оптопару PC817B. Она имеет гарантированную защиту выходной части при скачке напряжения на входе до 5 кВ [4, «Absolute Maximum Ratings - Isolation voltage»]. Согласно документации [4], на светодиоде падение напряжения составляет 1,2 В, при токе 20 мА. Рассчитаем сопротивление резистора в цепи светодиода, примем напряжение питания равным 12 В, а ток в цепи равным 5 мА. Падение напряжения на светодиоде оптопары примем

равным 1.2 В при токе в 5 мА [4, «figure 5 Forward Current vs. Forward Voltage»], следовательно, падение напряжения на резисторе составляет U=12 - 1,2=10,8 В . По закону Ома

R = U/1 = 10.8/0.005 = 2kOm. При таких параметрах мощность, рассеиваемая на резисторе равна P = U  I = 10.8• 0.005 = 0.05W. Для защиты светодиода оптопары от импульсных помех в линии кнопки добавим защитный диод, включенный параллельно светодиоду в обратном направлении. Данный диод защитит светодиод оптопары от обратного напряжения. Например, при подаче минус 12 В без защитного диода произойдет пробой светодиода, т.к. максимальное допустимое обратное напряжение для светодиода оптопары 6 В [4, «Absolute Maximum Ratings -Reverse voltage»]. В качестве диода можно взять широко распространённые 1N4001-1N4007 [5], для которых максимальное обратное напряжение равно 50-1000 В. В выходной части также имеются ограничения, а именно: максимальный ток через выходной транзистор оптопары должен находиться в границах, заданных параметром CTR (Current transfer ratio) - соотношение передачи тока, которое зависит от конкретной модификации оптопары (последний символ в модели микросхемы). Этот параметр определяет зависимость допустимого выходного тока от входного, т.е. при CTR = 100 % выходной ток равен входному, а при CTR = 150 % выходной ток может быть в полтора раза больше входного. Параметры CTR приведены в Таблице.

Таблица

Коэффициент передачи тока для оптопар типа PC8x7

Model No. Rank mark CTR

PCQ17A A 80 to 161)

PCB17B В 130 №

pcei7c С 200 to 400

PCS17D » 300 to 600

PCS Э& TAB A or В 80 to 260

рсажтвс В or С 130 to

PC8S7CD СогП 200 to 6U0

PCa3i7AC А, В t»r С 80 to 400

PC8&7BD H, С or L» 130 to 600

PC8iS7AD А, В. С or D SO to 600

pca-i-7 А, Б. C. D flf No «иг* 50 to 600

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

Так как в нашем случае нет жёстких требований по току в выходной цепи, то используем микросхему с минимальным СТК = 130 %, при этом 30% выделим на запас, то есть в дальнейших расчётах ток во входной и выходной цепи оптопары будем считать равным 5 мА. Напряжение на резисторе в выходной цепи будет равным 3,3 В - 0,6 В (падение напряжения

на открытом фототранзисторе) = 2,7 В. Согласно закону Ома R2 = U11 = 2.710.005 = 5400m.

Схема с использованием оптопары имеет преимущества относительно схемы с электромагнитным реле, а именно:

• быстродействие - около 10 микросекунд на открытие!закрытие фототранзистора для рассмотренной схемы [4, «Figure 10 - Time vs/ Load Resistance»];

• долговечность - отсутствуют механические подвижные части;

• меньший уровень энергопотребления;

• бесшумность - отсутствуют звуки коммутации реле;

• компактность.

Также хотелось бы отметить, что при необходимости в большом количестве каналов, возможно использование сборки из четырёх оптопар в одном корпусе, например, PC847, что позволяет уменьшить количество монтируемых компонентов.

5. ЗАЩИТА ЦИФРОВЫХ ВХОДОВ

Помимо гальванической развязки, часто существует необходимость защиты цифровых входов МК от импульсных помех. Простым способом реализации такой защиты является использование двух диодов Шоттки и токоограничивающего резистора, см. Рис. 16.

Рис. 16. Схема защиты цифрового порта МК с помощью диодов Шоттки и резистора

Для примера рассчитаем номиналы элементов защиты. Максимальную амплитуду импульса помехи в линии определим ± 100 В. В качестве диодов будем использовать широко распространённые диоды Шоттки 1Ж5819, максимальный допустимый прямой ток у них 0.1 А. Падение напряжения на выбранных диодах в прямом направлении составляет 0.3 В [8, «Typical Characteristics - Forward characteristics»]. Важно брать диоды с маленьким падением напряжения. Вычислим максимальное падение напряжения на резисторе 100 -3.6 = 96.4 В (где 100 В - напряжение импульса помехи, 3.6 В - напряжение питания МК 3.3 В + падение напряжения на диоде 0.3 В). По закону

Ома К1 = 96.4 / 0.1» 1кОш . Если помеха будет

действовать постоянно, то рассеиваемая резистором К1 мощность составит Р = 96.4 • 0.1 = 10Ж , но, как правило, импульс помехи имеет кратковременный характер, поэтому в большинстве случаев можно ставить резистор с мощностью 0,125 или 0,25 Вт. Защита входа обеспечивается открытием диодов Б1 или Б2 (в зависимости от полярности импульса помехи) при превышении напряжения +3.6 В или -0.3 В на входе МК. Тем самым напряжение на входе МК «фиксируется» на этих величинах, а оставшееся напряжение «возьмёт на себя» защитный резистор К1.

Также, совместив данную схему с делителем напряжения, возможно подключение к МК высокого напряжения, например, +24 В, см. схему на Рис. 17. Номинал резистора К2 примем равным 1 кОм (согласно п.3.2.). Тогда по формуле

UnMK = UinR I (R + Rz),

где

U

3.3V, получим R1 = 6.2 кОм. Ёмкость

т _ МК

конденсатора С1 (который необходим для подавления помех) можно взять, например, 0,1 мкФ, более подробно - см. п.3.1.

Рис. 17. Схема защиты цифрового порта с делителем напряжения

Данная статья продолжает серию статей [8-18] по исследовательско-образовательному циклу по робототехнике, который реализуется в НГТУ на кафедре Автоматики. Основное достоинство этого цикла состоит в том, что студенты своими руками и своим интеллектом участвуют в разработке роботов непосредственно от идеи до действующей модели, реализуя лично как выбор функциональных схем, так и выбор элементной базы, разработку принципиальных схем, монтаж, настройку, программирование цифровой управляющей части.

ВЫВОДЫ

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

многократном замыкании и размыкании контактов при включении и отключении.

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

3. При подключении удалённых кнопок, выключателей и т.д. рекомендуется использовать гальваническую развязку на реле или оптопарах, чтобы исключить влияние внешних помех на микроконтроллер.

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

5. В отношении проектирования устройств с гальванической развязкой, рекомендуем обратиться к обширной литературе на эту тему, представленной в интернете, например, [19-27].

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

ЛИТЕРАТУРА

[1] Wikipedia - дребезг контактов. URL: https://ru.wikipedia.org/wiki/%D0%94%D1%80%D0% B5%D0%B1 %D0%B5%D0%B7%D0%B3 %D0%BA %D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D 1 %82%D0%BE%D0%B2

[2] Дребезг контактов и как с ним бороться. URL: https://radioprog.ru/post/251

[3] Документация на семейство микроконтроллеров STM32F103x8, STMicroelectronics. URL: https://www. st.com/resource/en/datasheet/CD00161566 .pdf

[4] Документация на оптопары PC817x: URL: https://www.farnell.com/datasheets/73758.pdf

[5] Документация на диоды серии 1N400x: URL: https://www.diodes.com/assets/Datasheets/ds28002.pdf

[6] Подключение кнопки к микроконтроллеру: URL:http://radiolaba.ru/programmirovanie-pic-kontrollerov/podklyuchenie-knopki-k-mikrokontrolleru.html

[7] Амперка - Делитель напряжения: URL: http://wiki.amperka.ru/%D1%81%D1%85%D0%B5% D0%BC%D0%BE%D1%82%D0%B5%D1%85%D0% BD%D0%B8%D0%BA%D0%B0:%D0%B4%D0%B5 %D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D 1%8C-

%D0%BD%D0%B0%D0%BF%D1%80%D1%8F%D0 %B6%D0%B5%D0%BD%D0%B8%D1%8F

[8] Документация на диоды серии 1N5817-1N5819: URL: https://www.chipdip.ru/product/1n5819pbf

[9] Печников А.Л., Жмудь В.А., Трубин В.Г., А.Б. Колкер. Перспективы развития робототехнических учебных стендов для высшего специального

образования в области робототехники, автоматики и мехатроники. Информатика, вычислительная техника и автоматизация. 2012. №2. Т.5. С. 89-95.

[10] Печников А.Л., Жмудь В.А., Трубин В.Г. Удаленное управление роботом посредством xmpp-протокола. Сборник научных трудов НГТУ. 2013. № 3(73). С. 85 - 92.

[11] Ескин А.В., Жмудь В.А., Трубин В.Г. Реализация дистанционного управления по радиоканалу Bluetooth платформой, моделирующей работу роботизированных средств. Автоматика и программная инженерия. 2013. № 1 (3). С. 82-87.

[12] Ескин А.В., Жмудь В.А., Трубин В.Г. Построение платформы моделирующей работу роботизированных средств на базе конструктора Lego Mindstorms NXT 2.0 в части управления электродвигателями. Автоматика и программная инженерия. 2013. № 1 (3). С. 88-94.

[13] А.В. Ескин, В.А. Жмудь, В.Г. Трубин. Беспроводной удлинитель последовательного порта на базе радиоканала Bluetooth. Автоматика и программная инженерия. 2013. № 2 (4). С. 42-47.

[14] А.В. Ескин, В.А. Жмудь, В.Г. Трубин. STM32VLDISCOVERY - средство для быстрой разработки опытных образцов цифровых систем управления. Автоматика и программная инженерия.

2013. № 3 (5). С. 32-39.

[15] А.Ю. Ивойлов, В.А. Жмудь, А.В. Ескин, В.Г. Трубин. Особенности работы с ЖКИ дисплеем NOKIA 5110. Автоматика и программная инженерия. 2013. № 4 (6). С. 8-13.

[16] В.Г. Трубин, А. В. Ескин, А.Л. Печников, В.А. Жмудь. Использование сети интернет для интерактивной лабораторной работы с дистанционным управлением моделью робота снегоуборщика. Автоматика и программная инженерия. 2014. 1(7). С. 95-103.

[17] А.Ю. Ивойлов, В.А. Жмудь, В.Г.Трубин. Разработка системы автоматической стабилизации в вертикальном положении двухколесной платформы. Автоматика и программная инженерия.

2014. № 2 (8). С. 15-21.

[18] А.В. Ескин, В.А. Жмудь, В.Г. Трубин. Экономичная реализация графического интерфейса пользователя на базе одноплатного компьютера Raspberry Pi. Автоматика и программная инженерия. 2014. № 2 (8). С. 22-38.

[19] Уэйн, Скотт. Применение устройств гальванической развязки цифрового сигнала iCoupler в интерфейсах RS-232, RS-485 и CAN. Электронные компоненты. 9, 2005.

[20] https://www.sintrol.ru/produkty/signal-converters/galvanicheskie-razvyazki-i-preobrazovateli-signalov

[21] http://www.akon.com.ru/products.php7parameter%5B %5D=GALV&gclid=EAIaIQobChMInqfU-Pvv1wIVU0kZCh0 mgK8EAMYASAAEgJIbfD BwE

[22] http://catalog.gaw.ru/index.php?id=4462&page=comp onent detail

[23] http://electricalschool.info/spravochnik/poleznoe/1552 -chto-takoe-galvanicheskaja-razvjazka.html

[24] https://electronix.ru/forum/lofiversion/index.php/t8554 4.html

[25] http://www.chipnews.ru/html.cgi/arhiv i/99 04/stat-64.htm

[26] https://geektimes.ru/post/266016/

[27] Изолированный аналоговый интерфейс с аналого-цифровым преобразователем: возможные решения от Analog Devices. http://smanuals.ru/measurement-technology/articles5441.html

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

старший преподаватель кафедры Автоматики НГТУ, директор ООО «КБ Автоматика». E-mail: trubin@ngs.ru Новосибирск, 530073, просп. К. Маркса, д.20

Александр Игоревич Незванов -

студент 1 курса магистратуры кафедры Автоматики НГТУ. E-mail: nezvanovml @mail. ru Новосибирск, 530073, просп. К. Маркса, д.20

Статья поступила 01.12.2018

Discrete Signals and Buttons Connection to Microcontroller STM32F103

V.G. Trubin, A.I. Nezvanov Novosibirsk State Technical University, Novosibirsk, Russia

Abstract: This material addresses the problem that arises when discrete signals are connected to a microcontroller, namely the problem of contact bounce. In the course of work the paper gives the grab of waveform from the buttons using an oscilloscope. Both hardware and software methods for suppressing contact bounce are considered. For the microcontroller, STM32F103 chosen as an example, for which an example of C program source code is given.

Key words: Button, discrete inputs, galvanic isolation, contact bounce, microcontroller, STM32, STM32F103, PC817, PC847, oscilloscope, electromagnetic relay, flyback diode, 1N4001, port internal resistance, schottky diode.

REFERENCES

[1] Wikipedia - Bounce of contacts. (In Russian) URL: https://ru.wikipedia.org/wiki/%D0%94%D1%80%D0% B5%D0%B1 %D0%B5%D0%B7%D0%B3 %D0%BA %D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D 1 %82%D0%BE%D0%B2

[2] The bounce of contacts and how one can overcome this. (In Russian) URL: https://radioprog.ru/post/251

[3] Microcontroller Family Documentation STM32F103x8, STMicroelectronics. (In Russian) URL: https://www. st.com/resource/en/datasheet/CD00161566 .pdf

[4] Optocoupler documentation PC817x: (In Russian) URL: https://www.farnell.com/datasheets/73758.pdf

[5] Diode Series Documentation 1N400x: URL: https://www.diodes.com/assets/Datasheets/ds28002.pdf

[6] Подключение кнопки к микроконтроллеру: URL:http://radiolaba.ru/programmirovanie-pic-kontrollerov/podklyuchenie-knopki-k-mikrokontrolleru.html

[7] Amperka - Voltage Divider: (In Russian) URL: http://wiki.amperka.ru/%D1%81%D1%85%D0%B5% D0%BC%D0%BE%D1%82%D0%B5%D1%85%D0% BD%D0%B8%D0%BA%D0%B0:%D0%B4%D0%B5 %D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D 1%8C-

%D0%BD%D0%B0%D0%BF%D1%80%D1%8F%D0 %B6%D0%B5%D0%BD%D0%B8%D1%8F

[8] Diode Series Documentation 1N5817-1N5819: (In Russian) URL: http s : //www .chipdip. ru/product/ 1n5819pbf

[9] Pechnikov A.L., Zhmud V.A., Trubin V.G., A.B. Kolker. Perspektivy razvitiya robototekhnicheskikh uchebnykh stendov dlya vysshego spetsial'nogo obrazovaniya v oblasti robototekhniki, avtomatiki i mekhatroniki. Informatika, vychislitel'naya tekhnika i avtomatizatsiya. 2012. №2. T.5. S. 89-95.

[10] Pechnikov A.L., Zhmud V.A., Trubin V.G. Udalennoye upravleniye robotom posredstvom xmpp-protokola. Sbornik nauchnykh trudov NGTU. 2013. № 3(73). S. 85 - 92.

[11] Yeskin A.V., Zhmud V.A., Trubin V.G. Realizatsiya distantsionnogo upravleniya po radiokanalu Bluetooth platformoy, modeliruyushchey rabotu robotizirovannykh sredstv. Avtomatika i

programmnaya inzheneriya. 2013. № 1 (3). S. 82-87.

[12] Yeskin A.V., Zhmud V.A., Trubin V.G. Postroyeniye platformy modeliruyushchey rabotu robotizirovannykh sredstv na baze konstruktora Lego Mindstorms NXT 2.0 v chasti upravleniya elektrodvigatelyami. Avtomatika i programmnaya inzheneriya. 2013. № 1 (3). S. 88-94.

[13] A.V. Yeskin, V.A. Zhmud, V.G. Trubin. Besprovodnoy udlinitel' posledovatel'nogo porta na baze radiokanala Bluetooth. Avtomatika i programmnaya inzheneriya. 2013. № 2 (4). S. 42-47.

[14] A.V. Yeskin, V.A. Zhmud, V.G. Trubin. STM32VLDISCOVERY - sredstvo dlya bystroy razrabotki opytnykh obraztsov tsifrovykh sistem upravleniya. Avtomatika i programmnaya inzheneriya.

2013. № 3 (5). S. 32-39. [15] A.YU. Ivoylov, V.A. Zhmud, A.V. Yeskin, V.G. Trubin. Osobennosti raboty s ZHKI displeyem NOKIA 5110. Avtomatika i programmnaya inzheneriya. 2013. № 4 (6). S. 8-13.

[16] V.G. Trubin, A. V. Yeskin, A.L. Pechnikov, V.A. Zhmud. Ispol'zovaniye seti internet dlya interaktivnoy laboratornoy raboty s distantsionnym upravleniyem model'yu robota snegouborshchika. Avtomatika i programmnaya inzheneriya. 2014. 1(7). S. 95-103

[17] A.YU. Ivoylov, V.A. Zhmud, V.G.Trubin. Razrabotka sistemy avtomaticheskoy stabilizatsii v vertikal'nom polozhenii dvukhkolesnoy platformy. Avtomatika i programmnaya inzheneriya. 2014. № 2 (8). S. 15-21.

[18] A.V. Yeskin, V.A. Zhmud, V.G. Trubin. Ekonomichnaya realizatsiya graficheskogo interfeysa pol'zovatelya na baze odnoplatnogo komp'yutera Raspberry Pi. Avtomatika i programmnaya inzheneriya.

2014. № 2 (8). S. 22-38.

[19] Wein, Skott. Primeneniye ustroystv gal'vanicheskoy razvyazki tsifrovogo signala iCoupler v interfeysakh RS-232, RS-485 i CAN. Elektronnyye komponenty. 9, 2005.

[20] https://www.sintrol.ru/produkty/signal-converters/galvanicheskie-razvyazki-i-preobrazovateli-signalov

[21] http://www.akon.com.ru/products.php7parameter %5B%5D=GALV&gclid=EAIaIQobChMInqfU-Pvv1wIVU0kZCh0 mgK8EAMYASAAEgJIbfD

BwE

[22] http://catalog.gaw.ru/index.php?id=4462&page= component detail

[23] http://electricalschool.info/spravochnik/poleznoe/ 1552-chto-takoe-galvanicheskaj a-razvj azka.html

[24] https://electronix.ru/forum/lofiversion/index.php/ t85544.html

[25] http://www.chipnews.ru/html.cgi/arhiv i/99 04/s tat-64.htm

[26] https://geektimes.ru/post/266016/

[27] Izolirovannyy analogovyy interfeys s analogo-tsifrovym preobrazovatelem: vozmozhnyye resheniya ot Analog Devices. http://smanuals.ru/measurement-technology/articles5441.html

Vitaly Gennadievich Trubin -

Senior Lecturer, Department of Automatics, NSTU, Director of KB Automatics LLC. E-mail: trubin@ngs.ru Novosibirsk, 530073, prosp. K. Marks, d.20.Russia Alexander Igorevich Nezvanov -student of the 1st year of the master's program of the Automation Department of the NSTU. E-mail: nezvanovml @mail. ru Novosibirsk, 530073, prosp. K. Marks, d.20.Russia

The paper has been received on 01.12.2018