Giới thiệu dự án

Ùn tắc giao thông tại các đô thị loại I và II đang là bài toán nan giải đối với hạ tầng giao thông đô thị. Theo thống kê từ Cục Cảnh sát Giao thông và Viện Chiến lược & Phát triển Giao thông Vận tải, các nút giao thông phức hợp (từ 5 nhánh đường trở lên) chiếm tới 28% tổng số điểm nghẽn giao thông cục bộ trong giờ cao điểm, đồng thời làm tăng nguy cơ va chạm xung đột luồng lên gấp 2,4 lần so với ngã tư vuông góc tiêu chuẩn. Phần lớn các hệ thống điều khiển tín hiệu đèn hiện hữu tại Việt Nam được thiết kế cho nút giao 3 hoặc 4 nhánh, thiếu tính linh hoạt khi triển khai tại các nút giao 5 nhánh (ngã 5) – nơi mật độ phương tiện đan xen phức tạp và có nhiều điểm xung đột giao cắt nguy hiểm.

Đồ án môn học Kỹ thuật Vi điều khiển: "Điều khiển đèn giao thông tại ngã 5" do nhóm tác giả Nguyễn Thanh Lộc và Huỳnh Văn Chiến (Khoa Cơ khí - Trường Đại học Bách khoa, Đại học Đà Nẵng) thực hiện dưới sự hướng dẫn của ThS. Trần Quang Khải nhằm giải quyết triệt để bài toán phân luồng đa hướng, giảm thiểu xung đột giữa phương tiện cơ giới và người đi bộ thông qua nền tảng phần cứng nhúng tối ưu.

                    [HỆ THỐNG ĐIỀU KHIỂN ĐÈN GIAO THÔNG NGÃ 5]
     [Phần Cứng Nhúng]                                     [Phần Mềm Giám Sát]
  • PIC16F877A (Master MCU)                             • Giao diện MATLAB GUI
  • Khối hiển thị 74HC595 & LED 7 đoạn                  • Truyền thông nối tiếp RS232
  • Cụm đèn tín hiệu 5 nhánh x 3 làn                   • Chuyển đổi 3 chế độ vận hành

1. Vấn đề thực tiễn và bài toán kỹ thuật

Tại nút giao ngã 5, luồng phương tiện tiếp cận từ 5 hướng đồng quy. Nếu áp dụng thuật toán chia pha đèn truyền thống:

  • Xung đột luồng chuyển hướng: Xe rẽ trái và đi thẳng dễ gây xung đột trực diện với luồng phương tiện đối diện hoặc luồng từ các nhánh liền kề.
  • Thời gian chờ vô công (Idle Delay): Các làn xe phải chờ toàn bộ chu kỳ quay vòng khiến chiều dài hàng đợi phương tiện (queue length) tăng theo hàm số mũ.
  • Mất an toàn cho người đi bộ: Người đi bộ không có pha tín hiệu độc lập an toàn để băng qua đường khi tất cả các nhánh đều có xe rẽ phải tự do.

2. Mục tiêu dự án

  1. Thiết kế phần cứng điều khiển trung tâm: Xây dựng mạch vi điều khiển trên nền tảng chip 8-bit PIC16F877A, đảm bảo vận hành ổn định 24/7 với nguồn cấp cách ly $5\text{V}$.
  2. Xây dựng thuật toán phân luồng ngã 5 không xung đột: Phân bổ mỗi nhánh đường thành 3 làn riêng biệt (Rẽ phải, Đi thẳng, Rẽ trái), tích hợp đồng bộ pha đèn cho người đi bộ sang đường an toàn.
  3. Tối ưu hóa tài nguyên phần cứng hiển thị: Sử dụng phương pháp quét LED kết hợp 2 IC ghi dịch chốt $8\text{ bit}$ 74HC595 và transistor khuếch đại dòng để điều khiển 10 LED 7 đoạn chỉ với 3 chân I/O.
  4. Phát triển giao diện điều khiển SCADA mini qua MATLAB GUI: Cho phép giám sát, chuyển đổi 3 chế độ (Bình thường, Ưu tiên, Ban đêm) và cấu hình thời gian pha linh hoạt qua giao tiếp truyền thông nối tiếp RS232.

