Всем привет. В одном из своих проектов на микроконтроллерах, мне понадобилось реализовать клавиатуру без использования тактовых кнопок. Устройство полностью должно было быть герметичным, безо всяких отверстий. Для реализации данной задачи и была разработана сенсорная клавиатура. Данная клавиатура работает через пластик, стекло и другие материалы, не содержащих металл. Уверенное расстояние срабатывания составляет 4мм. Данное устройство собранно на микроконтроллере avr. С применением микроконтроллера atmega16. Сенсорная клавиатура является полностью законченным устройством. Поскольку эта клавиатура, то для определения нажатой сенсорной кнопки предусмотрен протокол общения с другим микроконтроллером по USART. При нажатии любого сенсора, микроконтроллер передаст по USART код нажатой кнопки. Нажатие сопровождается звуковым сигналом и миганием светодиода. Это если нужно. При длительном без действии клавиатура блокируется. Для более наглядного демонстрирования и возможностей посмотрите видео.
Разберем некоторые моменты.
Указуется сколько задействовано сенсорных кнопок. Для примера 12
#define Koli_Sensorov 12 // количество сенсорных кнопок ( макс. 20)
Программа для микроконтроллера написана таким образом, что вам позволяет разместить сенсоры на любые порты микроконтроллера. Так что вы сами создаете печатную плату с размещенными сенсорными площадками как вам удобно. В программе нужно указать, какие порты микроконтроллера выделены под сенсорные кнопки. Сенсорами является вытравленная площадка 10x10мм.
#define Sensor_1_PORTB 4 // первая сенсорная кнопка, 4 пин на PORTB
#define Kod_Sensora1 1 // в случае нажатия первой сенсорной кнопки код" 1" (макс. 255) передан будет по USART
#define Sensor_2_PORTB 7
#define Kod_Sensora2 2
Порты микроконтроллера перенастроятся программой автоматически. Для калибровки клавиатуры относительно поверхности, нужно на печатной плате установить тактовую кнопку и соответственно прописать в программе. Прописать нужно светодиод и визир для звука, если применяется.
#define Zvyk_PORTB 0 //для звука назначаем порт D, 5 ножка порта микроконтроллера
#define Indikasia_PORTB 1 //куда подключен светодиод ( порт D на 0 пине )
#define Kalibrovka_PORTB 2 //кнопка для калибровки клавиатуры ( PORTC на 0 пине )
Назначаем сенсорную кнопку для снятия блокировки клавиатуры
#define Knopka_Blok Sensor_1_PORTB //снятие блока назначьте любую действующую кнопку
Код сенсорной клавиатуры полностью открыт, для самостоятельного изучения. Думаю сложностей для реализации сенсорной клавиотуры не должно возникнуть. Среда разработки Atmel Studio, язык си.
Питание : +5V
Микроконтроллер : Atmega16
Частота : 16Мгц.
Макс. сенсоров : 20шт.
Настройка USART : 9600бит, 1 стоп бит, 8 бит размер слова.
Собранное устройство.
Программа для микроконтроллера - http://atmel-programme.clan.su/Sensor...
PDF по сборке – http://dfiles.ru/files/gdwoi7st1 для покупной платы.
|