061-Простая сенсорная панель (Keypad).

Автор: | 02.12.2010

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

Но, перед тем как мы начнем сооружать наш сенсорный девайс, хотелось бы узнать как Вы относитесь к сенсорным устройствам вообще? Честно говоря, у меня отношение к сенсорным клавишам довольно неоднозначное. Давайте вместе оценим, сильные и слабые стороны.

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

Второй недостаток, вытекает из первого. Так как для «нажатия» сенсора нет необходимости прикладывать физическое усилие, то случайные прикосновения к сенсорным клавишам будут вызывать ненужные срабатывания. Есть способы борьбы с этим, но по факту это необходимо учитывать при разработке устройств – продумывать блокировку или ограничение контакта с сенсорами.

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

Хорошее:
О плохом поговорили, давайте теперь хвалить сенсорные устройства.
Самое главное, что сенсорные устройства – это вечные устройства (если не принимать во внимание электронику). Что может статься с куском фольгированного текстолита? Нет механических движений — нет износа!

Простота и дешевизна конструкции позволяет такие устройства широко использовать в «домашних» условиях.

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

Если учесть все отрицательные стороны, то сенсоры могут стать очень полезным устройством для Ваших электронных проектов. Значит, решено – будем их использовать!

Начнем, пожалуй, с классики — стандартного кейпада на 12 клавиш (как на телефоне). Раньше я уже делал драйвер для механического кейпада – будет с чем сравнить. Сенсорный кейпад (как, впрочем, и остальные сенсорные устройства) состоит из двух частей: драйвера и сенсорной панели.


1 «TOUCH ME» ДРАЙВЕР
— электронное устройство, которое будет «чувствовать» наши сенсорные площадки и реагировать на «нажатые» клавиши. В нашем случае это устройство работает по принципу замера паразитной емкости площадки сенсора. Как сделать драйвер сенсорных устройств, «Touch Me driver», я описал немного раньше. Конструкция драйвера проста и универсальна, ее можно применять для различных сенсорных устройств, будет меняться только прошивка. Под каждое сенсорное устройство я буду выкладывать свою прошивку. Считаю, что драйвер Вы уже собрали. Если кто не помнит — он выглядит вот так:

Распайка платы

Теперь прошиваем его прошивкой для управления сенсорным кейпадом.

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

061-T2313-keypad-sense v2.0 - Прошивка "Touch Me driver" для сенсорной панели (Keypad)
Микроконтроллер работает от внутреннего задающего генератора 8МГц. 
061-fuse-keypad-sense - Фьюз-биты для прошивки "Touch Me" драйвера Keypad-панели
Фьюз байты: Lock Bits = 0x 3F; High Fuse = 0x DF; Low Fuse = 0x E4; Ext. Fuse = 0x FF