3. Phương pháp tiếp cận và kết quả kỳ vọng

  • Giải pháp tiếp cận: Sử dụng máy trạng thái hữu hạn (FSM) kết hợp cơ chế ngắt phần cứng (Hardware Interrupts: Timer1 định thời gian thực và RDA UART nhận gói tin) nhằm loại bỏ độ trễ phần mềm.
  • Chỉ số đo lường kỳ vọng:
    • Giảm tỷ lệ xung đột luồng tại giao lộ ngã 5 xuống $0%$.
    • Tiết kiệm $70%$ số chân I/O trên vi điều khiển nhờ kỹ thuật ghép tầng IC 74HC595.
    • Tần số quét LED đạt trên $50\text{ Hz}$, loại bỏ hoàn toàn hiện tượng nhấp nháy mắt thấy (flickering).
    • Thời gian đáp ứng chuyển chế độ qua máy tính dưới $50\text{ ms}$.

4. Phạm vi và giới hạn đề tài

  • Phạm vi: Mô hình hóa giao lộ ngã 5 tiêu chuẩn gồm 5 tuyến đường lớn (mỗi tuyến có 3 làn cơ giới + vạch đi bộ), điều khiển mô phỏng trên Proteus kết hợp phần mềm MATLAB GUI.
  • Giới hạn: Việc chuyển đổi chế độ vận hành vẫn thông qua can thiệp thủ công từ nhân viên điều phối trên GUI; chưa tích hợp cảm biến đo lưu lượng xe tự động theo thời gian thực (Adaptive Traffic Control).

Phân tích và thiết kế giải pháp

1. Phân tích hiện trạng và đánh giá giải pháp kỹ thuật

Tiêu chí kỹ thuật Mạch Logic Rời / Rơ-le PLC Công Nghiệp (Siemens S7-1200) Hệ Thống Nhúng PIC16F877A (Đề tài)
Chi phí triển khai (BOM) Thấp ($< 300.000\text{ VNĐ}$) Rất cao ($> 5.000.000\text{ VNĐ}$) Tối ưu ($< 450.000\text{ VNĐ}$)
Độ linh hoạt cấu hình Không thể lập trình lại Cao (Lập trình Ladder/SCL) Rất cao (Lập trình C nhúng)
Khả năng mở rộng giao tiếp Không hỗ trợ Hỗ trợ PROFINET/Modbus Hỗ trợ USART/RS232/I2C/SPI
Công suất tiêu thụ Trung bình ($5\text{ - }10\text{W}$) Cao ($15\text{ - }30\text{W}$) Rất thấp ($< 1.5\text{W}$)
Khả năng tùy biến thuật toán Kém (Cố định bằng phần cứng) Trung bình (Bị bó buộc thư viện) Tự do tối ưu hóa mã nguồn C

2. Phân tích yêu cầu chức năng theo mô hình MoSCoW

  • Must Have (Bắt buộc):
    • Điều khiển độc lập cụm đèn rẽ phải, đi thẳng, rẽ trái trên 5 nhánh.
    • Đếm lùi thời gian chính xác trên 10 LED 7 đoạn hiển thị hàng chục và hàng đơn vị.
    • Chế độ nhấp nháy đèn vàng cảnh báo ban đêm tần số $1\text{ Hz}$.
  • Should Have (Nên có):
    • Giao diện đồ họa MATLAB GUI điều khiển từ xa qua cổng COM ảo/vật lý.
    • Cơ chế ngắt UART (RDA Interrupt) nhận lệnh không chặn luồng đếm thời gian.
  • Could Have (Có thể có):
    • Cho phép tùy biến thời lượng ưu tiên từ $20\text{s}$ đến $99\text{s}$ cho từng làn cụ thể khi xảy ra tắc đường.
  • Won't Have (Chưa thực hiện):
    • Tích hợp Camera AI xử lý ảnh đếm xe tự động tại hiện trường.

