Тактилни бутони с памет

    Тази конструкция произлезе от идея на колега за преработка на лицев панел на готова конструкция - замяна на няколко П2К/Изостат превключвателя (със зависими и независими състояния) с нови миниатюрни, тактилни бутони, вкл. памет (запомняне на състоянието при превключване и последващо включване при подаване на захранването).

    1. Тактилни бутони със запис на състоянието във външен EEPROM (24C02):

    Схемата е под управлението на Arduino Nano. Без промяна работи с Arduino Uno или Arduino Pro Mini.

    Може да се използва ИС MCP23008 (8 bit), MCP23017 (16 bit), PCF8574 (8 bit), PCF8575 (16 bit) със съответната промяна на кода за обслужване на съответната ИС.

    В други мои конструкции поради моя неудовлетвореност от работата се въздържам засега от използване на сравнително евтините ИС 74HC595.

    Предвид ограничения брой входове/изходи на Arduino използвам любимия външен 16 битов разширител (Expander) по I2C MCP23027, като така вариантите са (почти) без ограничение по брой на изпълнителните вериги (max 8 ИС * 16 бр.).

    За конкретния брой превключватели ми е достатъчна една ИС MCP23017.

    Не използвам вътрешната енергонезависима памет поради вероятните чести записи и последвалото бързо дефектиране на микропроконтролерната част. EEPROM 24C02 е евтина. На цокъл за ИС лесно се сменя. Като компонент, демонтиран от дефектирала техника много често се среща. С 1М до 4М брой цикли на запис (с измерени нееднократно цикли при 20-25 гр. C от 5М, до 35-80М!) е срещу 100k цикли на вътрешния EEPROM.

    Поради последната причина, за да удължа вероятния живот на конструкцията, записвам състоянието на всеки превключвател в отделна клетка от паметта, а беше възможно това да стане само в една-единствена клетка.

    Следващата стъпка като вариант е запис в паметта само при изключване на захранващото напрежение, но не смятам това за необходимо на този етап.

arduino_tactile_sw_ext_mem [spl7,gif,ino][106kb]

    Кодът на програмата към Arduino няма да описвам. Използваните външни библиотеки за MCP23017 и EEPROM 24C01/02 трябва да са в работната папка на проекта.

    Компонентите са лесно заменими според наличните, напр. EEPROM (след подмяна на използваната библиотека) може да се замени с всяка налична ИС от серията 24CXXX. Използват се само първите (в случая 1 + 4 бр.) клетки.

    При желание Arduino може да се замени с "гол" микроконтролер ATMEGA8, ATMEGA168, ATMEGA328. 

    Конструкцията не е финална - броят на комутационните вериги ще се изяснява допълнително. Тук съм споделил само идеята си, която може да допълните за конкретно, друго приложение.

    Като първа идея ми е добавяне на дистанционно управление. С промяна на кода за една активна верига, с подходящи релета конструкцията може да се превърне в селектор на входовете в аудио усилвател или др. приложение. Добавянето на радио-управляемо блокче и/или WEB интерфейс увеличава до безкрайност областите на приложение.

    Забелязани недостатъци: При всяко стартиране на захранващото напрежение, преди да се подаде управление от Arduino, ИС MCP23017 се установява в състояние "0" на всички изходи за много кратко време (видимо е на видеото като проблясване заедно на всички светодиоди) . За повечето управлявани устройства това не е проблем, но е добре да се има предвид.
 

       2. Тактилни бутони със запис на състоянието във вътрешен EEPROM (Arduino):

    В коментар с приятели върху посочената конструкция установих, че вариантът със запомняне на състоянията на бутоните във вътрешната памет на микроконтролера (в случая: ATMEGA328) в Arduino е повече желан, отколкото във външен EEPROM.

    Доводите "просто и евтино" надделяват пред "защитата" ми за "надеждност и дълговечност" на бъдещата конструкция, където тактилните бутони ще се приложат (виж "EEPROM endurance").

    Като вариант добавям вариант на конструкцията със запис на състоянията във вътрешния EEPROM на Arduino.

arduino_tactile_sw_int_mem [spl7,gif,pdf,ino,h,cpp][63kb]


    До следващата конструкция. 73!
 

     Използвани материали:

    1. GitHub.com: Library for the MCP23017 I2c Port Expander
    2. Idreammicro-arduino - Revision 24

LZ2WSG, KN34PC
11 октомври 2016 година