Môn Công Nghệ 12

Bài 24. Khái quát về vi điều khiển

1. Khái niệm vi điều khiển

Vi điều khiển (Microcontroller — MCU) là một máy tính thu nhỏ được tích hợp trên một chip duy nhất, bao gồm bộ xử lý, bộ nhớ và các khối ngoại vi.

Đặc điểm:

  • Tích hợp nhiều thành phần trên một chip (SoC — System on Chip)
  • Tiêu thụ năng lượng thấp
  • Giá thành rẻ
  • Kích thước nhỏ gọn
  • Phù hợp cho các ứng dụng nhúng

Ví dụ về vi điều khiển phổ biến: Arduino (ATmega328), ESP32, STM32, PIC, 8051.

2. Cấu trúc cơ bản của vi điều khiển

Các khối chức năng chính:

  • CPU (Central Processing Unit): Khối xử lý trung tâm, thực thi chương trình
  • RAM (Random Access Memory): Bộ nhớ tạm thời, lưu dữ liệu trong khi chạy
  • ROM/Flash: Bộ nhớ chứa chương trình và dữ liệu cố định
  • Cổng I/O (Input/Output): Giao tiếp với các thiết bị bên ngoài
  • Các khối ngoại vi: Timer, ADC, PWM, UART, SPI, I²C...

Sơ đồ khối: CPU là trung tâm, kết nối với RAM, ROM qua bus dữ liệu và bus địa chỉ; các khối ngoại vi kết nối qua bus ngoại vi.

3. CPU và bộ nhớ

CPU (Central Processing Unit):

  • ALU (Arithmetic Logic Unit): Thực hiện tính toán số học và logic
  • CU (Control Unit): Điều khiển và giải mã lệnh
  • Thanh ghi (Register): Lưu dữ liệu tạm thời trong CPU
  • Bộ đếm chương trình (PC): Chỉ đến lệnh tiếp theo

Bộ nhớ:

  • ROM (Read Only Memory): Lưu chương trình cố định (bootloader, firmware)
  • RAM (Random Access Memory): Lưu biến, stack, dữ liệu tạm thời — mất khi mất nguồn
  • EEPROM/Flash: Lưu dữ liệu không mất khi mất nguồn, có thể ghi/xóa

4. Các khối ngoại vi

Các khối ngoại vi phổ biến trong vi điều khiển:

  • GPIO (General Purpose I/O): Các chân vào/ra đa năng, có thể đọc hoặc xuất tín hiệu số
  • ADC (Analog-to-Digital Converter): Chuyển đổi tín hiệu tương tự sang số
  • Timer/Counter: Đếm thời gian và sự kiện
  • PWM (Pulse Width Modulation): Tạo xung điều chế độ rộng để điều khiển tốc độ, độ sáng
  • UART/USART: Giao tiếp nối tiếp không đồng bộ
  • SPI, I²C: Giao tiếp nối tiếp đồng bộ với cảm biến, màn hình, bộ nhớ ngoài

5. So sánh vi điều khiển và vi xử lý

Vi xử lý (Microprocessor — MPU):

  • Chỉ có CPU trên chip
  • Cần thêm RAM, ROM, ngoại vi bên ngoài
  • Công suất tính toán cao
  • Phù hợp máy tính, server, laptop
  • Ví dụ: Intel Core i5, AMD Ryzen

Vi điều khiển (Microcontroller — MCU):

  • Tích hợp CPU + RAM + ROM + ngoại vi trên một chip
  • Tiêu thụ điện thấp
  • Giá thành thấp
  • Phù hợp hệ thống nhúng, IoT, tự động hóa
  • Ví dụ: ATmega328, STM32, ESP32

6. Ứng dụng của vi điều khiển trong đời sống

Các ứng dụng thực tế:

  • Thiết bị gia dụng thông minh: Máy giặt, lò vi sóng, tủ lạnh, điều hòa
  • Ô tô: ECU (Engine Control Unit), ABS, túi khí, điều khiển cửa
  • IoT (Internet of Things): Cảm biến thông minh, nhà thông minh, đo đạc từ xa
  • Robot và drone: Điều khiển động cơ, đọc cảm biến, xử lý ảnh
  • Y tế: Máy đo huyết áp, máy đo đường huyết, máy tạo nhịp tim
  • Giáo dục và Maker: Arduino, Micro:bit, Raspberry Pi Pico

Dạng 1: Phân biệt vi điều khiển và vi xử lý

Phương pháp:

  • Vi điều khiển: tích hợp CPU+RAM+ROM+I/O trên chip, giá rẻ, tiết kiệm năng lượng
  • Vi xử lý: chỉ CPU, cần thêm chip ngoài, hiệu năng cao, đắt hơn
  • Xem xét yêu cầu ứng dụng để chọn loại phù hợp
Ví dụ 1: Một thiết bị đo nhiệt độ hiển thị LCD, dùng pin AAA. Nên chọn vi điều khiển hay vi xử lý?

Giải: Nên chọn vi điều khiển vì giá rẻ, tiết kiệm pin, tích hợp ADC và GPIO đủ dùng cho cảm biến và LCD.

Dạng 2: Xác định chức năng khối trong vi điều khiển

Phương pháp:

  • CPU: xử lý và thực thi lệnh
  • RAM: lưu dữ liệu tạm thời
  • ROM/Flash: lưu chương trình
  • GPIO: giao tiếp tín hiệu số
  • ADC: đọc tín hiệu tương tự
  • Timer: đếm thời gian/sự kiện
Ví dụ 1: Bộ phận nào trong vi điều khiển dùng để lưu chương trình khởi động?

Giải: ROM (hoặc Flash) chứa chương trình khởi động (bootloader) và firmware.

Dạng 3: Lập trình GPIO cơ bản

Phương pháp:

  • Cấu hình chân GPIO là input hoặc output
  • Output: digitalWrite(chân, HIGH/LOW) để xuất mức điện áp
  • Input: digitalRead(chân) để đọc trạng thái
  • Analog: analogRead(chân ADC) để đọc giá trị 0-1023
Ví dụ 1 (Arduino): Viết code bật LED ở chân 13 khi nhấn nút ở chân 2.

Giải:

void setup() { pinMode(13, OUTPUT); pinMode(2, INPUT_PULLUP); }
void loop() { digitalWrite(13, !digitalRead(2)); }

Luyện tập trắc nghiệm

1 / 14
Câu 1
Trắc nghiệm đơnTrung bình

Vi điều khiển là:

A
Một bộ vi xử lý thông thường
B
Một máy tính tích hợp trên một chip
C
Một bộ nhớ ngoài
D
Một cảm biến thông minh