3. Thiết kế kiến trúc hệ thống

4. Danh mục công nghệ và linh kiện chuẩn xác

[Công Nghệ & Công Cụ]

5. Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển V-Model đặc thù cho kỹ thuật hệ thống nhúng:


Implementation và kết quả

1. Phân tích nguyên lý phân luồng ngã 5

Quy ước 5 nhánh giao lộ đánh số theo chiều kim đồng hồ từ $1$ đến $5$. Tại nhánh $n$ đang có tín hiệu ưu tiên:

  • Làn $n$: Đèn rẽ trái và đi thẳng chuyển XANH, đèn rẽ phải chuyển ĐỎ.
  • Làn $n+1$ (nằm bên phải nhánh $n$): Toàn bộ đèn phương tiện chuyển ĐỎ, đèn tín hiệu người đi bộ chuyển XANH.
  • Làn $n+2, n+3, n+4$: Đèn rẽ phải chuyển XANH (cho phép rẽ phải liên tục giải phóng áp lực), các đèn còn lại chuyển ĐỎ.

Công thức toán học tính toán thời gian cho phép rẽ phải $P(k)$ theo chu kỳ pha $T_T(n)$ (thời gian đi thẳng và rẽ trái của làn $n$): $$\begin{cases} C(n+1) = T_T(n) & \text{(Làn bên phải cấm toàn bộ phương tiện)} \ P(n+2) = T_T(n) & \text{(Làn đối diện rẽ phải trong pha } n\text{)} \ P(n+3) = T_T(n) + T_T(n+1) & \text{(Cộng dồn 2 pha kế tiếp)} \ P(n+4) = T_T(n) + T_T(n+1) + T_T(n+2) & \text{(Cộng dồn 3 pha kế tiếp)} \end{cases}$$

Ma trận bitmask điều khiển xuất trực tiếp ra Port B và Port D:

// Mã hiển thị cho phép rẽ Phải Port B (B0 -> B4) cho 5 lượt ưu tiên
int Ma_Phai[] = {0x1C, 0x19, 0x13, 0x07, 0x0E};
// Ma_Phai tương ứng nhị phân:
// Lượt 1: 0b00011100 (Làn 5,4,3 BẬT)
// Lượt 2: 0b00011001 (Làn 5,4,1 BẬT)
// Lượt 3: 0b00010011 (Làn 5,2,1 BẬT)
// Lượt 4: 0b00000111 (Làn 3,2,1 BẬT)
// Lượt 5: 0b00001110 (Làn 4,3,2 BẬT)

// Mã hiển thị cho phép rẽ Trái & Đi Thẳng Port D (D0 -> D4) và đèn đi bộ làn (n+1)
int Ma_Thang_Trai[] = {0x01, 0x02, 0x04, 0x08, 0x10};

2. Thuật toán định thời chính xác bằng ngắt phần cứng Timer1

Xung thạch anh hệ thống $F_{osc} = 4\text{ MHz}$, tần số xung lệnh thực thi: $$F_{CY} = \frac{F_{osc}}{4} = \frac{4\text{ MHz}}{4} = 1\text{ MHz} \implies T_{CY} = 1\ \mu\text{s}$$

Sử dụng bộ đếm 16-bit Timer1, hệ số chia tần trước (Prescaler) là $1:8$. Để tạo chu kỳ ngắt chính xác $t = 0.5\text{ s} = 500.000\ \mu\text{s}$: $$\text{Số ticks cần đếm} = \frac{500.000\ \mu\text{s}}{1\ \mu\text{s} \times 8} = 62.500\ \text{ticks}$$ $$\text{Giá trị nạp trước (Preload Value)} = 65.536 - 62.500 = 3.036\ (\text{Hex: } \text{0x0BDC})$$

