Конструкторське бюро онлайн. Простий лічильник числа оборотів - Конструкції простої складності - Схеми для початківців Простий лічильник імпульсів схема

Часто під час роботи мікроконтролерного пристрою є необхідність відраховувати «антропоморфний» час – скільки часткою секунди світитися світлодіоду, максимальний проміжок часу double-click тощо. буд. Загалом, відраховувати як нано- і мікросекунди, а й десятки мілісекунд, або навіть секунди , хвилини і навіть годинник (боюся сказати про добу…).
У той же час у мікроконтролерах нерідко потрібно одночасно з цим мати справу з мікросекундами - періоди імпульсів, антибразговий очікування і т. п.
Є також пристрої, які працюють безперервно багато годин і навіть добу - авіаційна техніка, автомобільна, свердловинні пристрої (там йдеться іноді про безперервну роботу кілька днів). У цих випадках неприпустиме переповнення таймерів та 8-бітових змінних.
Хотілося б це все об'єднати в одне витончене та універсальне рішення – мати засіб вимірювання часу з точністю до мікросекунди, який не переповнюється кілька днів.
Чому б і ні? Помучився я деякий час та народив рішення для 8-бітних мікроконтролерів AVR. Для цього я задіяв 8-бітний таймер-лічильник та 4-байтну змінну. З PIC-ами та AT89 я зараз не працюю, а з іншими embedded-платформами не дружу. Втім, якщо читачі допоможуть, то зроблю і для них.
Переваги - код максимально повторюваний (я вже п'яте пристрій з ним роблю); простота у роботі (не використовуються переривання для клієнтської частини роботи); клієнтська частина коду умовно-платформно-незалежна; у перериванні – одна операція підсумовування (але, щоправда, для 4-байтної величини); немає зовнішнього пристрою – таймера реального часу.
Недолік я знайшов один – зайнятий один такий корисний і завжди потрібний таймер.
Стаття буде цікава насамперед початківцям – Америку я тут не відкрив.

Теорія

Отже, я маю у своєму розпорядженні пристрій на основі Atmega16A із кварцом 12MHz. Беремо його таймер-лічильник 0. Це восьмирозрядний таймер нам і вистачить. Чому? Вважаємо:
  1. беремо 12 MHz від кварцу та беремо коефіцієнт поділу на 8 – отримуємо частоту 1500 KHz;
  2. беремо режим CTC (скидання при збігу) і ставимо переривання на збіг з 150 – отримуємо частоту спрацьовування переривання 10 KHz;
  3. на цьому самому перериванні інкрементуємо змінну (виходить інкремент кожні 0.1 мілісекунди);
  4. якщо це беззнакова 32-бітна величина, то вона переповниться приблизно після
    • 429496729.6 мілісекунд;
    • 42949.7 секунд;
    • 7158.3 хвилин;
    • 119.3 годин;
    • 4.97 діб.
Іншими словами, таке рішення мені створює таймер з точністю до 0.1 мілісекунди на (майже) 5 діб (треба тут, щоправда, враховувати, що реальні кварці мають похибку – про це далі). А якщо ще аналізувати значення власне таймера 0 – він інкрементується кожні 2/3 мікросекунди – можна одержати лічильник з точністю до 0.67 мікросекунди.
Досить? Мені – за очі. Використовуючи лічильник по 0.1 мілісекунди, я у своїх проектах:
  • вважаю тривалість світіння і пауз між ними світлодіодів;
  • враховую timeouts під час роботи з UART, USB;
  • ставлю всілякі ситуації в тестовому обладнанні – складні просторово-часові комбінації;
  • витримую задані проміжки часу під час опитування АЦП та інших датчиків;
  • повідомляю комп'ютеру час своєї роботи і з заданим інтервалом часу передаю інформацію;
  • з урахуванням лічильника до мікросекунди я здійснюю антибразговий контроль при натисканні клавіш, аналіз імпульсів у протяжних лініях.
І все це спокійно влазить В ОДИН КОНТРОЛЕР ATmega16! Причому це не Асемблер, а міжплатформний Сі! І жодного зовнішнього лічильника реального часу!
Непогано, правда?

Налаштування для AVR

Як це все зробити в AVR?
Насамперед, заводимо зовнішню змінну, яку я називаю «ДеціМілліСекунда»:
// у main.h typedef unsigned long dword; // беззнакове 32-бітне ціле extern volatile dword dmsec; // 0.1msec // в main.c volatile dword dmsec;
Як вірно зауважив @no-smoking, ця змінна має бути volatile, щоб її компілятор не спробував оптимізувати.
Ініціалізацію цієї змінної я роблю у функції:
dmsec = 0;
Далі я задаю режим роботи таймера 0:
//. таймер 0 - 0.1msec Timer0_Mode (TIMER_Mode_CTC | TIMER0_Clk_8);
Timer0_Cntr (149);
Timer_Int (Timer0_Cmp); При цьому в якомусь MCU_init.h оголошую все, що треба:<< 1) // совпадение таймера 0 // . TCCRn #define WGM1 (1 << 3) #define CS1 (1 << 1) // . источник сигнала для таймера 0 #define TIMER0_Clk_8 CS1 // предделитель 8 // . режим работы таймера #define TIMER_Mode_CTC WGM1 // CTC (сброс при совпадении) // . настройка таймера #define Timer_Int(Mode) TIMSK = (Mode) #define Timer0_Mode(Mode) TCCR0 = (Mode) #define Timer0_Cntr(Cntr) OCR0 = (Cntr)
// mcu_init.h #include
//. TIMSK #define Timer0_Cmp (1
Ну і далі, коли можна, дозволяю переривання:
#asm ("SEI") Залишилося описати переривання. Це простіше, ніж усе попереднє:
#include

interrupt Timer0_Compare (void) (++dmsec;)

Все, таймер описаний, налаштований та запущений!

Налаштування для PIC

Ось що мені підказали шановні PICомани:
На піках це легко повторюється за допомогою модуля Timer2. Саме в ньому є аналогічна функція переривання за збігом.
T2CON.T2OUTPS = 0 - без постскалера
T2CON.TMR2ON = on - таймер включений

IPR1.TMR2IP = 1 - високопріоритетне переривання
PIR1.TMR2IF = off - скидаємо прапор переривання
PIE1.TMR2IE = on --включаємо переривання за збігом TMR2 і PR2
INTCON.GIE = ​​on --включаємо обробку переривань

Як видно, прескалер тут вдвічі більше, тому PR2 вдвічі менше.
Дані настройки генеруватимуть переривання з частотою 10 kHz при системній частоті 48 MHz (на таймер йде Fosc/4) - стандартна частота для USB Full Speed.

Використання

Код для клієнта цього таймера виходить крос-платформним (якщо не рахувати звернення до значення таймера 0 в AVR).
Ось фрагмент коду обміну по USB:
#include "main.h" // Тут змінна dmsec, next_USB_timeout #include "FT245R.h" // Тут функції роботи з модулем USB #include "..\Protocol.h" // Тут протокол обміну мікроконтролер - комп'ютер // * * // ** Аналіз пакетів по USB // ** void AnalyzeUSB (void) ( #define RECEIVE_BYTE(B) while (!FT245R_IsToRead)\ ( if (dmsec > end_analyze) return; )\ B = FT245_ReadByte(); #define RECEIVE_WORD(W) // аналогічно для 2х байт #define RECEIVE_DWORD(W) // аналогічно для 4х байт dword end_analyze, d; NewAnalyze: if (!FT245R_IsToRead) // немає пакетів? для поточного аналізу next_USB_timeout = dmsec + MaxSilence_PC_DEV; // timeout для загального обміну RECEIVE_BYTE (b) // заголовок пакета switch (b) (case SetFullState: RECEIVE_DWORD (d); // читаємо слово is_initialized = 1; // ; break; ) // switch (pack) goto NewAnalyze; #undef RECEIVE_BYTE //
Макрофункції RECEIVE_BYTE, RECEIVE_WORD, RECEIVE_DWORD реалізують процедури читання з урахуванням часу для даної фази обміну. У результаті, якщо чогось зависло на іншому боці, то мікроконтролер не впаде в «спячку». Зверніть увагу - WatchDog не знадобився! І все завдяки змінній/константі max_USB_timeout, яка задає timeout з точністю до 0.1 мілісекунди.
Так само реалізується аналіз «тиші в ефірі» змінної next_USB_timeout. Це дозволяє мікроконтролеру 1) дізнатися, що комп'ютер кудись зник, 2) якось про це сигналізувати (у моєму випадку світиться світлодіод «помилка»). Константа/змінна MaxSilence_PC_DEV дозволяє варіювати поняття «тиші» в найширших межах – від частки мілісекунди до кількох діб.
Аналогічно реалізуються всі інші моменти.
Якщо вам потрібно використовувати лічильник мікросекунд, то там з'являється функція порівняння:
#define GetUSec(A,B) ( #asm ("CLI"); A = dmsec; B = TCNT0; #asm ("SEI"); ) // ** // ** Різниця в часі між подіями з точністю до 2/3usec // ** dword Difference (dword prev_dmsec, byte prev_usec) (dword cur_dmsec; byte cur_usec; ​​dword dif; //. Засікаємо поточний час GetUSec (cur_dmsec, cur_usec); // обчислюємо різницю dif = cur_dms<<= 8; if (cur_usec < prev_usec) dif += 255 + (dword) cur_usec - prev_usec; else dif += cur_usec - prev_usec; return dif; }
Функції передається попередній час - попереднє значення dmsec і таймера 0.
Спочатку ми макросом GetUSec зупиняємо переривання, щоб у момент копіювання не зіпсувалося значення dmsec та лічильника. І копіюємо поточний час.
Далі ми наводимо різницю у часі до формату 2/3 мікросекунди з урахуванням переповнення.
Та й повертаємо цей час.
А далі ми це використовуємо у звичайному if для контролю антибруньку та інших заходів. Тільки не забудьте зупинити переривання при засіканні поточного моменту часу – а краще використовуйте макрос GetUSec.

Результати

Цей таймер виявився для мене надзвичайно зручним рішенням. Думаю, він і вам знадобиться. А застосував я його в наступних проектах:
  • Комутатор фехтувальних ситуацій. Це здоровенна плата підлогу на півметра з трьома контролерами - ATmega128 як центральний і ATmega64 як два допоміжні (права та ліва сторони). Між трьома контролерами та його компонентами немає гальванічної зв'язку - харчування з урахуванням іоністорів, зв'язок через опторазвязки. Центральний контролер заряджає групи одних іоністорів і живить тим часом обидві сторони інших іоністорів. Тут довелося створити багатоступінчастий алгоритм комутації всього цього про те, щоб мінімізувати взаємозв'язок. Зокрема йдеться про злагоджену роботу 8 реле - тут працюють таймери на 3.3мсек (гарантований час спрацьовування реле). Ну і, власне, обидві сторони управляють 10 реле також з півсотні мультиплексорів. Все це господарство працює з чітко заданими часовими характеристиками (з точністю до 1 мсек, максимальні тривалості - 6 секунд). Ну і, зрештою, банальні timeout для USB, UART.
  • Датчик глибини. Тут я вирішую інше завдання (проект у роботі). Є два провідники (багатометрові), що задають ситуацію «зсув вгору на 1 см» і «зсув вниз на 1 см». Способів завдання спрямування безліч. У будь-якому разі це певні комбінації імпульсів. За допомогою цього таймера я визначаю брязкіт, тривалість стійкого імпульсу. З комп'ютера задається максимально допустимий час брязкоту (10 мікросекунд тут вистачає), антибразгове очікування, мінімальна/максимальна тривалість імпульсу. Ну і є режим налагодження – датчик стає логічним аналізатором. Це дозволяє налагоджувати роботу лінії та коригувати коефіцієнти. Ну і знову ж таки timeout, світлодіоди.
  • Датчик аналогових сигналів. Банальний 8-ми канальний АЦП. Тут я використовую таймер для витримування необхідних пауз.
Шановні хабракористувачі з інших платформ можуть мені підказати код ініціалізації відповідного таймера, а також правила доступу до нього – я тут додам. Можливо, що для інших платформ потрібно буде підібрати інші часи. Але в будь-якому випадку це має бути щось у межах кількох одиниць мікросекунд для самого таймера і щось кратне 100 мікросекунд для змінної-лічильника. Бо, як виявилося, іноді однієї мілісекунди не вистачає.

відео роботи пристрою

Схема зібрана на мікроконтролер PIC16F628A. Вона може вважати вхідні імпульси від 0 до 9999. Імпульси надходять лінію порту RA3 (кнопка SA1 активний рівень низький). З кожним імпульсом показання індикатора змінюються +1. Після 999 імпульсу на індикаторі висвічується 0 і спалахує точка початку другої тисячі (права за схемою) і т. д. Так рахунок може продовжуватися до значення 9999. Після цього рахунок зупиняється. Кнопка SA3 (лінія порту RА1) служить для скидання показань 0.

Схема лічильника імпульсів із пам'яттю на мікроконтролері

Спочатку схема була виготовлена ​​для роботи з живленням від трьох пальчикових батарей. Тому з метою економії енергії в схему включено кнопку включення індикації для контролю стану лічильника SA2 (лінія порту RA4). Якщо ця кнопка не потребує, її контакти можна закоротити. У схемі можна використовувати резистори, що підтягують, в межах від 1к до 10к. Біти конфігурації INTRC I/O та PWRTE встановлені. При відключенні живлення показання лічильника у пам'яті контролера зберігаються. При погашеному індикаторі схема залишається працездатною зі зниженням харчування до 3,5 вольт. Практика показала, що заряду батарейок вистачає майже тиждень безперервної роботи схеми.


Друкована плата лічильника


Фото лічильника

Схема, прошивка МК та друкована плата у форматі S-layuout у архіві (15кб).

Від адміністратора. Резистори R1-R3 можна вибрати номіналом до 10К.

-20 dB писав:
А чому не підійти до справи малою кров'ю? Якщо є щось подібне до згаданого вище ІЖЦ5-4/8, з роздільними висновками сегментів?

У заначках з радянських часів невикористовуваних К176ІЕ4 залишилося море (лічильник/дільник на 10 з семисегментним дешифратором і виходом перенесення, використовувався для формування одиниць хвилин і годин в електронному годиннику, неповний аналог - CD4026 - у чому неповнота, не дивився... поки) в класичному включенні для керування ЖК. 4 шт – по 2 на канал, + 2 шт. 176(561)ЛЕ5 або ЛА7 - одна для формувачів одиночних імпульсів (придушувачів брязкоту контактів), друга - для формування меандру для "засвітлення" ЖК індикатора?

Звичайно, на МП рішення красивіше, але на смітті - дешевше, і вирішується виключно на коліні... З програмуванням МП, наприклад, у мене туго (якщо тільки готовий дамп хтось подсуетит) - мені із залізяками простіше.


Ну ось тут я готовий посперечатися. Давайте порахуємо. Для початку вартість:
1. PIC12LF629 (SOIC-8) – 40руб. (~1,15 $)
2. Дисплей від Моторолу С200/С205/Т190/Т191 - близько 90руб (~2.57$) Крім того, роздільна здатність 98х64 - малюй і пиши чо хочеш.
3. Розсипання (SMD-резюки, кнопочки, SMD-конденсатори та інше) на знижку - близько 50руб. (~1,42 $)

