Chọn đến phần học sinh cần nhanh chóng thông qua mục lục bằng cách click đến phần đó
Dưới đây là mẫu báo cáo thực hành tham khảo cho Bài 26. Bài giải giả lập kết quả của một nhóm học sinh khi lắp ráp mạch tự động điều chỉnh độ sáng LED dùng Arduino Uno và điện trở quang theo Hình 26.1.
Chuẩn bị lí thuyết trước khi làm báo cáo
Trước khi điền báo cáo, ta cần hiểu rõ nguyên lí hoạt động của mạch:
- Điện trở quang R1 mắc nối tiếp với R3 (10 kΩ) tạo thành mạch phân áp. Điểm nối giữa 2 điện trở được đưa vào chân A0 của Arduino.
- Giá trị điện trở R1 thay đổi theo ánh sáng:
- Chiếu sáng mạnh → R1 giảm → điện áp tại A0 cao → giá trị đọc lớn (gần 1023).
- Chiếu sáng yếu → R1 tăng → điện áp tại A0 thấp → giá trị đọc nhỏ (gần 0).
- Vi điều khiển đọc giá trị A0, dùng lệnh
map()ánh xạ ngược rồi xuất tín hiệu PWM ra chân số 9 để điều chỉnh độ sáng LED:- Môi trường tối → LED sáng mạnh.
- Môi trường sáng → LED sáng yếu hoặc tắt.
→ Đây là nguyên lí đèn ngủ tự động / đèn đường thông minh.
Báo cáo thực hành mẫu
Thông tin chung
BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN
- Họ và tên: Nguyễn Văn A (nhóm trưởng) và các thành viên nhóm 2
- Lớp: 12A1
1. Phân tích cơ chế hoạt động của mạch
Mạch điện gồm 3 phần chính kết hợp với nhau:
a) Khối cảm biến (đầu vào):
- Điện trở quang R1 cùng với điện trở R3 = 10 kΩ tạo thành cầu phân áp cấp tín hiệu vào chân A0 của Arduino Uno.
- Ánh sáng môi trường quyết định giá trị R1 → quyết định điện áp tại A0.
b) Khối xử lí (Arduino Uno):
Vi điều khiển ATmega328P thực hiện 3 nhiệm vụ chính:
- Hiệu chuẩn (calib) trong 5 giây đầu: ghi nhận giá trị nhỏ nhất (
sensorMin) khi chiếu đèn pin và giá trị lớn nhất (sensorMax) khi che kín cảm biến. - Đọc dữ liệu liên tục từ A0 bằng lệnh
analogRead(). - Ánh xạ ngược giá trị đọc được về dải 0 – 255 bằng lệnh
map(sensorValue, sensorMin, sensorMax, 255, 0).
c) Khối chấp hành (đầu ra):
- Chân số 9 (D9) xuất tín hiệu PWM qua lệnh
analogWrite(). - Tín hiệu này qua điện trở bảo vệ R2 = 220 Ω rồi cấp cho LED.
- Giá trị PWM càng lớn → LED càng sáng.
→ Kết quả: độ sáng LED thay đổi ngược chiều với ánh sáng môi trường.
2. Đo lường, kiểm tra hoạt động của mạch
a) Kết quả hiệu chuẩn (5 giây đầu):
sensorMin≈ 25 (khi rọi đèn pin trực tiếp vào điện trở quang).sensorMax≈ 945 (khi che kín điện trở quang bằng tay).
b) Bảng đo lường:
| Lần đo | Trạng thái (cường độ sáng) của LED | Ghi chú |
|---|---|---|
| 1 | LED sáng gần tối đa (giá trị PWM ≈ 230/255) | Chiếu sáng yếu |
| 2 | LED sáng vừa phải (giá trị PWM ≈ 130/255) | Chiếu sáng tự nhiên |
| 3 | LED tắt / rất mờ (giá trị PWM ≈ 15/255) | Chiếu sáng mạnh |
Ghi chú: Giá trị PWM có thể quan sát trực tiếp trên cửa sổ Serial Monitor của Arduino IDE nhờ lệnh Serial.println(sensorValue).
Nhận xét:
- Độ sáng LED tỉ lệ nghịch với cường độ sáng môi trường: môi trường càng tối, LED càng sáng và ngược lại.
- Mạch phản ứng rất nhanh (chu kì 50 ms) khi ánh sáng môi trường thay đổi.
- Sau quá trình hiệu chuẩn 5 s (LED trên bo Arduino tắt), mạch hoạt động ổn định.
3. Đánh giá kết quả và kết luận
a) Mạch điện có hoạt động đúng yêu cầu không?
- Mạch hoạt động đúng yêu cầu đề ra:
- Tự động tăng độ sáng LED khi môi trường xung quanh tối đi.
- Tự động giảm độ sáng LED khi môi trường xung quanh sáng lên.
- Quá trình biên dịch và nạp chương trình không báo lỗi.
- Các giá trị
sensorValuehiển thị hợp lí trên Serial Monitor (nằm trong dải 0 – 255).
b) Các đề xuất cải tiến:
- Thêm nút bấm hiệu chuẩn lại: khi thay đổi vị trí đặt mạch, chỉ cần bấm nút để chạy lại quá trình hiệu chuẩn 5 s, thay vì phải reset lại toàn bộ.
- Thêm cảm biến chuyển động PIR: chỉ bật LED khi vừa có người vừa có môi trường tối → tiết kiệm điện năng.
- Dùng nhiều LED hoặc LED công suất cao để làm đèn chiếu sáng thực tế (thay vì chỉ LED chỉ thị).
- Thêm mô-đun Bluetooth/Wi-Fi để điều khiển ngưỡng sáng qua điện thoại.
- Lọc nhiễu: dùng thêm tụ điện song song với điện trở quang để giảm dao động khi ánh sáng thay đổi đột ngột.
Kết luận: Nhóm đã thiết kế, lắp ráp và lập trình thành công mạch tự động điều chỉnh cường độ sáng của LED theo môi trường xung quanh, đạt yêu cầu bài thực hành và có thể phát triển thành sản phẩm ứng dụng thực tế (đèn ngủ, đèn hành lang, đèn đường thông minh).
Vận dụng
Vận dụng trang 142
Đề bài: Tìm hiểu, thiết kế một mạch tự động báo cháy ứng dụng bo mạch lập trình vi điều khiển.
Lời giải (ý tưởng thiết kế):
a) Sơ đồ khối tổng quát:
- Cảm biến khói MQ2 → chân A0 của Arduino.
- Cảm biến nhiệt độ (LM35 hoặc DHT11) → chân A1 của Arduino.
- Còi báo (buzzer) → chân D8.
- LED đỏ báo động → chân D9.
b) Nguyên lí hoạt động:
- Arduino liên tục đọc giá trị từ 2 cảm biến (khói và nhiệt độ).
- So sánh với các ngưỡng cảnh báo đã cài đặt (ví dụ: khói > 400, nhiệt độ > 50°C).
- Khi cả 2 giá trị đều vượt ngưỡng → điều khiển còi kêu và LED đỏ nhấp nháy để báo động cháy.
- Khi chỉ 1 giá trị vượt ngưỡng → báo động mức nhẹ (chỉ LED nhấp nháy).
c) Đoạn code mẫu (ý tưởng):
const int smokePin = A0;
const int tempPin = A1;
const int buzzerPin = 8;
const int ledPin = 9;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int smoke = analogRead(smokePin);
int temp = analogRead(tempPin);
if (smoke > 400 && temp > 300) {
// Cháy: bật còi + LED
digitalWrite(buzzerPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
}
delay(500);
}
→ Đây là mạch báo cháy đơn giản có thể ứng dụng cho gia đình, kho hàng, nhà xưởng — kết hợp giữa kiến thức đã học ở Bài 23 (mạch báo cháy dùng cổng logic) và Bài 25 (bo mạch lập trình vi điều khiển).

ThS. Hồ Thị Thư
(Người kiểm duyệt, ra đề)
Chức vụ: Trưởng ban biên soạn môn Công Nghệ THPT
Trình độ: Cử nhân Sư phạm Công nghệ, Chứng chỉ hạng II, Chứng chỉ STEM, Ngoại ngữ B1
Kinh nghiệm: 10+ năm kinh nghiệm tại Trường THPT Hoàng Hoa Thám
