Мікроконтролери
Мікроконтролери (МК) — це спеціалізовані інтегральні мікросхеми, які вбудовуються у пристрої для автоматичного керування їх роботою. Вони поєднують в одному корпусі центральний процесор, пам’ять, порти введення/виведення та периферійні модулі.
Варто зазначити, що мікроконтролери та мікропроцесори мають кардинальні відмінності. В першу чергу мікроконтролери — це рішення «все в одному», свого роду готовий мікрокомпʼютер, тоді як мікропроцесору потрібні окремі чіпи пам’яті, периферії тощо. Крім того, мікроконтролери мають меншу продуктивність, оскільки мають більш вузькоспеціалізоване призначення.
Загальна структура мікроконтролера включає наступні компоненти:
- Центральний процесор (CPU) — виконує програму.
- Пам’ять:
- Flash — зберігає прошивку (програму за якою працює мікроконтролер). Деякі мікроконтролери мають розділену Flash-памʼять, в якій можуть зберігатися налаштування та файли.
- Оперативна (RAM) — для обробки даних під час роботи.
- EEPROM — для зберігання налаштувань.
- Периферія: таймери, ШІМ, АЦП/ЦАП, інтерфейси UART, I2C, SPI, USB тощо.
- GPIO-порти — для керування зовнішніми пристроями (кнопки, світлодіоди тощо).
EEPROM — це енергонезалежна пам’ять, яка дозволяє зберігати дані навіть після вимкнення живлення. Вона використовується в мікроконтролерах для зберігання постійної або змінної інформації, яку не можна втрачати між перезавантаженнями.
Характеристики та призначення
До основних характеристик мікроконтролерів належать:
- Архітектура
- Розрядність
- Тактова частота
- Обʼєм flash/EEPROM-пам’яті
- Обʼєм оперативної пам’яті
- Інтерфейси
- АЦП
- ЦАП/ШІМ
- Кількість таймерів
- Живлення
- Форм-фактор
Архітектура мікроконтролера — це структурна організація його внутрішніх компонентів, а також принципи їх взаємодії. Вона визначає можливості МК, продуктивність, енергоспоживання та зручність програмування. Часто визначається виробником, наприклад: ARM Cortex-M, AVR, PIC, MSP430, RISC-V та інші
Розрядність — це характеристика, яка вказує на кількість біт, з якими він може працювати одночасно (у межах своєї архітектури). Вона визначає:
- Розрядність регістрів — скільки біт може зберігатися в одному регістрі (наприклад, 8, 16, 32 або 64 біти).
- Розрядність шини даних — скільки біт передається за один такт між компонентами.
- Розрядність арифметико-логічного пристрою (АЛП) — скільки біт обробляється за одну операцію.
Основні типи розрядності МК:
- 8-розрядні (наприклад, AVR, PIC): прості задачі, малі об'єми даних.
- 16-розрядні (наприклад, MSP430): більша продуктивність і діапазон адрес.
- 32-розрядні (наприклад, STM32, ESP32): складні обчислення, більші адресні простори.
- 64-розрядні — рідкісні в мікроконтролерах, частіше зустрічаються в мікропроцесорах.
Чим вища розрядність, тим: більше адресної пам’яті можна безпосередньо адресувати; ефективніше обробляються великі обсяги даних; складнішими і дорожчими стають МК.
Тактова частота мікроконтролера — це швидкість, з якою він виконує команди. Вимірюється в герцах (Hz), зазвичай у мегагерцах (MHz) або гігагерцах (GHz). В більшості сучасних мікроконтролерів тактова частота варіюється в межах від 16 до 240 МГц
Flash-пам’ять мікроконтролера — це тип енергонезалежної пам’яті, в якій зберігається програма (прошивка), що виконується МК. Навіть після вимкнення живлення інформація в цій пам’яті залишається. Обʼєм становить в межах 1 КБ – 2 МБ. Однак не всі мікроконтролера мають вбудовану flash-памʼять, в такому випадку використовуються зовнішні чіпи памʼяті (зазвичай обʼємом до 8 Мб). Деякі МК дозволяють часткове перезаписування Flash-пам’яті під час роботи.
Оперативна пам’ять (RAM) мікроконтролера — це енергозалежна пам’ять, яка використовується для зберігання змінних під час виконання програми, стеку викликів функцій, буферів для вводу/виводу тощо.
Основний тип оперативної памʼяті у МК – SRAM (Static RAM) не потребує оновлення, швидка, але дорога. При розробці важливо контролювати використання пам’яті, особливо в системах з малим обсягом. Обʼєм памʼяті в мікроконтролерах становить у межах 64 Б - 512 Кб. У деяких МК є можливість використання зовнішньої RAM (наприклад, через SPI або паралельний інтерфейс).
Інтерфейси мікроконтролера — це способи обміну даними між МК та зовнішніми пристроями (сенсорами, модулями, іншими МК тощо). Вони можуть бути паралельні або послідовні, цифрові або аналогові, вбудовані або підключені зовні.
Основні типи інтерфейсів:
- GPIO (General Purpose Input/Output) – прості цифрові входи/виходи.
- UART/USART (послідовний асинхронний інтерфейс) – використовується для послідовного обміну даними (наприклад, із ПК, GPS-модулем тощо).
- SPI (Serial Peripheral Interface) – швидкий синхронний інтерфейс.
- I²C (Inter-Integrated Circuit) – синхронний, дволінійний інтерфейс.
- USI – універсальний послідовний інтерфейс. Деякі МК мають вбудовану підтримку USB.
Аналогово-цифровий перетворювач (АЦП, ADC) – це вбудований у мікроконтролер модуль, який перетворює аналоговий сигнал (напругу) в цифрове значення, яке може оброблятися програмно. Характеризується рядом параметрів:
- Розрядність - визначає точність вимірювання (більша розрядність – вища точність). Найчастіше зустрічаються на 8, 10, 12 або 16 біт.
- Кількість каналів – визначає скільки одночасно входів може використовуватися для вимірювання.
- Vref – напруга, що задає максимум шкали вимірювання (може бути внутрішня або зовнішня).
- Швидкість вибірки – кількість вимірів за секунду (samples per second).
Цифро-аналоговий перетворювач (ЦАП, DAC) — це модуль мікроконтролера, який перетворює цифрове значення у аналоговий (безперервний) сигнал, зазвичай напругу. Зустрічається в мікроконтролерах набагато рідше.
ШІМ (Широтно-імпульсна модуляція, PWM) — це метод створення аналогоподібного сигналу за допомогою цифрових імпульсів змінної ширини. За допомогою ШІМ можна регулювати вихідну напругу, однак варто зазначити, що це можна використати для певних задач: керування яскравістю світлодіодів, регулювання швидкості моторів (DC або сервоприводи), генерація аналогоподібного сигналу (з фільтром як заміна DAC), передача даних або керуючих сигналів.
Таймер мікроконтролера — це внутрішній апаратний модуль, який відраховує час або кількість імпульсів. Таймери є базовим і дуже важливим елементом МК, що використовується для створення затримок, генерації сигналів, роботи ШІМ, таймстемпів, подій по перериваннях тощо.
Живлення мікроконтролера — це ключова частина його роботи: без стабільного та правильно підібраного джерела живлення МК може працювати нестабільно, зависати або взагалі не запускатись. Зазвичай напруга живлення становить 3.3 В або 5 В (іноді 1.8 В, 2.5 В).
Форм-фактор (тип корпусу) — це фізичне виконання або формат плати/корпусу, в якому він постачається. Форм-фактор визначає зручність монтажу, сумісність з макетними платами, способи пайки, розміри тощо.
Виділяють наступні основні типи корпусів мікроконтролерів:
- DIP (Dual In-line Package) – має два ряди контактів, легко вставляється в макетну плату, зручний для початківців і прототипування. Приклад: ATmega328P-PU
- TQFP, LQFP (Quad Flat Package) – плоский корпус з контактами по чотирьох сторонах, використовується для запаювання на друковану плату, не сумісний з макетною платою без перехідника. Приклад: ATmega328P-AU
- QFN (Quad Flat No-lead) – плоский корпус без бокових контактів, всі вони знаходяться знизу, складний у пайці вручну. Приклад: ATmega328P-MU
- BGA (Ball Grid Array) – контакти реалізовані у вигляді кульок знизу, застосовується в складних системах, не призначений для ручної пайки. Приклад: STM32F767NIH6
Зараз на ринку присутня велика кількість мікроконтролерів, які активно використовуються в освіті, хобі, промисловості та комерційних продуктах:
- ARM Cortex-M
- Сімейство: STM32 (STMicroelectronics), nRF52 (Nordic), NXP LPC
- Архітектура: 32-біт ARM Cortex-M0/M3/M4/M7
- Переваги: висока продуктивність і енергоефективність, великий вибір (від простих до потужних моделей), безкоштовні IDE (STM32CubeIDE, PlatformIO, Keil MDK)
- Застосування: промислова автоматика, IoT, медичні пристрої, робототехніка
- Atmel AVR (тепер Microchip)
- Сімейство: ATmega, ATtiny
- Архітектура: 8-біт AVR RISC
- Найвідоміший чип: ATmega328P
- Переваги: прості для вивчення, активна спільнота розробників, величезна кількість бібліотек
- Застосування: навчання, DIY-проєкти, невеликі пристрої
- Microchip PIC
- Сімейство: PIC10, PIC16, PIC18, PIC32
- Архітектура: від 8 до 32 біт
- Переваги: стабільність і надійність, дешеві моделі для масового виробництва
- Застосування: побутова техніка, промислова електроніка, освітні проєкти
- Espressif
- Сімейство: ESP32, ESP8266
- Архітектура: 32-біт Xtensa LX6/ESP32-S3: RISC-V
- Переваги: вбудовані Wi-Fi/Bluetooth, низька ціна та висока продуктивність
- Застосування: IoT, домашня автоматизація, розумні пристрої
- 8051-сумісні МК
- Сімейство: Nuvoton, STC89, Silicon Labs
- Архітектура: класична 8-бітна
- Переваги: перевірена часом платформа, використовується в промислових виробах
- Застосування: електроніка з тривалим життєвим циклом
- Raspberry Pi Pico (RP2040)
- Архітектура: 32-біт ARM Cortex-M0+
- Переваги: дешеві і потужні, два ядра, програмований I/O (PIO)
- Застосування: освіта, DIY, IoT
Історія розвитку мікроконтролерів
Першим кроком до розробки мікроконтролерів було зроблено у вересні 1958 року американським інженером Джеком Кілбі (Jack Kilby), який працював у компанії Texas Instruments. Він створив першу у світі інтегральну схему, яка містила кілька компонентів (транзистор, резистори та конденсатори) на невеликій пластині (приблизно 1 х 2 см) з германію.
Intel 4004 — це перший у світі комерційний мікропроцесор, випущений у 1971 році компанією Intel. Він став проривом у мікроелектроніці, адже вперше об’єднав у собі всі основні функції процесора на одному кристалі.
Це був 4-бітний процесор з тактовою частотою 740 кГц та памʼяттю 4 КБ програми і 640 байт для даних. Він був побудований за 10 мкм технологією та містив близько 2300 транзисторів. Мікропроцесор був виконаний у корпусі DIP та мав 16 виходів.
Texas Instruments TMS1000 — це перший у світі комерційно доступний мікроконтролер, випущений у 1974 році. Він випередив навіть Intel 8048 і поклав початок епосі однокристальних комп’ютерів. Розроблений для калькуляторів, іграшок, кухонної техніки.
TMS1000 був 4-бітним мікроконтролером з тактовою частотою 400 кГц, памʼяттю для програм 1 КБ та оперативною памʼяттю 64 байти. Мікроконтролер був виконаний у корпусі DIP на 28 виходів (23 GPIO).
Intel 8048 — це 8-бітний мікроконтролер, випущений компанією Intel у 1976 році. Він став одним із перших повноцінних мікроконтролерів і використовувався в багатьох споживчих пристроях (мікрохвильові печі, пульти керування), включаючи першу клавіатуру IBM PC.
Мікроконтролер отримав тактову частоту 6 МГц, 4 КБ памʼяті для програм та 64 байти оперативної памʼяті. Мікроконтролер був виконаний у корпусі DIP та мав 40 виходів, 16 GPIO, таймер та зовнішні переривання.
Intel i8051 — це один із найвідоміших і найвпливовіших 8-бітних мікроконтролерів, випущений компанією Intel у 1980 році. Він започаткував сімейство MCS-51, яке використовується і сьогодні, з численними модернізаціями та виробниками.
Мікроконтролер отримав тактову частоту 12 МГц, 4 КБ памʼяті для програм та 128 байт оперативної памʼяті, 32 GPIO-портів, 2 × 16-бітні таймери, інтерфейс UART, 5 джерел переривань (2 рівні пріоритету), підтримку ШІМ. На основі i8051 було випущено велику кількість аналогій та клонів (як ліцензійних так ні). Дані мікроконтролери були особливо популярними у 90-х роках, але згодом їх витіснили більш розвиненіші аналоги фірм Microchip Technology і Atmel.
Платформа Arduino
Платформа Arduino — це апаратно-програмне середовище з відкритим кодом, створене для того, щоб зробити розробку електроніки простою та доступною навіть для новачків. Більшість плат забезпечені мінімально необхідним набором компонентів для нормальної роботи мікроконтролера (стабілізатор живлення, кварцовий резонатор і т.п.).
Мікроконтролери для Arduino відрізняються наявністю попередньо прошитого в них завантажувача. За допомогою цього завантажувача користувач завантажує свою програму в мікроконтролер без використання традиційних окремих апаратних програматорів.
В серії пристроїв Arduino в основному застосовуються мікроконтролери Atmel AVR. Існують також плати на базі ARM Cortex M та Intel x86.
Апаратна складова Arduino — це серія плат на базі мікроконтролерів, з готовими для використання: портами введення/виведення (GPIO), аналоговими входами (ADC), PWM-виходами, інтерфейсами UART, I²C, SPI, USB-підключенням для програмування. Вона включає більше 100 продуктів (плати розробника, плати розширення, модулі та інші аксесуари):
- Сімейство Classic – плати, що стали основою проекту Arduino та користуються успіхом вже багато років (Arduino Uno Rev3, Arduino Leonardo, Arduino Micro, Arduino UNO R4).
- Сімейство Nano – це набір плат з мініатюрним розміром, але з великою кількістю функцій (Arduino Nano, Arduino Nano Every, Arduino Nano 33, Arduino Nano ESP32).
- Сімейство Mega – плати для проектів, що вимагають великої кількості виходів GPIO та обчислювальної потужності (Arduino Mega 2560, Arduino Due, Arduino GIGA).
- Сімейство MKR – потужні плати для реалізації різноманітних проектів на базі ARM Cortex-M0 32-bit SAMD21 з підтримкою Wi-Fi, Bluetooth, LoRa, Sigfox, NB-IoT.
Найпоширенішою версією серед плат розробника є Arduino UNO R3 та її більш компактна версія – Arduino Nano.
Arduino Uno — це найбільш відома та широко використовувана плата в екосистемі Arduino. Вона стала стандартом де-факто для навчання основам мікроконтролерної техніки, а також часто використовується для створення прототипів у хобі-проєктах, освітніх програмах та навіть у деяких комерційних розробках. В основі цієї плати лежить 8-бітний мікроконтролер ATmega328P, який працює на тактовій частоті 16 МГц. Він має 32 кілобайти флеш-пам’яті для зберігання програми, 2 кілобайти оперативної пам’яті (SRAM) та ще 1 кілобайт EEPROM для постійного зберігання даних.
Arduino Nano — це компактна версія плати Arduino Uno, з тими самими функціональними можливостями, але у значно меншому форм-факторі. Вона призначена для вбудованих систем, breadboard-проєктів і де потрібні маленькі розміри при повноцінній функціональності.