Лічильники. Варіант 4 - Енергонезалежний лічильник готової продукції

варіант

Усім доброго. У цій статті ми знайомитимемося з прототипом лічильника готової продукції. У прототипі реалізовано можливість запису підрахованої кількості одиниць продукту в енергонезалежну пам'ять EEPROM. Отже, які компоненти ми використовували у цій реалізації? Давайте перерахуємо їх, це:

  1. За основу взято плату Arduino Nano з чіпом ATMEGA 328P
  2. Допоміжний шилд I/O Wireless Shield for Nano
  3. Акрилові щитки для шилда(Своєрідний корпус)
  4. Дисплей LCD1602 з конвертором I2C
  5. Дві тактові кнопки (Зелена та червона)
  6. З'єднувальні дроти
  7. Коректна бібліотека для роботи з LCD1602 + I2C
  8. Бажання зробити цікаву та корисну річ своїми руками

Взагалі, за основу можна взяти будь-яку плату Arduino, будь то Mega, UNO, та ін. Головна умова – наявність у чіпі енергонезалежної пам'яті EEPROM. Що ще? Думаю, що схема тут не буде зайвою.

варіант

  • Зелений кнопки. Призначена для імітації датчика, через який проходить продукт, що підраховується. Замість кнопки можна використовувати будь-який інший датчик (особисто ми використовували кнопку - просто через брак потрібного нам датчика), будь то індуктивний, ємнісний, або навіть контактний. Все буде залежати від типу продукції, тут необхідно ясно і чітко розуміти як одиниця продукту, що проходить по конвеєру (або виробничої лінії) буде взаємодіяти з датчиком. Також необхідно узгодити вихідний сигнал датчика з платою Arduino.
  • Червоний кнопку. Призначена для запису/обнулення значення кількості одиниць продукту, що пройшов, в енергонезалежну пам'ять EEPROM . Одноразове короткочасне натискання червоної кнопки призводить до запису в пам'ять EEPROM значення минулої кількості одиницьзміну (сумується значення що зберігається у пам'яті EEPROM і значення що пройшли зміну одиниць продукту), одноразове утримання протягом приблизно 10-ти секунд призводить до повного обнулення значення як і пам'яті EEPROM і кількості що пройшли зміну одиниць продукту.
  • Важливим моментом буде включення в програму функції з придушення брязкоту кнопок і фільтру помилкових спрацьовувань, так як кнопки механічні, і за замовчуванням до них додається така нехилий брязкіт контактів. Те ж саме стосується і контактних кінцевих датчиків, все це обладнання дає безліч контактів який доведеться враховувати і відфільтровувати. Але цей момент вже реалізований у лістингу скетчу №2, взагалі тема придушення брязкоту заслуговує на окрему статтю, можливо скоро вона буде випущена.

Принцип роботи прототипу також потрібно розписати детальніше. Отже, після подачі живлення на дисплей буде виведено повідомлення, що пам'ять EEPROM використовується. Це станеться тому що в скетчі передбачено одноразову операцію підготовки ділянки пам'яті EEPROM для зберігання майбутнього значення загальної кількості одиниць продукту. Зазвичай кожна комірка пам'яті EEPROM заповнена значенням 255, це звичайно в тому випадку, якщо пам'ять EEPROM ніколи не використовувалася і не перезаписувалася з конкретною метою. Але якщо у ваших проектах все ж таки колись використовувалася пам'ять EEPROM , нижче наступний скетч допоможе привести її в початковий стан (заповнити всі комірки значенням 255). Тут головне встановити розмір пам'яті EEPROM у рядку #define SIZE_OF_EEPROM

Що ж, досить завантажити цей скетч лише один раз, далі можна завантажувати саме програму лічильника, але до неї ми ще дійдемо нижче. Далі, після повідомлення, що пам'ять EEPROM використовується буде відображення стандартного екрану, здвома рядками:

  • Рядок Shift - Кількість продукції, що пройшла через датчик підрахунку одиниць продукту (у нас цю функцію виконує зелена кнопка)
  • Рядок Total - Загальна кількість усієї продукції, що пройшла через датчик підрахунку одиниць продукту. Числове значення як можна вже здогадатися береться з енергонезалежної ділянки пам'яті EEPROM.

  • Короткими натисканнями на зелену кнопку, можна інкрементувати значення в рядку Shift, це буде значення кількості одиниць продукту, що пройшли через датчик підрахунку за зміну.
  • Записати значення з рядка Shift в енергонезалежну пам'ять EEPROM можна коротким натисканням на червону кнопку, при цьому значення у рядку Total підсумовується значенням у рядку Shift , далі значення у рядку Shift обнулюється.
  • При відключенні/вмиканні живлення значення у рядку Total зберігається( EEPROM як ніяк), якщо значення у рядку Shift не було до цього записано в EEPROM то воно не зберігається.
  • Тривале утримання червоної кнопки (близько 10 секунд) призводить до повного обнулення ділянки пам'яті EEPROM, де зберігається загальне значення підрахованих одиниць минулого продукту. При тривалому утриманні на дисплеї буде відображено відповідне повідомлення з відліком у секундах до обнулення пам'яті EEPROM .
  • Якщо при тривалому утриманні все ж таки відпустити червону кнопку (до того як відлік припиниться) - то операцію обнулення буде скасовано, і на дисплей знову буде виведено рядки Shift і Total з кількістю підрахованих одиниць продукту.

Ну і нарешті, скетч, який був реалізований для даного прототипу, відразу попереджаємо - скетч дуже довгий (ну дуже багато букафф), зібравши прототип можете просто залити скетч в плату Arduino, його можна завантажити архівом тут,або можна просто скопіювати з вікна браузера: