KẾT HỢP ADC VÀ ĐIỀU KHIỂN ĐẦU RA

Xin chào các bạn!
Hôm nay, chúng ta sẽ thực hành một ứng dụng rất cơ bản nhưng cực kỳ quan trọng trong điều khiển nhúng, đó là:

Đọc tín hiệu analog (ADC) từ biến trở
điều khiển độ sáng của đèn LED thông qua tín hiệu PWM

Đây là một ví dụ điển hình trong các ứng dụng như:

  • Điều chỉnh độ sáng đèn
  • Điều tốc quạt
  • Điều khiển âm lượng, v.v.

🎯 MỤC TIÊU BÀI HỌC

  • Đọc giá trị ADC từ biến trở thông qua chân analog A0
  • Sử dụng giá trị đó để điều khiển độ sáng LED trên chân PWM (D9)
  • Quan sát thay đổi độ sáng theo từng nấc khi xoay biến trở

🛠️ PHẦN 1: LINH KIỆN CẦN CHUẨN BỊ

Truy cập https://www.tinkercad.com. Trong Tinkercad hoặc mô hình thật, bạn cần:

  • Arduino UNO
  • 1 biến trở (potentiometer)
  • 1 LED
  • 1 điện trở 220Ω
  • Dây nối

🔌 PHẦN 2: KẾT NỐI MẠCH

🔧 Biến trở:

ChânKết nối
15V
2A0
3GND

🔧 LED:

Chân LEDKết nối
Dài (anode)D9 → qua điện trở 220Ω → LED
Ngắn (cathode)GND

📌 D9 là một chân PWM (có dấu ~), rất phù hợp để điều khiển độ sáng LED bằng analogWrite().


💻 PHẦN 3: CODE MẪU ĐẦY ĐỦ

int adcPin = A0;     // Chân đọc biến trở
int ledPin = 9; // LED dùng chân PWM

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
int adcValue = analogRead(adcPin); // Đọc ADC (0–1023)
int brightness = map(adcValue, 0, 1023, 0, 255); // Chuyển sang 0–255
analogWrite(ledPin, brightness); // Xuất PWM
delay(10); // Giảm nhiễu nhấp nháy
}

🧠 GIẢI THÍCH CHƯƠNG TRÌNH

  • analogRead(A0) lấy giá trị 0–1023 từ biến trở
  • map(..., 0, 1023, 0, 255) chuyển về mức độ sáng phù hợp cho PWM
  • analogWrite(D9, brightness) phát xung PWM để điều khiển độ sáng LED

▶️ PHẦN 4: THỰC HÀNH MÔ PHỎNG TRÊN TINKERCAD

  1. Nhấn Start Simulation
  2. Xoay biến trở
  3. Quan sát LED sáng dần hoặc tối dần tương ứng với vị trí của biến trở

🎯 PHẦN 5: TỔNG KẾT

✅ Sau bài thực hành này, các bạn đã:

  • Biết cách đọc tín hiệu analog từ biến trở
  • Biết cách sử dụng analogWrite() để phát PWM
  • Hiểu rõ mối liên hệ giữa ADC đầu vào → điều khiển đầu ra PWM

🌱 GỢI Ý MỞ RỘNG

  • Dùng 2 biến trở để điều khiển 2 LED khác nhau
  • Kết hợp với LCD để hiển thị phần trăm độ sáng
  • Điều chỉnh âm lượng mô phỏng (nếu kết nối với loa/buzzer)

🧪 Bài 1: Điều khiển 3 LED với 3 biến trở – phối màu RGB

🎯 Mục tiêu:

  • Dùng 3 biến trở để điều khiển độ sáng của 3 LED đỏ, xanh lá, xanh dương
  • Mỗi biến trở điều khiển độ sáng tương ứng 1 màu → tạo màu RGB

🧠 Kỹ năng:

  • Đọc nhiều tín hiệu analog
  • Xuất PWM đồng thời trên nhiều chân
  • Phối màu RGB

🧪 Bài 2: Điều chỉnh tốc độ nhấp nháy LED bằng biến trở

🎯 Mục tiêu:

  • Dùng biến trở để điều chỉnh tốc độ nhấp nháy của LED
  • Giá trị ADC quyết định thời gian delay

🧠 Kỹ năng:

  • Dùng giá trị ADC để thay đổi tốc độ động
  • Lập trình hiệu ứng LED có thể điều chỉnh được

🧪 Bài 3: Điều chỉnh âm lượng loa bằng biến trở (buzzer)

🎯 Mục tiêu:

  • Dùng biến trở để điều chỉnh độ to nhỏ (âm lượng) của loa (buzzer)
  • Tăng điện áp → tăng độ rộng xung → âm thanh to hơn

🧠 Kỹ năng:

  • Kết hợp analogWrite() với loa
  • Hiểu cách điều khiển tín hiệu bằng PWM
    (ghi chú: trên Tinkercad có thể mô phỏng đơn giản với tone và độ dài xung)

🧪 Bài 4: Tạo thanh hiển thị mức ADC bằng nhiều LED

🎯 Mục tiêu:

  • Dùng 1 biến trở
  • Bật dần 1 đến 5 LED tương ứng với mức tăng của ADC

🧠 Kỹ năng:

  • Phân chia ngưỡng ADC thành nhiều mức
  • Điều khiển từng LED sáng/tắt theo vùng giá trị

🧪 Bài 5: Hiển thị giá trị ADC và độ sáng LED trên LCD

🎯 Mục tiêu:

  • Vừa điều khiển độ sáng LED theo biến trở
  • Vừa hiển thị giá trị ADC và độ sáng (0–255) lên LCD

🧠 Kỹ năng:

  • Kết hợp ADC – PWM – LCD
  • Hiển thị dữ liệu số trực quan
  • Phân tích và trình bày thông tin ra thiết bị ngoại vi