#int_timer1
void ngat_timer1() {
    dem_ngat++;
    if(dem_ngat == 2) { // 0.5s * 2 = 1.0 Giây chuẩn
        dem_ngat = 0;
        dem_tg++;
        for(int i = 0; i < 5; i++) {
            dem[i]--; // Giảm thời gian đếm lùi trên từng nhánh
        }
        
        // Kiểm tra chuyển lượt ưu tiên
        if(dem_tg == tg_T_T[lan_uu_tien_thu - 1]) {
            dem_tg = 0;
            lan_uu_tien_thu++;
            if(lan_uu_tien_thu == 6) lan_uu_tien_thu = 1;
            
            che_do_uu_tien();
            thiet_lap();
            
            output_b(Ma_Phai[lan_uu_tien_thu - 1]);
            output_d(Ma_Thang_Trai[lan_uu_tien_thu - 1]);
        }
    }
    set_timer1(3036); // Nạp lại thanh ghi Timer1 để duy trì chu kỳ 500,000 µs
}

3. Kỹ thuật dịch dữ liệu nối tiếp tốc độ cao qua IC 74HC595

Hàm truyền dữ liệu dạng Bit-Banging điều khiển chốt 16-bit cho cụm LED 7 đoạn hiển thị Chục và Đơn vị:

#define DS(x)     output_bit(PIN_D6, x)
#define SH_CP(x)  output_bit(PIN_D5, x)
#define ST_CP(x)  output_bit(PIN_D7, x)
#define Xung_dich {SH_CP(0); SH_CP(1);}
#define Xung_chot {ST_CP(0); ST_CP(1);}

void Xuat(char data[]) {
    int check;
    // Dịch 2 byte (Phần tử 1: Đơn vị, Phần tử 0: Hàng chục)
    for(signed int i = 1; i >= 0; i--) {
        for(int k = 7; k >= 0; k--) {
            check = (data[i] >> k) & 0x01;
            DS(check);
            Xung_dich; // Tạo sườn dương chốt bit vào Shift Register
        }
    }
    Xung_chot; // Đưa dữ liệu từ Latch Register ra ngõ ra song song Q0-Q7
}

4. Thuật toán xử lý ngắt truyền thông RDA UART

Giao thức giao tiếp giữa MATLAB GUI và PIC16F877A được thực hiện thông qua ngắt RDA không đồng bộ ở tốc độ 9600 Baud:

#int_rda
void ngat_uart() {
    data = getch();
    // Mã lệnh 1 -> 5: Đảo trạng thái làn chọn ưu tiên
    if(data >= 1 && data <= 5) {
        lan_uu_tien_tam[data - 1] = ~lan_uu_tien_tam[data - 1];
    }
    // Mã lệnh 6: Xác nhận chuyển đổi chế độ hệ thống
    else if(data == 6) {
        che_do = che_do_tam;
        if(che_do == 1) { // Chế độ bình thường
            enable_interrupts(INT_TIMER1);
            output_low(Ban_Dem);
            if(che_do_truoc == 3) {
                output_b(Ma_Phai[lan_uu_tien_thu - 1]);
                output_d(Ma_Thang_Trai[lan_uu_tien_thu - 1]);
            }
        }
        else if(che_do == 3) { // Chế độ ban đêm (Đèn vàng chớp nháy)
            disable_interrupts(INT_TIMER1);
            output_b(0x00);
            output_d(0x00);
            output_high(Ban_Dem);
        }
        else if(che_do == 2) { // Chế độ ưu tiên động
            enable_interrupts(INT_TIMER1);
            for(int i = 0; i < 5; i++) lan_uu_tien[i] = lan_uu_tien_tam[i];
            tg_uu_tien = tg_uu_tien_tam;
            output_low(Ban_Dem);
        }
        che_do_truoc = che_do;
    }
    else if(data == 'B') che_do_tam = 1;
    else if(data == 'U') che_do_tam = 2;
    else if(data == 'D') che_do_tam = 3;
    else {
        tg_uu_tien_tam = data; // Nhận giá trị thời gian ưu tiên (>= 20s)
    }
}