1.1 Работа драйвера.
В работе программы реализовано:
— общение с «внешним миром» по интерфейсу UART (возможно будут версии и с другими интерфейсами – позже решим);
— автоповтор нажатой клавиши;
— Shift-режим (при удержании нажатой клавиши «*» включается Shift-режим. В Shift-режиме при нажатии на клавиши выдаются по UART не цифры (0, 1, 2,…9), а буквы (A, B, C, …J);
— озвучивание нажатой клавиши;
— индикация нажатой клавиши и включения Shift-режима;
— подсветка клавиатуры;
— возможность управления драйвером по UART;
— возможность сохранения и восстановления настроек сенсорных каналов в EEPROM.

1.2 Возможные варианты работы драйвера и управления им:

символы передваемые по UART
Во второй версии прошивки добавлена возможность определения нерабочих каналов.
При старте устройства, в процессе автоматической настройки, по UART передаются результаты тестов сенсорных каналов. Это должно помочь определить проблемы с работой устройства. Формат посылки следующий: 
_xxxxxxxxxxxx_
, где х состояние каждого сенсорного канала и может принимать одно из трех значений:
N — все нормально, канал нормально работает;
O — переполнение. Канал не может зарядиться до единицы за заданное время. Причины могут быть следующими: канал «прижимается» к «земле» или утечками на плате или неисправными внутренними цепями порта микроконтроллера; еще может быть слишком большая паразитная емкость канала — длинные соединительные провода, большая контактная площадка;
S — канал мгновенно заряжается до единицы. Такое может быть если запускается «голый», без сенсорной панели, драйвер. Канал «прижимается» к +питанию или утечками на плате или неисправными внутренними цепями порта микроконтроллера.

— При нормальном старте устройства по UART пройдет строка:
_NNNNNNNNNNNN_
и последует два коротких звуковых сигнала.
— При старте с ошибками в строке сообщения выдадутся ошибки в сенсорных каналах и будут непрерывно следовать звуковые сигналы.
— При восстановлении значений чувствительности сенсорных каналов из EEPROM, по UART передается строка:_EE_ и нет никаких сигналов.

Прием по UART:
0 — отключение подсветки;
1, 2, 3, 4, 5, 6, 7, 8, 9 — регулировка яркости подсветки;
Н — включение Shift-режима;
L — выключение Shift-режима;
S — сохранение настроек чувствительности каналов в EEPROM (при старте устройства не будет производится автоматическая настройка — значения восстановятся из EEPROM) (v2.0.); 
R
— возврат автоматической настройки каналов при старте (отмена S-команды) (v2.0).

Драйвер, в данной реализации, общается с внешним миром по UART, но в последующем я планирую сделать вариант, где нажатиями кнопок можно будет «дрыгать» различными ножками микроконтроллера (подключив реле или симистор можно будет управлять мощной нагрузкой – освещение, моторы и т.д.)


1.3 Настройка работы, защита от ошибок и помех
(переступаем через грабли).
В программе реализовано сразу несколько защитных алгоритмов препятствующих ложному или ошибочному срабатыванию сенсоров.
Так как порта «сенсорных» каналов находятся в высокоимпедансном состоянии, и фактически являются антеннами, на которые «ловится» весь окружающих электрический шум, то замеры емкости, в некоторой степени, «плавают». Для получения достоверных значений емкости программа делает усреднение 32 замеров.
«Сенсорные» контактные площадки срабатывают без «нажатия» — достаточно прикосновения. Возможна ситуация когда к панели клавиш случайно прикоснулись ладонью или при нажатии коснулись сразу двух клавиш. Программа «видит» сразу все «нажатия» сенсоров и в случае, когда нажато более одной кнопки, не выполняет ни каких действий.
В программе реализовано устранение «дребезга контактов». Странно звучит для бесконтактных клавиш, но у «сенсоров» есть определенный порог (расстояние от пальца до контактной площадки) нестабильности при котором «клавиша» может неустойчиво определятся как «нажатая». Хотя у порта микроконтроллера входные буферы всех выводов построены по схеме триггера Шмита, что, в некоторой степени, является защитой от дребезга, дополнительная программная защита не помешает.
Драйвер будет корректно работать с различными вариантами разводки контактных (сенсорных) площадок, шлейфов, внешних условий и условий эксплуатации. Это возможно благодаря тому, что при запуске драйвер автоматически настраивает чувствительность каждого сенсорного канала индивидуально.
Благодаря автоподстройке драйвера к условиям работы, схема не нуждается в какой либо настройке после сборки и не критична к применяемым в схеме радиоэлементам.


2 СЕНСОРНАЯ ПАНЕЛЬ КЕЙПАДА
— очень проста конструктивно. Это всего лишь печатная плата.
061-sense-keypad-plate - Рисунок печатной платы сенсорной панели
Для платы можно использовать любой текстолит, материал не имеет значения.

2.1 После того, как вытравили плату припаиваем к ней шлейф для связи с драйвером. В данном случае я поставил разъем, но если драйвер не планируется использовать для других устройств – можно паять напрямую, без разъема.

2.2 Сенсорная плата готова, нужно нанести на нее диэлектрическое покрытие.
Вот тут начинается самое интересное и креативное. Для покрытия можно применить различные способы и материалы: лаки, пленки, скотч, … — ваша фантазия поможет.
Я предлагаю следующий вариант «облицовки» сенсорной панели.
Для начала рисуем наши клавиши. Это можно сделать в любой программе в которой вы умеете рисовать, одно условие – размеры рисунка должны совпадать с сенсорной панелью. Далее рисунок распечатываем. Печатать можно как на струйных, так и на лазерных принтерах – разницы нет. Распечатанный рисунок нужно приклеить к сенсорной панели. Тут соображайте сами как это сделать – вариантов множество.

Я, для упрощения процесса, печатаю клавиатуру на специальной самоклеющейся бумаге, на лазерном принтере. Делаю я это в копировальном центре, так как ни такой бумаги, ни цветного лазерного принтера у меня нет. Далее я просто снимаю защитную пленку и приклеиваю «клавиши» к сенсорной панели.

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

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

Если использовать тонкий фольгированный текстолит и есть возможность заламинировать плату в пластик (как это предложил elektromonstr) получиться вообще не убиваемая клавиатура!

Изготовление сенсорной панели


Если кому лениво рисовать самому клавиши – я тут набросал несколько вариантов рисунков кейпадов — просто выберите более подходящий.

Рисунки лицевых пенелей кейпадов
Рисунки сделаны в Ворде, поэтому никому не составит труда их подкорректировать под свои нужды.
061-sense-keypad-desine - Несколько картинок сенсорных кейпадов в Word


3. СОВМЕСТНАЯ РАБОТА
Устройство в сборе выглядит следующим образом:

Сенсорный кейпад с драйвером

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

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

Лицевая панель прибора с сенсорной панелью

Замечательным свойством сенсорной панели является то, что дизайн кнопок ни чем не ограничен и зависит только от Вашей фантазии. Посмотрите, как преобразится наш прибор если немного пофантазировать:

Преображенный прибор

А если пофантазировать еще чуть-чуть – получим оригинальный, не на что не похожий прибор:

Фантастическая панель

Драйвер собран, собрана сенсорная панель.
Осталось только посмотреть как это все работает вместе:

http://www.youtube.com/watch?v=ynS1z5Rf6Xc

Для проверки работы сенсорной панели через COM порт (или преобразователь USB to UART) подойдет обычная программа терминала.
Terminal v1.0 - Программа для работы с COM портом
Для упрощения процесса проверки я набросал небольшую программку. Она очень проста и предназначена специально для проверки этого кейпада.
TouchMe-Tester - Программа для проверки сенсорного кейпада

Выводы.
Сенсорная панель вышла простой и доступной. Благодаря автоподстройке сенсорных каналов драйвера нет ограничения в конфигурации сенсорных площадок, что позволяет гибко использовать драйвер для различных нужд. По UART выдаются однобайтовые (односимвольные) сообщения, на приемной стороне нет необходимости в создании буфера (принялся символ — вызвалось прерывание — прямо в прерывании выполнилось нужное действие или установился флаг). Есть возможность подстройки панели «на лету» по UART.

РАБОТА НАД ОШИБКАМИ.
Данное устройство совсем новое и мною толком не тестировалась, а значит будут вылазить  какие-то баги (некоторые узкие места я уже вижу). Так как данный принцип и плата Touch Me driver`a будут дальше использоваться во многих устройствах хотелось-бы максимально обкатать плату и прошивку сейчас, чтобы потом было меньше ошибок. Поэтому буду благодарен за любые (особенно критические) замечания и предложения по конструкции и работе устройства. Если все получилось — тоже пишите, не стесняйтесь. Вместе оно у нас заработает как надо! 🙂


Файлы к статье:
061-T2313-keypad-sense v1.0 - Прошивка драйвера "Touch Me" для управления сенсорной панелью (Keypad)
061-T2313-keypad-sense v2.0 - Прошивка "Touch Me driver" для сенсорной панели (Keypad) 
061-fuse-keypad-sense - Фьюз-биты для прошивки "Touch Me" драйвера Keypad-панели
061-sense-keypad-plate - Рисунок печатной платы сенсорной панели
061-sense-keypad-desine - Несколько картинок сенсорных кейпадов в Word
Terminal v1.0 - Программа для работы с COM портом
TouchMe-Tester - Программа для проверки сенсорного кейпада
061-KeyPadSence-ABProg - Исходник программы в Algorithm Builder`е
061-KeyPadSence-ABProg v2.0 - Исходник программы в Algorithm Builder`е

Ссылки:
Как сделать драйвер «Touch Me driver»


(Visited 5 829 times, 1 visits today)

061-Простая сенсорная панель (Keypad).: 157 комментариев

  1. Лавич

    Очень хорошо написано — все понятно и с картинками 🙂
    Возможность самостоятельного изготовления любой лицевой панели по своим оригинальным задумкам просто завораживает!
    Глядя на sense-panel-desine2 подумалось: «А ведь действительно, можно же так даже энкодер сделать!» Подписался на рассылку нововстей, жду следующую статью по нему 😉
    На плате драйвера присутствует светодиод подсветки, в связи с чем возник вопрос: а как для такой панели можно подсветку клавиатуры организовать?

  2. GetChiper Автор записи

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

  3. roshchin

    Для всех начинающих программировать микроконтроллеры (например для меня) было бы очень приятно и полезно поизучать исходники прошивок в Algorithm Builder. Если конечно это не считается НОУ-ХАУ. Спасибо!

  4. vuln

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

  5. GetChiper Автор записи

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

    В общем, как говорится, выкладываю «как есть» — не пинайте сильно 🙂

    P.S. У Элм Чана (смотреть в ссылках) есть исходники на Си — можно позырить там.

  6. roshchin

    «Там нет ничего сложного и секретного», хочу когда-нибудь так же сказать про программирование. Будем учиться, хорошо что есть у кого. Рад что наткнулся на ваш сайт.

  7. sheva_s

    Привет понравился сайт автору РЕСПЕКТ И УВАЖУХА. Жду новых проектов. Понравилась статья про сенсорную клавиатуру , хотелось бы узнать больше подробностей про алгоритм программы с каким интервалом измеряет таймер время при проверки кнопки ? за сколько времени увеличивается потенциал на выводе от 0 до лог 1, сам учусь писать на СИ для МК. хочу попробовать сделать такую клавиатуру.

  8. GetChiper Автор записи

    Так как данное устройство ничем другим, кроме как клавиатурой, не занимается, а опрос сенсорных каналов довольно ресурсоемкий процесс, сканирование производится в основном цикле. Частота сканирования всех сенсорных каналов лежит в пределах 10-20 Гц. (чаще просто не нужно). Таймеры задействованы на другие нужды — свет, звук.
    Потенциал от нуля до единицы увеличивается за 30-90 мкС (при прикосновении к сенсору время увеличивается где то на 30%). Значения времени варьируются в широких пределах, так как на это влияют внутренние цепи порта ввода-вывода микроконтроллера, конфигурация сенсорной площадки, соединительных дорожек и применяемые материалы (даже «голые» ножки портов ввода-вывода дают разное время). Вот поэтому автоподстройка является необходимым условием для данного устройства.

  9. Ghjuhfvvf

    Здраствуйте! Собрал уже 2 штуки … Не работает …(((( В чем заключается автоподстройка … Горит только левый светодиод и никаких реакций (ни из программы TouchMe Tester, ни терминал, ни светодиоды ….). Программу залил и выставил Fuse правильно, неоднократно проверил … Случайно автоподстройка заключается не в изменении регистра сравнения таймера?

  10. Ghjuhfvvf

    Случайно нет …))))

  11. GetChiper Автор записи

    Сейчас будем разбираться.
    Первым делом отключаем сенсорную панель. Далее подключаем устройство по UART к компьютеру. Запускаем программу-терминал (возьмите ту программу с которой привыкли работать) и пробуем по COM порту посылать символы «L» и «Н» — должен переключаться светодиод шифт-режима. Это ни как не связано с сенсорными каналами и должно работать железно.

  12. Ghjuhfvvf

    Сделал как указано выше … не работает …((((
    Прошивал STK200 через SinaProg … UART выводы платы соединил с выводами Com порта компа напрямую (RxD платы -> TxD компа, TxD платы -> RxD компа, Gnd -> Gnd), т.к. преобразователя USB-COM у меня нет. Предварительно проверил com, соединив RxD и TxD перемычкой. Тест проводил Вашей прогой … Com порт работает. Схему травил Вашу …

  13. GetChiper Автор записи

    Это Вы погорячились соединять напрямую UART c COM-портом. На COM-порте уровни напряжений -12 +12 вольт. Боюсь, если не сгорел микроконтроллер, то линии UART точно :(.
    Вот по этой ссылке http://www.getchip.net/posts/022-testovaya-proshivka-dlya-avr-mikrokontrollerov-proverka-rabotosposobnosti-portov/ есть тестовые прошивки — попробуйте, скажете, что получилось.

  14. Ghjuhfvvf

    Ну я и идиот (пинать не сильно — начинающий)… Завтра через max232 сделаю или конвертер уровней … )))

  15. Ghjuhfvvf

    PD0 и PD1 (RXD и TXD не выдержали издевательств )еле-еле моргают по сравнению с другими … ((((. Итак, 2 ATTiny2313 — спалил UART, 3 — неправильная прошивка Fuse, даже не откликаются … Где-то тут про Doctora Fuse что-то говорилось …. ))) Что ж, приступим … хорошо что Mega8 еще живы )))

  16. sheva_s

    GetChiper подскажите на каком принципе построена автоподстройка что и как она делает ?

  17. Hryam

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

  18. GetChiper Автор записи

    Да, все именно так. И это «НО» то-же есть :).
    Я уже вижу несколько узких мест (и это тоже) — будет улучшенная версия прошивки.
    Касательно самонастройки планирую ее делать по команде UART с записью значений в EEPROM. При старте микроконтроллера будет проверятся есть ли запись в EEPROM, если есть значения будут браться оттуда.

  19. sergey

    Здравствуйте GetChiper! Сайт класный так держать!
    Скажите какую максимальную толщину диэлектрика пробовали перед сенсорами? сильно ли это влияет на чувствительность?

  20. GetChiper Автор записи

    Нормально работают клавиши, по моим замерам, до 0.2 мм (листов 5-6 бумаги плотностью 80). Можно в программе уменьшить порог срабатывания, но это ухудшит помехозащищенность.

  21. GetChiper Автор записи

    Обновил прошивку до v2.0!

    Каналы стали немного чувствительней.
    Появились две новых команды для управления по UART:
    — S – сохранение настроек чувствительности каналов в EEPROM;
    — R – возврат автоматической настройки каналов при старте.
    Появилась возможность получить по UART информацию о работоспособности каналов (в статье подробно описано).

  22. ankar

    Да. переход на новый хостинг явно сказывается. Еле зашел. Ну это так к слову. А вопрос такого порядка. Будет ли в планах возможность с помощью кейрада управлять ногами тиньки или лучше 8 меги. У нас тинек нет а 8 в смд навалом?. А сайт о-о-отличный. Если бы исходники в в винавре то вообще класс. Но это уже ,наверное, занадто.

  23. ankar

    Извиняюсь. Открылась полностью статья и я нашел ответы на свои вопросы. Еще раз Извините.

  24. GetChiper Автор записи

    ankar :

    Будет ли в планах возможность с помощью кейрада управлять ногами тиньки или лучше 8 меги.

    Да, скоро будет устройство (вернее прошивка для платы Touch Me driver) напрямую дрыгающее ногами микроконтроллера. Статья по подключению нагрузки к микроконтроллеру частично для этого устройства и писалась.

    ankar :

    У нас тинек нет а 8 в смд навалом?

    Записываю в планы плату на меге в SMD.

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

  25. ankar

    Спасибо за быстрый ответ. Буду делать , а там отпишусь.

  26. vuln

    еще раз спасибо за статью
    решил ваш исходный код применить к моему проектику на attiny13a, нужно всего одно сенсорная «кнопка» чтоб при касании загорелся светодиод на другой ножке.
    Я только начинаю учиться программировать AB прошу сильно не пинать если задам глупый вопрос
    как я понимаю в макросе Get_Sense идет счет пока на ножке появиться 1
    и число опроса пишется регистр Accum, а дальше в программе работа ведется с регистром Accum_FR, я не нашел место где копируется значение Accum в Accum_FR или че то путаю?

  27. GetChiper Автор записи

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

    Макрос Get_Sense_N — получает чувствительность канала N.
    далее макрос Test_Line(N) — сравнивает полученную чувствительность с референтным (полученным при автонастройке) значением и по результату устанавливает ключ-бит нажатой клавиши соответствующего канала Key_N (1-нажато, 0-не нажато). Вот с этим ключ-битом проще всего работать, думаю нет смысла глубоко лазить в код (ну разве-что разобраться).

    P.S. Немного намудрил с макросами, но это для того, чтобы легче было портировать на другие микроконтроллеры (нужный порт для канала прописывается только в макросах).

  28. Ghjuhfvvf

    УРА! Заработало! С 3 раза, так и не понял в чем накосячил в первых 2-х…
    GetChiper, спасибо …

  29. GetChiper Автор записи

    Скоро выложу большой проект на базе этой платки, попрошу протестировать, если Вы не против.

  30. Ghjuhfvvf

    Я только за … с исходниками желательно, изучаем-с…

  31. GetChiper Автор записи

    Ghjuhfvvf :

    УРА! Заработало! С 3 раза, так и не понял в чем накосячил в первых 2-х…
    GetChiper, спасибо …

    Ghjuhfvvf скиньте мне на мыло (в закладке «о проекте») как у Вас оно работает. Глюки, косяки и т.д. У меня есть наброски следующих проектов сенсорных устройств, но хочется их уже выложить с корректировкой недоработок.

  32. vuln

    Правда я проект переделывал под attiny13a но исходник сильно не менял, заметил при работе одну особенность, пробовал питать схему от двух источников — первый от китайского не стабилизированного блока питания через 78L05 работал нестабильно, ставил конденсатор на большую емкость чуть лучше но не намного, питал через импульс ник работает очень хорошо. чем это связано — так и не понял….?

  33. Ghjuhfvvf

    А теперь ничего не глючит … Вторую плату протер спиртом (удалил остатки ЛТИ) и она заработала. К тому же, видимо, не работала она еще и из-за того, что не все линии задействовал (имеется ввиду не все резисторы впаял на 1МОм)… Так что у меня теперь 2 платы ))) В случае каких-либо сбоев обязательно оповещу … Еще раз спасибо

  34. vuln

    небольшой вопросик… реализована ли в программе обновление емкости контактной площадки который принимаем за константу? если я правильно понимаю емкость с пластин снимается в начале программы и прибавляем к нему 1/3 часть саму себя при дальнейшим обработке не обновляется

  35. GetChiper Автор записи

    vuln :

    первый от китайского не стабилизированного блока питания через 78L05 работал нестабильно

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

    Ghjuhfvvf :

    Вторую плату протер спиртом (удалил остатки ЛТИ) и она заработала. К тому же, видимо, не работала она еще и из-за того, что не все линии задействовал (имеется ввиду не все резисторы впаял на 1МОм)

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

    vuln :

    небольшой вопросик… реализована ли в программе обновление емкости контактной площадки который принимаем за константу? если я правильно понимаю емкость с пластин снимается в начале программы и прибавляем к нему 1/3 часть саму себя при дальнейшим обработке не обновляется

    Да, самонастройка производиться только после подачи питания. Я уже размышлял над постоянной коррекцией чувствительности — вношу в список изменений следующей версии — спасибо.
    (Наверно стоит сделать включение варианта автоподстройки по команде UART?)

  36. vuln

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

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

  37. GetChiper Автор записи

    Идея понятна — буду на этот счет что-то думать.

  38. u571

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

  39. GetChiper Автор записи

    Еже почти готово — только прошивку подкорректировать нужно.

  40. Deniska

    Нипайму…
    Собрал: клавиатура по приложенной разводке, сверху офисная бумага с распечаткой и закатал ламинатом ~80u, драйвер — развёл и сделал свою на SMD-элементах.
    Промыл, включил: идёт двойной писк (я так понимаю, означает, что всё в порядке), но через небольшую паузу (~300msec) заново. И так лежит у меня этот драйвер и весь вечер только пищит… LED (который подсветка) — горит очень слабо (~10%). На кнопки, естественно, не реагирует. Это было по прошивке v2.
    По v1 — при включении писк одиночный, LED тоже слабо светит, но если снять питание и почти сразу воткнуть обратно — то бывает что загорается в полную силу и идёт непрерывный писк, который, при касании выводов контроллера, пропадает и LED плавно затухает до тех же ~10%.
    Поведение платы что с подключенной клавиатурой, что с отключенной — не меняется.
    Отличие номиналов только в резисторе, который идёт с питания на мегаомные резисторы (вместо 300 Ом стоит 120 Ом). Клавиатура подключается через разъёмы напрямую, без шлейфа.
    Что я мог не так сделать?

  41. Deniska

    Да, по UART посмотреть не могу, МАХа пока нету, завтра попробую.

  42. GetChiper Автор записи

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

  43. Deniska

    Поменял контроллер — заработало. Не ожидал )
    Есть небольшие проблемы по работе (не у всех кнопок нормально работает автоповтор). Завтра промыть повторно попробую, расскажу.

  44. 4ester

    Не поделитесь названием программы которой рисовали панели?

  45. GetChiper Автор записи

    Конечно поделюсь: Microsoft Office Word 2003

  46. r-sekret

    Девайс занятный. Вот бы еще сделать подсветку кнопок. Хочу взять этот принцип за основу. Мне по диплому надо пульт управления сделать. Принцип в том: нажал на кнопку (включилась команда) — она загорелась, второй раз нажал (команда выключилась), кнопка перестает гореть. Как это можно реализовать? Какие Ваши предложения? Может проще взять обычные кнопки?
    Жду ответов с нетерпением. (Защита диплома на носу)

  47. nvhleb

    Здравствуйте, GetChiper.

    Огромное спасибо за интересную информацию и детальный подход к написанию статей! 🙂 Не могли бы Вы подсказать следующий момент: на сколько стабильно работают сенсорные площадки через оргстекло толщиной 4-5мм?

  48. GetChiper Автор записи

    @r-sekret
    Доделаю текущий проект и тогда сделаю несколько вариантов сенсорного переключателя.

    @nvhleb
    Толщина 4-5мм — это слишком много для сенсоров. Если увеличить чувствительность на максимум может чего и получиться, но будет куча ложных срабатываний. Лучше подумать как сенсоры вынести НА оргстекло.

  49. r-sekret

    А если вехняя крышка из пластмассы корпуса 2 мм? кнопки будут работать? как можно плату с кнопками на верхнию панель корпуса сделать?

  50. GetChiper Автор записи

    2 мм — это многовато — лучше так не делать. Попробуй вытравить сенсоры на тонком текстолите и приклеить на верхнюю панель. Или всю верхнюю панель сделать из текстолита.

Добавить комментарий