Модуль сенсорной клавиатуры TTP229

Модуль сенсорной клавиатуры TTP229
Просматривая в сети различные электронные модули, меня заинтересовал недорогой модуль сенсорной клавиатуры на микросхеме TTP229, и я решил приобрести его. Микросхема имеет 16 входов для подключения сенсорных электродов (кнопок), соответственно на плате модуля имеются 16 сенсорных квадратных площадок с номерами 1-16. Также на плате имеются контактные площадки для перемычек, с помощью которых можно настраивать режим работы клавиатуры. Микросхема TTP229 передает данные по двухпроводной линии, протокол связи схож с последовательным интерфейсом SPI, кроме этого имеются 8 выходных буферов, с возможностью выбора типа логического выхода. Микросхема обладает низким энергопотреблением, всего 2-9 мкА в спящем режиме.

На следующей картинке представлена схема модуля сенсорной клавиатуры:
Схема клавиатуры TTP229
Обвязка микросхемы минимальная, сенсорные кнопки E1-E16 подключаются непосредственно к выводам микросхемы. С помощью конденсаторов CJ0-CJ3, CJWA, CJWB можно регулировать чувствительность сенсорных кнопок, чем больше емкость конденсаторов, тем ниже чувствительность, кроме этого чувствительность зависит от размера самих кнопок. Рекомендуемая емкость конденсаторов находится в пределах 1-50 пФ.

Линии микросхемы TP0-TP7 играют двойную роль, кроме отслеживания состояния сенсорных кнопок, можно настраивать режим работы клавиатуры с помощью перемычек JP1-JP8. Если перемычка установлена, то линия микросхемы подтягивается к общему проводу через высокоомный резистор, на входе устанавливается низкий логический уровень “0”, при отсутствии перемычки высокий уровень “1”. Ниже в таблице приведены основные режимы работы:

Вывод микросхемы Состояние вывода Описание
TP0
(перемычка JP1)

TP1
(перемычка JP2)

TP0 TP1 Задействовано 8 выходных буферов: обычный логический выход, активный логический уровень – высокий.
Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – низкий.
1 1
1 0 Задействовано 8 выходных буферов: обычный логический выход, активный логический уровень – низкий.
Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – высокий.
0 1 Задействовано 8 выходных буферов: выход открытый сток с подтяжкой к 1, активный логический уровень – низкий.
Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – низкий.
0 0 Задействовано 8 выходных буферов: выход открытый сток с подтяжкой к 0, активный логический уровень – высокий.
Последовательный интерфейс передачи данных: обычный логический выход, активный логический уровень – высокий.
TP2
(перемычка JP3)
1 Задействовано 8 кнопок (E1-E8) и выходные буферы
0 Задействовано 16 кнопок (E1-E16)
TP3
(перемычка JP4)

TP4
(перемычка JP5)

TP3 TP4 Одна группа (16 кнопок): фиксируется нажатие только одной кнопки
1 1
1 0 1-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки
2-я группа: E5-E8, E13-E16 – фиксация нажатия одной кнопки
0 1 1-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки
2-я группа: E5-E8, E13-E16 – фиксация нажатия нескольких кнопок
0 0 Одна группа (16 кнопок): фиксируется нажатие нескольких кнопок
TP5
(перемычка JP6)
1 Частота опроса кнопок в спящем режиме равна 8 Гц
0 Частота опроса кнопок в спящем режиме равна 64 Гц
TP6
(перемычка JP7)
1 Длительность опроса кнопок в спящем режиме равна 4 мс
0 Длительность опроса кнопок в спящем режиме равна 2мс
TP7
(перемычка JP8)
1 Защита от “залипания” кнопки отключена
0 Защита от “залипания” кнопки включена: максимальное время 80 секунд