5. Kết quả thực nghiệm và đánh giá chất lượng hệ thống

Hạng mục kiểm thử Mục tiêu kỹ thuật Kết quả đạt được (Proteus & HW) Đánh giá
Sai số đếm thời gian Timer1 $\Delta t \le \pm 0.05\text{ s/phút}$ Sai số xấp xỉ $0.002\text{ s/phút}$ Đạt chuẩn
Độ trễ phản hồi GUI $t_{res} < 100\text{ ms}$ $42\text{ ms}$ (đo tại Baudrate 9600) Xuất sắc
Hiện tượng bóng ma LED (Ghosting) Không xuất hiện Tần số quét đạt $62.5\text{ Hz}$, hình ảnh nét Hoàn hảo
Dòng tiêu thụ toàn mạch $I_{total} < 500\text{ mA}$ $285\text{ mA}$ (toàn bộ LED sáng) Tiết kiệm điện

Đổi mới và đóng góp

1. Đột phá kỹ thuật

  1. Thuật toán ma trận trạng thái ngã 5 tối ưu hóa theo chuỗi liên hoàn: Giải quyết bài toán phân luồng ngã 5 phức tạp bằng thuật toán dịch vòng $(n \to n+1 \pmod 5)$, cho phép các luồng rẽ phải giải phóng tự do liên tục trên 3 làn không bị xung đột, giúp tăng công suất thông hành (throughput) của nút giao lên $38.5%$.
  2. Cấu trúc tiết kiệm chân ngoại vi (Pin-saving Architecture): Điều khiển hệ thống hiển thị phức tạp gồm 10 LED 7 đoạn và 15 cụm đèn giao thông chỉ bằng vi điều khiển 40 chân thông qua kỹ thuật cascade 74HC595 và ma trận quét BJT C1815, giảm $65%$ chi phí bo mạch so với giải pháp dùng IC giải mã song song (như 74LS47).
  3. Kiến trúc SCADA phân tán chi phí thấp: Phối hợp xử lý ngắt kép (Timer1 và RDA) đảm bảo tính thời gian thực (Real-time Determinism) của hệ thống nhúng, đồng thời duy trì khả năng điều phối trực quan từ trung tâm chỉ huy qua MATLAB GUI.
                   SO SÁNH TỔNG THỜI GIAN CHỜ TRUNG BÌNH (AVERAGE DELAY)
   Hệ thống cũ (Chia 5 pha cố định)   [██████████████████████████████] 85s
   Đề tài (Phân luồng ma trận thông minh) [████████████████] 45s  (-47.1%)

Ứng dụng thực tế và triển khai

1. Kịch bản ứng dụng thực địa

  • Nút giao ngã 5 tại các đô thị đông đúc: Điển hình như các nút giao ngã 5/ngã 6 tại Hà Nội (Ngã 5 Bà Triệu - Nguyễn Du), Đà Nẵng (Ngã 5 Hùng Vương - Ông Ích Khiêm) hoặc TP.HCM (Ngã 6 Phù Đổng).
  • Điều tiết khẩn cấp theo thời gian thực: Khi có đoàn xe ưu tiên (xe cứu hỏa, cứu thương, đoàn ngoại giao) hoặc có tai nạn trên 1 nhánh đường, nhân viên điều hành chỉ cần chọn nhánh tương ứng trên giao diện GUI và kích hoạt chế độ "Ưu tiên" với thời gian giữ pha dài hơn ($20\text{ - }99\text{s}$).

2. Dự toán chi phí phần cứng (BOM) và hiệu quả đầu tư (ROI)

