Я переписал программное обеспечение МК, чтобы повысить помехоустойчивость и настраиваемость устройства.
Коврик описан здесь
Скачать версию прошивки 20090312 (проект AVR Studio)
Изменения в версии 20090312:
- Введен гистерезис.
- Настройки порога срабатывания и гистерезиса индивидуальны для каждой кнопки.
- Делитель таймера стала 256 (был 1024), повысилась скорость срабатывания в 2 раза и точность замера.
За прошедшее время выяснилось, что у некоторых людей коврик откровенно глючит, а других то одни, то другие кнопки невозможно подстроить, а индивидуальной настройки не было.
Причиной глюков, по результатам исследования, стала разность потенциалов между головой и ногами. В частности, если вы сбираете пользоваться ковриком под люминесцентной лампой, то он работать не будет. Я попробовал добавить заземляющую поверхность из фольги под коврик и заземлить на контакт GND. Это помогло, но совсем чуть-чуть. Идеально помогает следующая процедура: присоединить провод к контакту GND и взять его в руку. Это неудобно, но помогает на 100%. Других способов победить эту проблему не найдено.
Касательно настройки кнопок. Действительно, один параметр чувствительности для всех кнопок оказался не эффективным, так как физически и электрически они сильно отличаются. Поэтому вместо константы я ввел массив из шести элементов, устанавливающий порог срабатывания для каждой кнопки отдельно. Аналогично был добавлен массив значений гистерезиса.
Однако, это означает, что просто собрать, залить прошивку и пользоваться не получится. Надо обязательно подобрать значение порога и гистерезиса для каждой кнопки.
Как работают порог срабатывания и гистерезис
Например, есть порог срабатывания 10 и гистерезис 20. Пусть в ненажатом состоянии кнопка имеет значение 1000. Тогда, когда значение на кнопке станет больше 1000+1000/10=1100, то кнопка будет считаться нажатой. И она будет считаться нажатой, пока значение на ней не упадет менее 1000+1000/20=1050.
Как настроить кнопки
Главное не торопиться и не лениться. Настраивать лучше всего по одной. Коврик должен лежать на абсолютно плоской поверхности, его края нигде не должно образовывать зазор с полом. Начните со значения порога 10 и значение гистерезиса 20. Станьте в центр до начал калибровки. После окончания калибровки медленно сверху подносите ногу к настраиваемой кнопе. Ваша цель заключается в том, чтобы кнопка сработала только тогда, когда нога полностью стоит на ней, а не висит на расстоянии от поверхности в воздухе. Если кнопка срабатывает, когда нога еще в воздухе, то уменьшите значение порога. Если же кнопка не срабатывает, даже когда нога стоит (без давления), то увеличьте это значение. Разумный диапазон значения порога «SENS» от 5 до 20.
После того, как вы добились срабатывания в нужный момент, поставьте ногу на кнопку. Она не должна быстро моргать, а должно стабильно гореть. Допускается периодическое мигание (1 раз в 5-10 секунд), так как вообще они не рассчитаны на статический режим работы. Если она моргает слишком часто, то надо увеличить значение гистерезиса. Если же значение гистерезиса слишком большое, то кнопка или вообще не будет потухать или будет потухать только, когда нога поднята высоко над кнопкой. В этом случае значение гистерезиса надо увеличить.
Диагональные кнопки не имеют светодиодов, поэтому их надо настраивать через панель управления Windows.
Себе пожелаю удачи в настройке, а Вам - удачи в ремонте!
Еще один момент, проклейка фольги снизу с соединением на GND хотя и защищает частично от помех, но делает работу устройства более нестабильной.