Модуль сенсорной клавиатуры 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)

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

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

TP3TP4Одна группа (16 кнопок): фиксируется нажатие только одной кнопки
11
101-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки
2-я группа: E5-E8, E13-E16 – фиксация нажатия одной кнопки
011-я группа: E1-E4, E9-E12 – фиксация нажатия одной кнопки
2-я группа: E5-E8, E13-E16 – фиксация нажатия нескольких кнопок
00Одна группа (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, макетная плата

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

У этой записи 18 комментариев

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

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

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

    1. Приветствую, рад что статья оказалось полезной, про модификации возьму на заметку, минимальный период тактирования исходя из даташита получается 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, но не сильно: китайцы и не такое пишут. А ларчик-то просто открывался.

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

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

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

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

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

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

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

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

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

Имя (обязательно)Email (обязательно)Веб-сайт

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