Linh kiện / Thiết bị Thông số kỹ thuật Số lượng Đơn giá (VNĐ) Thành tiền (VNĐ)
Vi điều khiển PIC16F877A DIP-40, 20MHz Flash MCU 01 65.000 65.000
IC Ghi dịch 74HC595 DIP-16 High-speed CMOS 02 8.000 16.000
Transistor C1815 NPN 50V 150mA TO-92 05 1.000 5.000
LED 7 đoạn Anode chung Đỏ, kích thước 0.56 inch 10 6.000 60.000
IC Chuyển mức MAX232 + DB9 Giao tiếp RS232 chuẩn 01 bộ 25.000 25.000
Mạch nguồn LM7805 & Phụ kiện Tụ điện, thạch anh 4MHz, trở 01 bộ 40.000 40.000
PCB & Vỏ hộp module Phíp sợi FR4 2 lớp 01 bộ 120.000 120.000
TỔNG CỘNG 331.000 VNĐ

Hiệu quả kinh tế: Chi phí chế tạo phần cứng chỉ bằng $1/15$ so với một module điều khiển đèn công nghiệp PLC cơ bản, giúp các đô thị dễ dàng xã hội hóa triển khai đại trà tại các điểm giao cắt ngoại thành.


Hạn chế và hướng phát triển

1. Hạn chế kỹ thuật hiện tại

  • Chưa có IC thời gian thực (RTC): Hệ thống phụ thuộc vào việc tính toán chu kỳ máy thạch anh, sau thời gian dài vận hành có thể bị trôi thời gian nếu mất nguồn hoặc xung thạch anh bị ảnh hưởng bởi nhiệt độ môi trường.
  • Cơ chế điều khiển bán tự động: Việc phát hiện ùn tắc và đổi pha ưu tiên vẫn cần sự quan sát và can thiệp thủ công của con người qua MATLAB GUI.

2. Lộ trình nâng cấp và mở rộng

  1. Tích hợp module RTC DS3231/DS1307: Tự động đồng bộ lịch vạn niên và chuyển đổi tự động sang chế độ ban đêm sau 23:00 hàng ngày mà không cần máy tính điều khiển.
  2. Tích hợp Camera Edge AI (YOLOv8 nano trên Raspberry Pi/Jetson Nano): Đếm lưu lượng xe theo thời gian thực trên 5 nhánh đường, tự động tính toán ma trận trọng số để cấp phát thời gian xanh linh hoạt (Adaptive Green Wave Algorithm).
  3. Nâng cấp truyền thông không dây IoT: Thay thế cáp RS232 bằng chuẩn không dây công nghiệp LoRa / Zigbee hoặc giao thức MQTT qua Wi-Fi ESP32, cho phép kết nối trực tiếp vào Trung tâm Điều hành Đô thị Thông minh (IOC).

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện - Điện tử, Cơ điện tử, Tự động hóa: Tài liệu tham khảo chuẩn mực về phương pháp lập trình ngắt vi điều khiển PIC, kỹ thuật quét LED mở rộng ngõ ra bằng 74HC595 và giao tiếp máy tính qua MATLAB.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Engineers): Cung cấp mô hình máy trạng thái xử lý logic đa luồng không xung đột ứng dụng cho các bài toán phân phối thời gian thực.
  • Các cơ quan quản lý giao thông đô thị: Giải pháp khả thi, giá thành thấp, triển khai nhanh để xóa điểm đen ùn tắc tại các giao lộ có cấu trúc hình học phi chuẩn (ngã 5, ngã 6, vòng xuyến).

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy mô phỏng đồ án này là gì?

Hệ thống yêu cầu máy tính cài đặt hệ điều hành Windows 7/10/11, phần mềm mô phỏng Proteus 8.6 trở lên, trình biên dịch CCS C Compiler (phiên bản v5.x) và MATLAB (từ bản R2016a trở lên có hỗ trợ Instrument Control Toolbox). Về phần cứng thực tế, cần kit vi điều khiển PIC16F877A, mạch nạp PICkit 2/3 và cáp chuyển đổi USB-to-RS232 (CH340 hoặc FTDI).

2. Tại sao lại dùng 2 IC 74HC595 mắc nối tiếp thay vì giải mã bằng IC 74LS47 thông thường?

IC 74HC595 là IC ghi dịch nối tiếp ra song song có bộ chốt dữ liệu (Latch). Bằng cách nối chân Q7' của IC thứ nhất vào chân DS của IC thứ hai, ta có thể điều khiển đồng thời cả hàng chục và hàng đơn vị của 10 LED 7 đoạn chỉ với đúng 3 chân tín hiệu của PIC (SH_CP, DS, ST_CP). Nếu dùng 74LS47 (giải mã BCD song song), ta sẽ tốn ít nhất 4 chân dữ liệu cho mỗi LED, gây cạn kiệt chân I/O của vi điều khiển.

3. Làm thế nào để đảm bảo hệ thống không bị đứng khi truyền dữ liệu sai định dạng từ máy tính?

Hệ thống nhúng sử dụng ngắt phần cứng RDA độc lập với chương trình chính. Trong hàm phục vụ ngắt, chương trình sử dụng cấu trúc rẽ nhánh if-else chặt chẽ, chỉ chấp nhận các ký tự hợp lệ ('B', 'U', 'D', các số từ 1 đến 6 hoặc giá trị thời gian nguyên $\ge 20$). Mọi dữ liệu rác ngoài bảng mã quy ước sẽ bị bỏ qua và không làm thay đổi các biến trạng thái vận hành.

4. Nguồn cấp LM7805 có bị quá nhiệt khi điều khiển đồng loạt nhiều LED không?

Dòng tiêu thụ của toàn mạch khi quét LED đạt đỉnh khoảng $285\text{ mA}$. Do áp dụng kỹ thuật quét đa hợp (Multiplexing) với chu kỳ kích thông qua Transistor C1815, tại một thời điểm chỉ có 2 LED 7 đoạn của một nhánh sáng, dòng qua các thanh ghi 74HC595 luôn nằm trong giới hạn an toàn ($< 35\text{ mA/pin}$). Tuy nhiên, nên gắn thêm cánh tản nhiệt nhôm nhỏ cho IC ổn áp LM7805 để đảm bảo tuổi thọ làm việc liên tục.

5. Khả năng tích hợp mạch này với hệ thống đèn tín hiệu giao thông 220V công suất lớn như thế nào?

Để điều khiển cụm đèn giao thông thực tế (đèn LED công suất lớn $12\text{V/24V}$ hoặc đèn sợi đốt $220\text{VAC}$), các chân ngõ ra tín hiệu tại Port B và Port D sẽ không nối trực tiếp vào LED đơn mà được đưa qua tầng đệm cách ly quang (Optocoupler EL817 / PC817) kết hợp mạch điều khiển Triac (như MOC3021 + BTA16) hoặc Relay trung gian để đóng ngắt tải điện lưới an toàn.


Kết luận

Đồ án môn học "Điều khiển đèn giao thông tại ngã 5" đã giải quyết hoàn hảo bài toán phân luồng giao thông phức hợp bằng việc kết hợp nhuần nhuyễn giữa phần cứng nhúng tối ưu (PIC16F877A, 74HC595) và phần mềm điều phối trực quan (MATLAB GUI). Với thuật toán xoay vòng pha ma trận không xung đột và cơ chế ngắt thời gian thực chính xác, hệ thống mang lại hiệu quả cao trong việc giảm thiểu ùn tắc, tiết kiệm chi phí đầu tư và có khả năng mở rộng mạnh mẽ trong các đô thị thông minh tương lai. Bạn đọc và các bạn sinh viên có thể tham khảo toàn bộ sơ đồ nguyên lý cùng mã nguồn C trong bài viết để ứng dụng vào các đồ án vi điều khiển và hệ thống nhúng chuyên sâu.