08:47


На активных пользователей действует система БОНУСОВ!
Каталог статей
меню

Профиль
Гость


Группа:
Гость
Время:08:47

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!


Категории раздела
Измерения [10]
Звук [10]
Автоматика [9]
Интерфейсы [9]
Видео [1]
Программы [25]
Разное [12]
Для дома [8]
Источники питания [3]
Программирование [15]
STM32 [1]
ESP [0]
Как подключить? [6]

Облако тегов

Статистика





Мы вконтакте

Приветствую Вас, Гость · RSS 07.03.2021, 08:47

Главная » Файлы » Интерфейсы

Делаем сенсорные кнопки на контроллере

   Приветствую. В качестве пробы на будущее купил у наших "друзей" китайцев микры 8229BSF - это 8-16 канальный сенсорный драйвер, якобы такие как используются в макетных сенсорных клавиатурах для ардуино. 
  Собрал тестовую плату, запаял микросхему, проверил режимы по даташиту все вроде норм, но после длительной проверки выявился "косяк". Ввиде того что у сенсора со временем уходит чувствительность, до полного непонимания прикосновения. Возможно это причины самокалибровки на окружающую среду, или общая подстройка каналов, так как там один конденсатор на несколько каналов регулирует чувствительность. Возможно брак, пока непонятно. Если кто сталкивался, или знает причины которых не углядел я, прошу известить. В аналог этому чипу решил сделать свой, только на контроллере AVR. Была написана библиотечка под BASCOM. 
    Основой алгоритма будет замер емкости сенсорной площадки. В начальный момент вывод микроконтроллера работает в режиме выхода и на нем установлен уровень логического нуля. Емкость сенсора, если она имеет какой-то заряд, быстро разряжается на внутренние цепи микроконтроллера. Через некоторое время вывод микроконтроллера переключаем в режим входа с отключенным подтягивающим резистором и емкость сенсора начинает заряжаться через внешний высокоомный резистор. В это время программа опрашивает состояние вывода микроконтроллера. Когда емкость зарядится до напряжения логической единицы, контроллер зафиксирует это и сравнит состояние счетчика с каким-то пороговым значением. По результату этого сравнения мы определяем поднесен ли к сенсору палец или нет. 


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

Для кнопок и линейных скролов.




Для круговых скролов.

      



   Ну с теорией думаю все понятно. Перейдем к делу. Ниже схема подключения сенсоров.




 

   Чтобы наши тест сенсоры заработали напишем небольшую программу для контроллера


$Regfile = "m8def.dat
$Crystal = 8000000
$hwstack = 15
$swstack = 15
$framesize = 40

'------------- Подключаем библиотеку сенсора ---------------
$include "LIB_sensor.bas"
'--------------------------------------------------------------------

LED alias PortD
Config LED = Output

Сall Calibrate_sensor(ALL)                    'калибруем сенсоры

Do

   Сall Read_sensor(ALL)
   LED=0
   LED.Knopka=1

Loop
End


  Подключив библиотеку методов "LIB_sensor.bas" настраиваем параметры и указываем порты сенсоров. Методом Read_sensor(*)  можно опрашивать и  определенный порт сенсора, просто прописав параметр в свойстве  Сall Read_sensor(5)  

Const RESDOWN = 2                                     'время разряда емкости сенсоров (мс)
Const DEBONCE = 10                                    'задержка от нестабильности емкости(мс)
Const SENSOR = 6                                         'количество сенсоров
Const OFFSET = 10                                        'чувствительность сенсора 0=MAX 
Const RELOAD = 50                                      'количество перезагрузок сенсоров при калибровке
Const COUNTERR = 5                                   'количество ошибок до сброса кнопки


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


[ Сообщить о нерабочей ссылке ]
Категория: Интерфейсы | Добавил: Yuriy | Теги: сенсор, управление, кнопки
Просмотров: 810 | | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Поиск Datasheet


Топ пользователей
Yuriy
Добавил статей: 68
Количество постов: 54

Sanyok
Добавил статей: 5
Количество постов: 0

snyfer
Добавил статей: 4
Количество постов: 2

4RESTER
Добавил статей: 1
Количество постов: 0

Аватар не выбран Arses
Добавил статей: 1
Количество постов: 0


Новое на сайте

 Bootloader


 LG FLATRON E2350V-PN


 Аудио Модуль USB TF Рад...


 Битовые операции И, ИЛИ...


 Учебник DipTrace для на...


 Samsung LE32R81B


 Коды ошибок


 Заправка и сброс картри...


 Сервисное меню телевизо...


 Изучаем Arduino - инст...


 Микросхемы EEPROM


 500 схем для радиолюбит...


 302 новые профессиональ...


 Сварочный инвертор. Тео...


 В копилку радиолюбителя


 В копилку радиолюбителя...


 Видеокарта GeForce 210


 Видеокарта Nvidia Gefor...


 Пульт для Сhallenger ch...


 Ноутбук Acer MS2277


 Осциллограф С1-65а



На форуме

БП ATOM IPS


Манчестер кодирование


Меню BAS


Контроллер теплых полов


Програмный Uart для BOO...


Простое шифрование данн...


433Mhz TX & RX



Опрос
Носителями какого заряда являются электроны?

Всего ответов: 36

Галерея

Copyright Elektron © 2021

Яндекс цитирования Проверка PR и ТИЦ