Устранение дребезга контактов

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

Наибольшее распространение получили два программных способа ожидания установившегося значения:

1) подсчет заданного числа совпадающих значений сигнала;

2) временная задержка.

Суть первого способа состоит в многократном считывании сигнала с контакта. Подсчет удачных опросов, обнаруживших, что контакт устойчиво замкнут, ведется программным счетчиком. Если после серии удачных опросов встречается неудачный, то подсчет начинается сначала. Контакт считается устойчиво замкнутым, если последовало N удачных опросов. Число N подбирается экспериментально для каждого типа используемых датчиков и лежит в пределах от 5 до 50. Пример программного подавления дребезга контакта приводится для случая, когда датчик импульсного сигнала подключен к входу Т0, счет удачных опросов ведется в регистре R3, N=20:

DBNC: MOV R3, #20;инициализация счетчика

DBNC1: JB P3.4, DBNC;если контакт разомкнут, то

;начать отсчёт опросов сначала

DJNZ R3, DBNC1;повторять, пока R3 не станет равным 0

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

DBNCDL: JTO DBNCDL;ожидание нуля на входе T0

CALL DELAY;вызов подпрограммы задержки

EXIT:...;выход из процедуры

Временная задержка в пределах 1-10 мс подбирается экспериментально для каждого типа датчиков и реализуется подпрограммой DELAY.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: