Мікроконтролери

Мікроконтролери (МК) — це спеціалізовані інтегральні мікросхеми, які вбудовуються у пристрої для автоматичного керування їх роботою. Вони поєднують в одному корпусі центральний процесор, пам’ять, порти введення/виведення та периферійні модулі.

Мікроконтролери

Варто зазначити, що мікроконтролери та мікропроцесори мають кардинальні відмінності. В першу чергу мікроконтролери — це рішення «все в одному», свого роду готовий мікрокомпʼютер, тоді як мікропроцесору потрібні окремі чіпи пам’яті, периферії тощо. Крім того, мікроконтролери мають меншу продуктивність, оскільки мають більш вузькоспеціалізоване призначення.

Загальна структура мікроконтролера включає наступні компоненти:

  • Центральний процесор (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

    Мікроконтролер ATmega328P-PU в корпусі DIP

  • TQFP, LQFP (Quad Flat Package) – плоский корпус з контактами по чотирьох сторонах, використовується для запаювання на друковану плату, не сумісний з макетною платою без перехідника. Приклад: ATmega328P-AU

    Мікроконтролер ATmega328P-AU в корпусі TQFP

  • QFN (Quad Flat No-lead) – плоский корпус без бокових контактів, всі вони знаходяться знизу, складний у пайці вручну. Приклад: ATmega328P-MU

    Мікроконтролер ATmega328P-MU в корпусі QFN

  • BGA (Ball Grid Array) – контакти реалізовані у вигляді кульок знизу, застосовується в складних системах, не призначений для ручної пайки. Приклад: STM32F767NIH6

    Мікроконтролер STM32F767NIH6 в корпусі BGA

Зараз на ринку присутня велика кількість мікроконтролерів, які активно використовуються в освіті, хобі, промисловості та комерційних продуктах:

  1. ARM Cortex-M
    • Сімейство: STM32 (STMicroelectronics), nRF52 (Nordic), NXP LPC
    • Архітектура: 32-біт ARM Cortex-M0/M3/M4/M7
    • Переваги: висока продуктивність і енергоефективність, великий вибір (від простих до потужних моделей), безкоштовні IDE (STM32CubeIDE, PlatformIO, Keil MDK)
    • Застосування: промислова автоматика, IoT, медичні пристрої, робототехніка
  2. Atmel AVR (тепер Microchip)
    • Сімейство: ATmega, ATtiny
    • Архітектура: 8-біт AVR RISC
    • Найвідоміший чип: ATmega328P
    • Переваги: прості для вивчення, активна спільнота розробників, величезна кількість бібліотек
    • Застосування: навчання, DIY-проєкти, невеликі пристрої
  3. Microchip PIC
    • Сімейство: PIC10, PIC16, PIC18, PIC32
    • Архітектура: від 8 до 32 біт
    • Переваги: стабільність і надійність, дешеві моделі для масового виробництва
    • Застосування: побутова техніка, промислова електроніка, освітні проєкти
  4. Espressif
    • Сімейство: ESP32, ESP8266
    • Архітектура: 32-біт Xtensa LX6/ESP32-S3: RISC-V
    • Переваги: вбудовані Wi-Fi/Bluetooth, низька ціна та висока продуктивність
    • Застосування: IoT, домашня автоматизація, розумні пристрої
  5. 8051-сумісні МК
    • Сімейство: Nuvoton, STC89, Silicon Labs
    • Архітектура: класична 8-бітна
    • Переваги: перевірена часом платформа, використовується в промислових виробах
    • Застосування: електроніка з тривалим життєвим циклом
  6. 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 виходів.

Мікропроцесор Intel 4004

Texas Instruments TMS1000 — це перший у світі комерційно доступний мікроконтролер, випущений у 1974 році. Він випередив навіть Intel 8048 і поклав початок епосі однокристальних комп’ютерів. Розроблений для калькуляторів, іграшок, кухонної техніки.

TMS1000 був 4-бітним мікроконтролером з тактовою частотою 400 кГц, памʼяттю для програм 1 КБ та оперативною памʼяттю 64 байти. Мікроконтролер був виконаний у корпусі DIP на 28 виходів (23 GPIO).

Мікроконтролер Texas Instruments TMS1000

Intel 8048 — це 8-бітний мікроконтролер, випущений компанією Intel у 1976 році. Він став одним із перших повноцінних мікроконтролерів і використовувався в багатьох споживчих пристроях (мікрохвильові печі, пульти керування), включаючи першу клавіатуру IBM PC.

Мікроконтролер отримав тактову частоту 6 МГц, 4 КБ памʼяті для програм та 64 байти оперативної памʼяті. Мікроконтролер був виконаний у корпусі DIP та мав 40 виходів, 16 GPIO, таймер та зовнішні переривання.

Мікроконтролер Intel 8048

Intel i8051 — це один із найвідоміших і найвпливовіших 8-бітних мікроконтролерів, випущений компанією Intel у 1980 році. Він започаткував сімейство MCS-51, яке використовується і сьогодні, з численними модернізаціями та виробниками.

Мікроконтролер отримав тактову частоту 12 МГц, 4 КБ памʼяті для програм та 128 байт оперативної памʼяті, 32 GPIO-портів, 2 × 16-бітні таймери, інтерфейс UART, 5 джерел переривань (2 рівні пріоритету), підтримку ШІМ. На основі i8051 було випущено велику кількість аналогій та клонів (як ліцензійних так ні). Дані мікроконтролери були особливо популярними у 90-х роках, але згодом їх витіснили більш розвиненіші аналоги фірм Microchip Technology і Atmel.

Мікроконтролер Intel 8051

Платформа 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 UNO R3

Arduino Nano — це компактна версія плати Arduino Uno, з тими самими функціональними можливостями, але у значно меншому форм-факторі. Вона призначена для вбудованих систем, breadboard-проєктів і де потрібні маленькі розміри при повноцінній функціональності.

Плата розробника Arduino Nano