Excel в помощь…

Казалось, бы что может быть проще, чем обработать кнопку в Ардуино. А если кнопок 10 штук?  Возьмем 10 контактов Ардуино? Да еще 10 проводов тащить, через весь корпус устройства. 🙁 нет, это не наш метод.

Понадобилось мне “обрабатывать” галетный переключатель, на 10 положений.

Цель – по положению переключателя, определить используемый самодельным трансивером диапазон.

Ну что может быть проще.  Добавляем “подтягивающий” резистор в 10 кОм на +5 вольт питания, на галетный переключатель припаиваем сопротивления по 1 кОм и схема готова. Похожий вариант я уже рассматривал для клавиатуры в 20 кнопок. Там был предложен и вариант скетча с массивом измеряемых аналоговым входом значений. Вполне работоспособный вариант, но я решил попробовать упростить и его.

Для этого, я составил в MS Excel вот такую табличку.

Можно сказать, что я описал математическую модель нашего переключателя диапазонов. Теперь попробуем вывести математическую формулу, для описания нашего устройства. Для этого вставляем точечную диаграмму  и добавляем к ней линию тренда. Уравнение линии тренда берем полиноминальным и выводим на график.

Вот и готова наша формула, описывающая переключатель диапазонов. Ну это все теория, а для проверки практикой, я написал вот такой скетч.

Результаты, как видим, вполне ожидаемые, все таки это математика 🙂

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

bb = 0.00003*an*an + 0.0053*an + 1.3;

Вроде ничего сложного, нужно просто пригласить Excel на помощь.

Диапазонов на переключателе может быть и меньше чем 11, формула и в этом случае будет работать. Количество же позиций в сторону увеличения, теоретически можно увеличивать до 15, когда расчетная разность в измеряемых показаниях станет менее 20 единиц. Такой критерий я выбрал из-за погрешности значений самих резисторов, которая может далеко превышать 2%, что сделает невозможным корректное определение положения переключателя.

Так же напомню, что формулу я считал для 11 положений переключателя, для большего количества, наверняка формулу необходимо будет уточнить с помощью MS Excel.

Ну и не забываем, что при переключении возможен “дребезг” контактов, но от него можно защититься, просто анализируя считываемое с аналогового входа значение.  В случае “дребезга”, оно будет близко к максимально возможному – 1023. И такие значения можно не обрабатывать в программе.