Разом: ~180руб (~5$)

Корпус, аккум (я вибрав Lo-Pol акк від тієї ж моторолки С200 - компактно, ємно, недорого (порівняно)) - не вважаємо, так як і те й інше потрібно в обох варіантах.

Тепер Ваш варіант:

1. ІЖЦ5-4/8 - близько 50руб (~1.42$)
2. К176ИЕ4 (CD4026) - 15руб (~0,42$)x4=60руб(~1.68$)
3. К176ЛА7 - 5руб(~0,14$)x4=20руб(~0.56$)
4. Розсипання (SMD-резюки, кнопочки, SMD-конденсатори та інше) на знижку - близько 50руб. (~1,42 $)

Разом: ~180руб(~5$)

У чому вигода?

Тепер прикинемо ТТХ і функціонал:

У випадку з МК потреба буде максимум 20мА, у той час як у Вашому варіанті, я думаю, разу в 1,5...2 більше. Крім того у Вашому варіанті - складність (відносна) друкованої плати на 7 корпусах+багатогога ІЖЦ5-4/8 (напевно - двостороння), неможливість модернізувати пристрій (додати або змінити функціонал) не влазячи в схему (тільки на програмному рівні), відсутність можливості організувати пам'ять на виміри (рахунок), харчування не менше 5В (з меншого Ви не розгойдуєте ІЖЦ), вага та габарити. Можна ще багато навести доказів. Тепер варіант із МК. Про струм споживання вже написав – 20мА макс. + можливість сплячого режиму (споживання - 1...5 мА (в основному - LCD)), складність плати для однієї 8-ногої мікросхеми та 5 вивідного роз'ємника для моторолівського LCD - смішно навіть говорити. Гнучкість (можна програмно, без зміни схеми та плати навернути такого - волосся дибки встане), інформативність графічного 98х64 дисплея - в жодне порівняння з 4,5 розрядами 7-сегментного ІЖЦ. харчування - 3...3,5В (можна навіть таблеточку CR2032, але краще все ж таки Li-Pol від мобіли). Можливість організації багатоосередкової пам'яті на результати вимірювань (рахунку) приладу - знову ж таки лише на програмному рівні без втручання у схему та плату. Ну і нарешті - габарити та вага в жодне порівняння з Вашим варіантом. Аргумент – "я не вмію програмувати" не приймається – хто хоче, той знайде вихід. До вчорашнього дня я не вмів працювати з дисплеєм від мобільника Моторола С205. Тепер умію. Минула доба. Тому що мені це ТРЕБА. Зрештою Ви маєте рацію - можна когось і попросити.)) Ось приблизно так. І не в красі справа, а в тому, що дискретна логіка безнадійно застаріла як морально, так і технічно як основний елемент схемотехніки. Те, для чого були потрібні десятки корпусів з диким загальним споживанням, складністю ПП і величезними габаритами, тепер можна зібрати а 28-40 ногом МК легко і невимушено - повірте мені. Сьогодні навіть інформації по МК набагато більше ніж за дискретною логікою - і це цілком зрозуміло.

Всі знають для чого існує мікрокалькулятор, але виявляється крім математичних обчислень він здатний і на багато іншого. Зверніть увагу, якщо натиснути кнопку "1", потім "+" і далі натискати "=", то з кожним натисканням на кнопку "=" число на дисплеї збільшуватиметься на одиницю. Чим не цифровий лічильник?

Якщо до кнопки «=» підпаяти два проводки, їх можна буде використовувати як вхід лічильника, наприклад лічильника витків для намотувального верстата. Адже лічильник може бути і реверсивним, для цього потрібно спочатку набрати на дисплеї число, наприклад, число витків котушки, а потім натиснути кнопку «-», і кнопку «1». Тепер при кожному натисканні на "=" число зменшуватиметься на одиницю.

Однак, потрібний датчик. Найпростіший варіант, – геркон (рис.1). Геркон проводами підключаємо паралельно кнопці «=», сам геркон стоїть на нерухомій частині намотувального верстата, а магніт закріпимо на рухомий, так що за один оберт котушки магніт один раз проходив біля геркона, викликаючи його замикання.

От і все. Потрібно намотати котушку, робимо «1+» і далі з кожним оборотом, тобто з кожним витком показання дисплея збільшуватимуться на одиницю. Потрібно відмотати котушку, - набираємо на дисплеї мікрокалькулятора число витків котушки, і робимо -1, далі з кожним оборотом розмотування котушки показання дисплея зменшуватимуться на одиницю.

Рис.1. Схема підключення геркона до калькулятора.

А, припустимо, потрібно виміряти велику відстань, наприклад, довжину дороги, розмір земельної ділянки, довжину маршруту. Беремо звичайний велосипед. Правильно, - на вилці кріпимо неметалевий кронштейн із герконом, а магніт закріплюємо на одній зі спиць велосипедного колеса. Потім, вимірюємо довжину кола колеса, і виражену її в метрах, наприклад, вийшла довжина кола колеса 1,45 метра, так і набираємо «1,45+», після чого з кожним оборотом колеса покази дисплея збільшуватимуться на 1,45 метра, і в результаті на дисплеї буде видно пройдену велосипедом відстань у метрах.

Якщо є несправний китайський кварцовий будильник (зазвичай механізм у них дуже довговічний, а ось електронна плата дуже надійна), можна взяти від нього плату і за схемою показаної на малюнку 2 зробити з неї і калькулятора секундомір.

Живлення на плату будильника надходить через параметричний стабілізатор на світлодіоді HL1 (світлодіод повинен бути з прямою напругою 1,4-1,7V, наприклад, червоний АЛ307) та резисторі R2.

Імпульси формуються з імпульсів керування кроковим двигуном годинникового механізму (котушки мають бути відключені, плата використовується самостійно). Ці імпульси через діоди VD1 і VD2 надходять з урахуванням транзистора VТ1. Напруга живлення плати будильника всього 1,6V, при цьому рівні імпульсів на виходах крокового двигуна ще нижче.

Щоб схема нормально працювала, необхідні діоди з низьким рівнем прямої напруги, такі як ВАТ85 або германієві.

Ці імпульси надходять на транзисторний ключ VT1 і VТ2. У колекторному ланцюзі VТ2 включено обмотка малопотужного реле К1, контакти якого підключені паралельно кнопці «=» мікрокалькулятора. Коли є живлення +5V контакти реле К1 замикатимуться з частотою 1 Гц.

Щоб запустити секундомір, потрібно попередньо зробити дію «1+», потім вимикачем S1 включити живлення схеми формувача імпульсів. Тепер з кожною секундою покази дисплея збільшуватимуться на одиницю.

Щоб зупинити рахунок, достатньо вимкнути живлення формувача імпульсів вимикачем S1.

Щоб був рахунок зменшення, потрібно спочатку набрати на дисплеї мікрокалькулятора вихідне число секунд, та був зробити дію «-1» і включити живлення формувача імпульсів вимикачем S1. Тепер з кожною секундою показання дисплея зменшуватимуться на одиницю, і за ними можна буде судити, скільки часу залишилося до певної події.

Рис.2. Схема перетворення китайського бодульника на секундомір.

Рис.3. Схема лічильника перетинів ІЧ-променя із застосуванням калькулятора.

Якщо використовувати інфрачервоний фотодатчик, що працює на перетин променя, можна пристосувати мікрокалькулятор вважати якісь предмети, наприклад, коробки, що переміщаються транспортерною стрічкою, або, встановивши датчик в проході, вважати людей, що входять в приміщення.

Принципова схема інфрачервоного датчика відображення для роботи з мікрокалькулятором показана на малюнку 3.

Генератор ІЧ-сигналу виконаний на мікросхемі А1 типу «555» (інтегральний таймер) Він є генератором імпульсів частотою 38 кГц, на виході якого включений через ключ інфрачервоний світлодіод. Частота генерації залежить від кола C1-R1, при налагодженні підбором резистора R1 потрібно встановити на виході мікросхеми (виведення 3) частоту близьку до 38 кГц. Світлодіод HL1 поміщають з одного боку проходу, надівши на нього непрозору трубку, яка має бути точно спрямована на фотоприймач.

Фотоприймач виконаний на мікросхемі HF1 - це стандартний інтегральний фотоприймач типу TSOP4838 для дистанційного керування телевізорів та іншої домашньої техніки. Коли цей фотоприймач потрапляє промінь від HL1, з його виході - нуль. За відсутності променя-одиниця.

Таким чином, між HL1 і HF1 нічого немає - контакти реле К1 розімкнуті, а в момент проходження будь-якого об'єкта - контакти реле замикаються. Якщо на мікрокалькуляторі зробити дію «1+», то з кожним проходженням об'єкта між HL1 і HF1 показання дисплея мікрокалькулятора збільшуватимуться на одиницю, і за ними можна буде судити, скільки коробок відвантажено або скільки людей увійшло.

Крюков М.Б. РК-2016-01.

Лічильник на мікроконтролері досить простий для повторення та зібраний на популярному МК PIC16F628A з виведенням індикації на 4 семисегментні світлодіодні індикатори. Лічильник має два входи управління: +1 і -1, а також кнопку Reset. Управління схемою нового лічильника реалізовано таким чином, що як би довго чи коротко не була натиснута кнопка входу, рахунок продовжиться тільки при її відпусканні та черговому натисканні. Максимальна кількість імпульсів і відповідно показання АЛС - 9999. При керуванні на вході «-1» рахунок ведеться у зворотному порядку до значення 0000. Покази лічильника зберігаються в пам'яті контролера і при відключенні живлення, що збереже дані при випадкових перебоях напруги живлення мережі.

Принципова схема реверсивного лічильника на мікроконтролері PIC16F628A:

Скидання показань лічильника і одночасно стану пам'яті в 0 здійснюється кнопкою «Reset». Слід пам'ятати, що при першому включенні реверсивного лічильника на мікроконтролері на індикаторі АЛС може висвітитися непередбачувана інформація. Але при першому натисканні на будь-яку з кнопок інформація нормалізується. Де і як можна використовувати цю схему - залежить від конкретних потреб, наприклад, встановити в магазин або офіс для підрахунку відвідувачів або як індикатор намотувального верстата. Загалом думаю, що цей лічильник на мікроконтролері комусь принесе користь.

Якщо у когось під рукою не виявиться потрібного індикатора АЛС, а буде якийсь інший (або навіть 4 окремі індикатори), я готовий допомогти перемалювати друк і переробити прошивку. В архіві на форумі схема, плата та прошивки під індикатори із загальним анодом та загальним катодом. Друкована плата показана на малюнку нижче:

Є також нова версія прошивки для лічильника на мікроконтролер PIC16F628A. при цьому схема і плата лічильника залишилися колишніми, але змінилося призначення кнопок: кнопка 1 - вхід імпульсів (наприклад, від геркона), 2 кнопка включає рахунок на віднімання вхідних імпульсів, при цьому на індикаторі світиться ліва точка, 3 кнопка - додавання імпульс світиться найправіша точка. Кнопка 4 – скидання. У такому варіанті схему лічильника на мікроконтролері можна легко застосувати на верстаті намотування. Тільки перед намотуванням або відмотуванням витків потрібно спочатку натиснути кнопку "+" або "-". Живиться лічильник від стабілізованого джерела напругою 5В та струмом 50мА. За потреби можна живити від батарейок. Корпус залежить від ваших уподобань і можливостей. Схему надав - Samopalkin

Loading...Loading...