Professional Documents
Culture Documents
L05 Nhom 6 BTL
L05 Nhom 6 BTL
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------
NHÓM: 6
HỌ VÀ TÊN:
LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin chân thành cảm ơn bộ môn Điện tử - viễn
thông , trường Đại học Bách Khoa đã tạo điều kiện thuận lợi cho em thực hiện bài tập
lớn.
Đặc biệt chúng em xin chân thành cảm ơn thầy Bùi Quốc Bảo đã rất tận tình
hướng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện bài tập lớn vừa qua.
Chúng em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đã
tận tình giảng dạy, trang bị cho chúng em những kiến thức cần thiết, quý báu để giúp
em thực hiện được đồ án.
Mặc dù chúng em đã có cố gắng, nhưng với trình độ còn hạn chế, trong quá trình
thực hiện đề tài không tránh khỏi những thiếu sót. Chúng em hi vọng sẽ nhận được
những ý kiến nhận xét, góp ý của Thầy về những vấn đề triển khai trong bài tập lớn.
Chúng em xin trân trọng cảm ơn!
i
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
Bài tập lớn này trình bày về traffic light hay còn gọi là hệ thống đèn giao
thông. Đèn giao thông (còn được gọi tên khác là hệ thống đèn tín hiệu giao
thông, đèn điều khiển giao thông, hay đèn xanh đèn đỏ) là một thiết bị được
dùng để điều khiển giao thông ở những giao lộ có lượng phương tiện lưu thông
lớn (thường là ngã ba, ngã tư đông xe qua lại). Đây là một thiết bị quan trọng
không những an toàn cho các phương tiện mà còn giúp giảm ùn tắc giao thông
vào giờ cao điểm. Nó được lắp ở tâm giao lộ hoặc trên vỉa hè. Đèn tín hiệu giao
thông có thể hoạt động tự động hay cảnh sát giao thông điều khiển.
ii
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
MỤC LỤC
1. GIỚI THIỆU..................................................................................................................................1
2. LÝ THUYẾT..................................................................................................................................1
iii
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
iv
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
v
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
1. GIỚI THIỆU
- Lý do chọn đề tài:
Với mỗi một dân tộc, để kinh tế phát triển thì sự phát triển về khoa học, kỹ thuật là
sư cần thiết và đặc biệt quan trọng. Với sự phát triển mạnh mẽ của kinh tế như hiên
nay, giao thông đang là một bài toán khó đòi hỏi nhiều ngành, nhiều cấp phải quan tâm,
và tìm ra hướng giải quyết. Để làm giảm bớt khó khăn đó cũng như làm cho việc lưu
thông trên các tuyền đường được thông thoáng và giảm thiểu tai nạn, thì việc đặt các
cột đèn giao thông tại các ngã và thời gian quyết định đi cho phép đi và cấm đi của các
tuyến là đặc biệt quan trọng.
Đối với một ngã tư, tại mỗi thời điểm trong ngày thì sự lưu thông ở mỗi ngã tư là rất
quan trọng. Vì thế, một chương trình điều khiển đèn giao thông ngã tư được lưu thông
một cách tốt nhất là cần thiết và hết sức quan trọng.
Với những nhận định như trên, em đã quyết định chọn đề tài “Thiết kế hệ thống đèn
giao thông ngã tư” làm đề tài bài tập lớn.
- Mục tiêu:
Ngày nay cùng với sự phát triển kinh tế, việc đô thị hoá cũng đang gia tăng nhanh
chóng dẫn đến lượng phương tiện lưu thống trong các đô thị cũng tăng theo. Do đó vấn
đề đảm bảo giao thông trong các đô thị, đặc biệt tại các nút giao thông diễn ra thông
suốt là rất quan trọng.
Để việc đi lại tại các nút giao thông được thông suốt và thuận lợi thì chúng ta có thể
nhờ đến sự giúp đỡ của lực lượng Cảnh sát giao thông và các lực lượng khác. Tuy
nhiên, với các đô thị lớn có số nút giao thông nhiều thì khó có đủ lực lượng để đảm
nhiệm công việc này. Mặt khác việc nhờ đến sự giúp đỡ của Cảnh sát giao thông và các
lực lượng khác cũng khó khăn và tốn kém.
- Nội dung 1: Tìm hiểu nguyên lý, lý thuyết về cách hoạt động của hệ thống đèn
giao thông ở ngã tư, cách hiển thị và các chế độ làm việc.
- Nội dung 2: Tìm hiểu về cảm biến, vi xử lý, bo mạch phát triển, tìm hiểu lý
thuyết về các chân GPIO, các giao tiếp trong vi điều khiển UART, I2C, SPI, …, các
ngắt, … của vi điều khiển và các linh kiện cần thiết cho dự án ví dụ mạch ổn áp, mạch
nguồn. Tìm hiểu cách kết nối các led vào các chân phù hợp của vi điều khiển.
1
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
- Nội dung 3: Thiết kế bộ điều khiển hệ thống đèn giao thông, sử dụng giải
thuật sử dụng giải thuật phù hợp để mạch hoạt động đúng với chức năng đề ra.
- Cách tiếp cận:
Sử dụng tài liệu môn Kỹ thuật Cảm biến, Kỹ thuật số và Thiết kế Hệ thống nhúng
tham khảo cho đề tài.
Tham khảo thêm từ những Group học tập trên mạng xã hội, trang web học tập,
những video hướng dẫn trên Youtube.
Khảo sát một số mạch điện từ mạng internet, khảo sát các bãi giữ xe thông minh
hiện hành để chọn lựa phương án thiết kế sau này.
Từ những ý tưởng và kiến thức của mình, kết hợp sự hướng dẫn của giáo viên, em
đã lắp ráp thử nghiệm nhiều dạng mạch khác nhau để từ đó chọn lọc những mạch điện
tối ưu.
-Thiết kế sơ bộ hệ thống →
2
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
Người thực
STT Công việc Chi tiết công việc Thời hạn
hiện
Tìm hiểu các chân và
chức năng của từng chân
Tìm hiểu lý thuyết GPIO của vi điều khiển,
01/10/2022 –
1 về các chân của vi các chức năng có thể có Lê Đức Lộc
20/10/2022
điều khiển. của GPIO (một chân có
thể có chức năng INT
hay TIMER)
Tìm hiểu nguyên
lý, lý thuyết về Tìm hiểu cách hoạt động
Nguyễn Trung 01/10/2022 –
2 mạch ổn áp, mạch của mạch ổn áp, cách
Kiên 20/10/2022
nguồn, các khối led kết nối các khối hiển thị
hiển thị
3 Tìm hiểu cách sử Tìm hiểu cách để thiết Nguyễn Trung 01/10/2022 –
dụng các phần kế mạch dựa trên sơ đồ Kiên, Đặng 20/10/2022
mềm thiết kế nguyên lí, cách mô Thái Dương
mạch, các phần phỏng mạch trên phần
3
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
4
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
2. LÝ THUYẾT
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
Bộ nhớ chương trình
5
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ
nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page 0 đến page 3). Như
vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã
hóa sẽ có dung lượng 1 word (14 bit).
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có
dung lượng 13 bit (PC<12:0>). Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến
địa chỉ 0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ
0004h (Interrupt vector).
Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia làm nhiều bamk. Đối với
PIC16F877A, bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng 128 byte,
bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Function Register) nằm ở các
vùng địa chỉ thấp và các thanh ghi mục đich chung GPR (General Purpose Register) nằm ở
vùng địa chỉ còn lại trong bank. Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như
thanh ghi STATUS) sẽ được đặt ở tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong
quá trình xuất và làm giảm bớt lệnh của chương trình.
Các thông số cơ bản
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit.
Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là
20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8
byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33
pin I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- Timer0: Bộ đếm 8 bit với bộ chia tần số 8 bit.
- Timer1: Bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa
- vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
- Hai bộ Capture/so sánh/điều chế độ rông xung.
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR,
CS ở bên ngoài.
- Đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit.
- Hai bộ so sánh.
- Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần. Dữ liệu bộ nhớ
- EEPROM có thể lưu trữ trên 40 năm.
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming)
- Watchdog Timer với bộ dao động trong.
- Chức năng bảo mật mã chương trình.
- Chế độ Sleep.
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
6
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
7
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
GND
Red
Yellow
Green
Tụ C1 và C2 để lọc điện áp đầu vào cấp cho chân Vi của IC 7805, tụ C1 có các dụng
cung cấp điện áp tạm thời cho chân Vi khi nguồn đột ngột bị sụt áp, tụ C2 là tụ gốm nên trở
8
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
kháng lớn, C2 có tác dụng ngăn nguồn đầu vào tăng áp đột ngột làm dạng sóng điện áp đầu
vào có hình răng cưa.
Tụ C3 và C4 để lọc điện áp cấp cho tải tiêu thụ lấy từ chân Vo của IC 7805, tụ C3 có
các dụng cung cấp điện áp tạm thời cho tải khi điện áp tải đột ngột bị sụt áp, tụ C4 trở kháng
lớn, C4 có tác dụng lọc nhiễu điện áp đầu ra (nhiễu là các điện áp không mong muốn làm cho
dạng sóng điện áp ngõ ra có hình răng cưa).
e. LED 7 đoạn
- Sử dụng 4 led đôi để đếm thời gian được lấy từ ngõ ra Port D của PIC16F877A.
- Cấp tín hiệu để chạy led đi từ Port B của Pic sau khi đi qua 2 transistor thay đổi dòng
áp để phù hợp với đèn.
9
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
cứng. Do đó mỗi lần phải lắp lại mạch dẫn đến tốn kém về kinh tế mà nhiều
khi yêu cầu đó không thực hiện được nhờ phương pháp này.
Với sự phát triển mạnh mẽ của ngành kĩ thuật đặc biệt là cho ra đời các
họ vi xử lí, vi điều khiển PLC đã giải quyết được những bế tắc và kinh tế hơn
mà phương pháp dùng IC số kết nối lại không thực hiện được.
10
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
B ộ x ử l ý t r u n g t â
thống.
Led 7 thanh hiển thị thời gian sáng của đèn.
Nút nhấn: Ở đây có 4 nút nhấn (Normal, Rush Hour, Night, Reset)
Nút nhấn Normal: Đèn Đỏ (35s), Đèn Xanh (30s), Đèn Vàng (5s).
Nút nhấn Rush Hour: Đèn Đỏ (60s), Đèn Xanh (55s), Đèn Vàng (5s).
Nút nhấn Night: Chỉ hoạt động đèn Vàng đến khi chuyển chế độ.
Nút nhấn Reset: Mỗi khi chuyển chế độ dùng nút Reset để chuyển.
Cảm biến mưa: Có 2 mức tín hiệu 0 và 1 (Mức 0: Tắt chế độ mưa, Mức 1: Cho phép chế
độ mưa được hoạt động)
- Schematic:
12
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
13
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
14
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
b. Hoạt động
Nút nhấn Normal: Đèn Đỏ (35s), Đèn Xanh (30s), Đèn Vàng (5s).
Nút nhấn Rush Hour: Đèn Đỏ (60s), Đèn Xanh (55s), Đèn Vàng (5s).
Nút nhấn Night: Chỉ hoạt động đèn Vàng đến khi chuyển chế độ.
Nút nhấn Reset: Mỗi khi chuyển chế độ dùng nút Reset để chuyển.
15
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
Cảm biến mưa: Có 2 mức tín hiệu 0 và 1 (Mức 0: Tắt chế độ mưa, Mức 1: Cho phép
chế độ mưa được hoạt động). Khi cảm biến mưa được ở mức thì hệ thống sẽ lập tức
chuyển sang chế độ mưa.
Mode tự động:
16
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
d. Đoạn code
#include <main.h>
#use fast_io(d)
#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#byte portd=0x08
#bit rb4=0x06.4
#bit ra0=0x05.0
#bit ra1=0x05.1
#bit ra2=0x05.2
#bit ra3=0x05.3
#bit rb0=0x06.0 // led1
#bit rb1=0x06.1 // led2
#bit rb2=0x06.2 // led3
#bit rb3=0x06.3 // led4
#bit rb7=0x06.7
#bit rc0=0x07.0 // x1
#bit rc1=0x07.1 // v1
#bit rc2=0x07.2 // d1
#bit rc3=0x07.3 // x2
#bit rc4=0x07.4 // v2
#bit rc5=0x07.5 // d2
#define bat 1
#define tat 0
//--------------------------------
int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int num1,donvi1,chuc1;
int num2,donvi2,chuc2;
//---------------------delay-------------
void delay(int ms)
{
int a,b;
for(a=0;a<ms;a++)
for(b=0;b<50;b++)
{
}
17
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
}
//-------------hien thi---------------------
void ht1(void)
{
int c;
for(c=0;c<50;c++)
{
chuc1=num1/10;
donvi1=num1%10;
output_d(m[chuc1]);
rb2=bat;
delay(50);
rb2=tat;
output_d(m[donvi1]);
rb3=bat;
delay(50);
rb3=tat;
chuc2=num2/10;
donvi2=num2%10;
output_d(m[chuc2]);
rb0=bat;
delay(50);
rb0=tat;
output_d(m[donvi2]);
rb1=bat;
delay(50);
rb1=tat;
}
}
void mua()
{
rc0=tat;
rc2=tat;
rc3=tat;
rc5=tat;
delay_ms(500);
rc4=bat;
rc1=bat;
delay_ms(1000);
rc4=tat;
rc1=tat;
delay_ms(500);
}
void duongu(){
if(ra3==bat)
{
delay_ms(100);
mua();
while(ra3==bat)
18
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
{
mua:
delay_ms(500);
rc4=bat;
rc1=bat;
delay_ms(1000);
rc4=tat;
rc1=tat;
delay_ms(500);
goto mua;
}
}
}
void main(void)
{
set_tris_d(0x00);
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_a(0xff);
output_d(0xFF);
rc0=tat;
rc5=tat;
rc1=tat;
rc2=tat;
rc3=tat;
rc4=tat;
while(true)
{
// Normal
if(!ra0)
{
delay_ms(100);
while(!ra0)
{
binhthuong:
num1=35;
num2=30;
do
{
set_tris_b(0x00);
rc0=bat;
rc5=bat;
rc1=tat;
rc2=tat;
rc3=tat;
rc4=tat;
ht1();
num1--;
num2--;
19
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
duongu();
}
while(num2!=0);
num2=num1=5;
do
{
set_tris_b(0x00);
rc1=bat;
rc5=bat;
rc0=tat;
rc2=tat;
rc3=tat;
rc4=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num2!=0);
num1=30;
num2=35;
do
{
set_tris_b(0x00);
rc2=bat;
rc3=bat;
rc0=tat;
rc1=tat;
rc4=tat;
rc5=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num1!=0);
num1=num2=5;
do
{
set_tris_b(0x00);
rc2=bat;
rc4=bat;
rc0=tat;
rc1=tat;
rc3=tat;
rc5=tat;
ht1();
num1--;
num2--;
20
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
duongu();
}
while(num1!=0);
goto binhthuong;
}
}
// Rush hour
if(!ra1)
{
delay_ms(100);
while(!ra1)
{
caodiem:
num1=60;
num2=55;
do
{
set_tris_b(0x00);
rc0=bat;
rc5=bat;
rc1=tat;
rc2=tat;
rc3=tat;
rc4=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num2!=0);
num2=num1=5;
do
{
set_tris_b(0x00);
rc1=bat;
rc5=bat;
rc0=tat;
rc2=tat;
rc3=tat;
rc4=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num2!=0);
num1=55;
num2=60;
do
{
21
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
set_tris_b(0x00);
rc2=bat;
rc3=bat;
rc0=tat;
rc1=tat;
rc4=tat;
rc5=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num1!=0);
num1=num2=5;
do
{
set_tris_b(0x00);
rc2=bat;
rc4=bat;
rc0=tat;
rc1=tat;
rc3=tat;
rc5=tat;
ht1();
num1--;
num2--;
duongu();
}
while(num1!=0);
goto caodiem;
}
}
// che do Night
if(!ra2)
{
delay_ms(100);
while(!ra2)
{
dem:
delay_ms(500);
rc4=bat;
rc1=bat;
delay_ms(1000);
rc4=tat;
rc1=tat;
delay_ms(500);
goto dem;
}
}
22
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
}
}
Nhóm em chủ yếu sử dụng phần mềm proteus để thực hiện mô phỏng và phần mềm
altium để design và thiết kế mạch in.
Trên proteus hệ thống chạy tốt, test code mạch chạy hoàn toàn đúng.
Tuy nhiên, do lỗi ở phần thiết kế nên mạch chúng em khi gia công ra không hoạt động
được .
23
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
24
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
Các vấn đề cần hoàn thành Đánh giá Phân chia % số điểm
Tìm hiểu lí thuyết Hoàn thành tốt và đúng Chia đều cho từng thành
thời hạn viên trong nhóm
Thiết kế và mô phỏng Hoàn thành đúng thời hạn
Đóng góp ý kiến Đóng góp ý kiến nhiệt
tình, đưa ra được nhiều ý
kiến để cùng thảo luận
Mục tiêu chung của đề tài: Mục tiêu đầu đã hoàn
hiểu được cách hình thành thành nhưng mục tiêu thứ
một hệ thống nhúng sử hai là thực hiện mạch in thì
dụng vi điều khiển và hiện vẫn chưa hoàn thành được
thực hóa mạch in
Sau khi thực hiện đề tài này, nhóm chúng em học được rất nhiều kinh nghiệm bổ ích
trong việc thiết kế một hệ thống nhúng. Học được cách sử dụng các phần mềm viết chương
25
Bài tập lớn môn học GVHD: Bùi Quốc Bảo
trình cho vi điều khiển như PIC-C Compiler, phần mềm mô phỏng như Proteus, phần mềm
thiết kế mạch in Aitium. Bên cạnh đó, chúng em cũng phần nào hiểu rõ hơn về vi điều khiển
PIC 16F877A và cách tính toán, sử dụng hợp lí các linh kiện cho một hệ thống nhúng. Tuy
nhiên, trong quá trình thiết kế có sai sót nên chúng em vẫn chưa hoàn thành được mạch trên
thực tế và nhóm chúng em vẫn chưa khắc phục được.
Đề tài này của chúng em có thể sử dụng ổn trong thực tế. Sau này có thể thêm một số
chi tiết đèn để báo hiệu cho người đi bộ
[1] Hạnh Nhất, “lập trình cho PIC sử dụng PIC C Compiler trang 50”,
https://www.academia.edu/6861661/L%E1%BA%ADp_Tr%C3%ACnh_Cho_PIC_D
%C3%B9ng_PIC_C_Compiler_Trang_50
[2] Microchip Technology, “ PIC16F877A datasheet (PDF),
https://www.alldatasheet.com/datasheet-pdf/pdf/82338/MICROCHIP/PIC16F877A.html
[3] Điện tử tương lai, “Giới thiệu về PIC16F877A”, https://dientutuonglai.com/gioi-thieu-
pic-16f877a.html
[4] Zakaria Mohammed, “Basic timing trafic control using PIC16F877A”,
https://blog.mazitekgh.com/2016/10/basic-timing-trafic-control-using.html
26