Если на линии TP2 высокий логический уровень (TP2=1), то активно 8 сенсорных кнопок (на схеме E1-E8), остальные 8 линий микросхемы TP8-TP15 перенастраиваются на выход (Out1-Out8). Логический уровень на выходных линиях зависит от состояния сенсорных кнопок, 1-я кнопка соответствует выходу Out1, 2-я кнопка выходу Out2 и т.д., также данные о состоянии кнопок передаются по последовательному интерфейсу. В режиме 16 активных кнопок (TP2=0), линии микросхемы TP8-TP15 перенастраиваются на вход. В этом случае информация о состоянии кнопок передается только по последовательному интерфейсу. Таким образом, линии TP8-TP15 могут отслеживать состояние сенсорных кнопок E9-E16, или выступать в качестве выходных буферов.

Линия TP0 отвечает за тип логического выхода, значению TP0=1 соответствует обычный логический выход, если значение равно 0, то получаем выход с открытым стоком. От состояния линии TP1 зависит активный уровень выходных буферов и последовательного интерфейса. С помощью линий TP3, TP4 можно установить два режима сканирования кнопок: фиксация “нажатия” только одной кнопки либо сразу нескольких кнопок, это может быть удобно, когда необходимо отслеживать “нажатие” какой-либо комбинации кнопок. Линии TP5, TP6 отвечают за частоту и длительность сканирования кнопок в спящем режиме. В микросхеме имеется функция защиты от “залипания” кнопок, например в случае попадания на кнопку постороннего предмета, произойдет срабатывание, и если защита включена, через 80 секунд кнопка заново калибруется и возвращается в отжатое состояние. За эту функцию отвечает линия TP7.

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

На следующей картинке приведена диаграмма передачи данных по последовательному интерфейсу с временными характеристиками:
Диаграмма последовательного порта TTP229
Линия SCL предназначена для тактирования внешним управляющим устройством, на линию SDO микросхема TTP229 выдает данные о состоянии кнопок. Когда микросхема фиксирует “нажатие” кнопки, она выдает на линию сигнал DV длительностью 93 мкс, который можно использовать для прерывания в микроконтроллере. Далее при наличии сигнала тактирования микросхема выдает один или два байта данных о состоянии кнопок (в зависимости от режима работы: 8 или 16 активных кнопок). Как видно полярность сигналов на линиях SCL, SDO зависит от выбора активного логического уровня. Биты D0-D15 отображают состояние кнопок E1-E16. Значение битов зависит от активного уровня, если активный уровень низкий, при “нажатии” кнопки соответствующий бит установится в 0, если кнопка отжата – 1. При высоком активном уровне все наоборот. Частота тактирования может лежать в пределах 1-512 кГц. Если сигнал тактирования отсутствует в течение 2 мс, то последовательный интерфейс возвращается в исходное состояние.

Для примера я подключил сенсорную клавиатуру к микроконтроллеру PIC16F628A, для отображения номера “нажатой” кнопки использовал цифровой индикатор на драйвере MAX7219. Схема подключения представлена ниже:
Подключение клавиатуры TTP229 к микроконтроллеру
Дополнительно к выходным линиям клавиатуры подключил светодиоды HL1-HL8 через резисторы R2-R9. Переключатель SA1 предназначен для выбора режима работы микроконтроллера, прием 8-ми или 16-и байт данных, режим должен соответствовать настройкам сенсорной клавиатуры, (перемычка JP3, 8 или 16 активных кнопок). Необходимо выбрать высокий активный логический уровень для последовательного интерфейса, для выходных буферов – открытый сток с подтяжкой к 0, для этого на клавиатуре необходимо установить перемычки JP1, JP2, остальные перемычки я не устанавливал. В исходном состоянии светодиоды остаются выключенными.

Код программы представлен ниже:

Для линии RB4 микроконтроллера настроено прерывание по изменению уровня сигнала, при возникновении которого вызывается обработчик прерываний, в котором выполняется прием данных от сенсорной клавиатуры, один или два байта в зависимости от состояния переключателя SA1. Далее путем сдвига принятых байтов вычисляется номер “нажатой” кнопки, который сохраняется в регистре knp_kod. После чего происходит выход из обработчика прерываний с установкой флага flag,0. В основной программе по установленному флагу происходит вывод номера кнопки на цифровой индикатор. Сигнал прерывания DV от модуля клавиатуры поступает при каждом изменении состояния кнопок, то есть прикоснулись к кнопке – возникло прерывание, убрали палец – очередное прерывание. Светодиоды HL1-HL8 зажигаются при прикосновении к кнопкам в режиме TP2=1, когда задействовано 8 кнопок.

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

Внешний вид клавиатуры TTP229Клавиатура TTP229, макетная плата

На следующем видеоролике можно увидеть сенсорную клавиатуру в действии:
Оцените статью
Добавить комментарий

  1. Сергей

    Какое-ж Вам ОГРОМНОЕ спасибо за эту статью! Слов нет!

    Ответить
    1. admin автор

      Рад что вам понравилась статья)

      Ответить
  2. Тт

    Хорошая статья спасибо

    Ответить
  3. Александр

    Добрый день! Большое спасибо за информацию.
    Небольшое уточнение. TTP229 бывают разных модификаций BSF и LSF. Они не принципиально, но отличаются и выводами и функциями. В статье рассмотрена BSF.
    Нет нужды делать задержки при формировании тактовых импульсов на линии SСL. Достаточно 2мкс.
    Буквально. BSF SCL; BCF SCL вполне понятный импульс такта для микросхемы.

    Ответить
    1. admin автор

      Приветствую, рад что статья оказалось полезной, про модификации возьму на заметку, минимальный период тактирования исходя из даташита получается 1/512000=1,9 мкс, так что да, должно работать, я просто не стал работать на крайних пределах, опасаясь неработоспособности схемы.

      Ответить
    2. Олег

      отличие TTP229 BSF и LSF как раз таки принципиально (для программирования)
      (не считая отличия в распиновке)
      в LSF версии (более новой) есть I2C и соотв. выводы SDA SCL и адрес
      и можно использовать аппаратный I2C(TWI) и соотв. повешать на одну шину с другими датчиками
      в BSF версии (в синих модулях) двухпроводный интерфейс Не I2C выводы SDO SCL
      т.е. там нет адреса и выдачи “Асков”
      вот пример модуля с I2C (не реклама)
      https://ru.aliexpress.com/store/product/16-TTP229-I2C/1950989_32672496161.html?spm=a2g0v.12010615.0.0.73dbec4daOeK7a

      Ответить
      1. Алексей

        Ох, спасибо! Я уже весь интернет перерыл, выходы фиксируют нажатия, а по iic ничего не получить. Уже вторую клавиатуру купил, думал, брак. А оно вон оно как… Смутила, конечно, надпись sdo вместо sda, но не сильно: китайцы и не такое пишут. А ларчик-то просто открывался.

        Ответить
  4. Александр

    Могу скинуть схемы этих микросхем и скриншот работы микросхемы в анализаторе

    Ответить
    1. admin автор

      Скидывайте на почту, не помешает.

      Ответить
  5. Александр

    Отправил

    Ответить
  6. Maddy

    sir can you please give me the connection diagram in english version so that i can use it for PIC16f676 version and also code

    Ответить
  7. david

    здравствуйте,
    прежде большое спасибо за статью.
    я видел на алибаба такой же модуль с тем же названием ,но без кнопок(вот ссылка)
    https://ru.aliexpress.com/store/product/16-TTP229-I2C/1950989_32672496161.html?spm=a2g0v.12010108.1000016/B.1.5da67e87PKpGqJ&isOrigTitle=true
    скажите пожалуйста, это только модуль и к нему нужно подключить кнопки или они с другой стороны тоже? хотя я в этом сомневаюсь.

    Ответить
    1. admin автор

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

      Ответить
  8. david

    а модуль MPR121 не будете рассматривать?

    Ответить
  9. david

    вновь и вновь вам огромное спасибо за ваш труд

    Ответить
  10. Алексей

    А просто в процессе работы данные не получить? Я имею в виду, не по прерыванию, а по настроению?

    Ответить
  11. Олег

    можно

    Ответить
  12. OM

    Добрый день
    Какая обвязка нужна для TTP229-LSF если использовать голую микросхему и читать ее 16 входов по I2C?
    Где можно купить микруху?
    Спасибо

    Ответить