Tải bản đầy đủ (.doc) (15 trang)

ĐỒ ÁN VI ĐIỀU KHIỂNTHIẾT KẾ HỆ THỐNG ĐÈN GIAO THÔNG NGÃ TƯ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (504.91 KB, 15 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT – HÀN
KHOA:CÔNG NGHỆ - ĐIỆN TỬ - VIỄN THÔNG


`

MÔN :ĐỒ ÁN VI ĐIỀU KHIỂN
ĐỀ TÀI: THIẾT KẾ HỆ THỐNG ĐÈN GIAO THÔNG NGÃ TƯ

GVHD: Dương Tuấn Quang
SVTH: Trần Văn Trường
Lớp: CCVT07A

Đà Nẵng,ngày 12 tháng 12 năm 2016


LỜI NÓI ĐẦU

Khoa học công nghệ ngày càng hiện đại, kéo theo đó ngành điện tử cũng
có những bước tiến quan trọng đặc biệt là trong lĩnh vực vi điều khiển. Các bộ
vi điều khiển ngày càng phát triển và hoàn thiện hơn, được sử dụng trong hầu
hết các hệ thống điều khiển tự động trong công nghiệp, khoa học kỹ thuật, cũng
như trong các thiết bị dân dụng. Chính nhờ vai trò, chức năng của vi điều khiển
đã đem lại nhiều ưu điểm, nhiều tính năng đặc biệt cho các hệ thống điều khiển
thay thế con người trong các công việc đòi hỏi sự phức tạp và yêu cầu kỹ thuật
cao.
Với sự hướng dẫn của giảng viên Dương Tuấn Quang giúp em thực hiện đồ
án với đề tài: “ Thiết kế mạch đèn giao thông ngã tư”
Với mô hình này có thể giúp chúng ta có thể điều khiển hệ thống đèn đường
tắt mở theo thời gian quy định mà không cần tới sự kiếm soát thường xuyên của


con người. Trong hệ thống này thì chúng em đã sử dụng vi xử lý atmega328
điều khiển chính. Ngoài việc sử dụng atmega328 thì còn có mốt số linh kiện
phụ trợ khác.
Tuy nhiên trong quá trình àm đồ án còn có nhiều thiếu sót và còn nhiều hạn
cế về kiến thức. Mong rằng được sự góp ý chân tình từ các thầy, các cô.
Em xin chân thành cảm ơn !

2


MỤC LỤC
LỜI NÓI ĐẦU...............................................................................................................................2
MỤC LỤC......................................................................................................................................3
CHƯƠNG I : TỔNG QUAN VỀ ĐỒ ÁN...................................................................................4
1.1 phân tích yêu cầu:.............................................................................................................4
1.1.1 Các chế độ hoạt động trong ngày:..............................................................................4
1.1.2 Các linh kiện sử dụng:................................................................................................4
1.2 ỨNG DỤNG:....................................................................................................................4
CHƯƠNG II : TỔNG QUAN VỀ BỘ VI ĐIỀU KHIỂN ATMEGA328 VÀ CÁC LINH
KIỆN SỬ DỤNG...........................................................................................................................5
2.1 BỘ VI XỬ LÝ ATMEGA328...........................................................................................5
2.1.1 giới thiệu về vi xử lý ATMEGA328...........................................................................5
2.1.2 Một vài thông số của ATMEGA328..........................................................................6
2.2 LED 7 ĐOẠN..................................................................................................................7
2.2.1 Cấu tạo.......................................................................................................................7
2.2.2 Hình ảnh thực tế.........................................................................................................7
CHƯƠNG III: THIẾT KẾ HỆ THỐNG...................................................................................9
3.1 Sơ đồ hệ thống mô phỏng.................................................................................................9
3.2 Nguyên lý hoạt động :.......................................................................................................9
CHƯƠNG IV : CHƯƠNG TRÌNH ĐIỀU KHIỂN HỆ THỐNG.........................................11


3


CHƯƠNG I : TỔNG QUAN VỀ ĐỒ ÁN

1.1 phân tích yêu cầu:
Thiết kế mạch điều khiển đèn giao thông sử dụng Arduino R3, cụ thể là
dùng ATMEGA328p
1.1.1 Các chế độ hoạt động trong ngày:
Đèn giao thông tại ngã 4 với 2 pha điều khiển
- Thời gian hoạt động bình thường: các đèn xanh, vàng, đỏ hoạt động theo
thời gian đã được xác định trước
- Bộ phận hiển thị thời gian chờ của các đèn trên led 7 đoạn, gồm Có 4 led
7 đoạn: ở mỗi ngã đường sử dụng 2 led 7 đoạn để hiển thị thời gian đếm ngược.
- Hệ thống led đơn hiển thị cho các đèn xanh, đèn vàng, đèn đỏ tại các ngã
tư.
1.1.2 Các linh kiện sử dụng:
- Vi điều khiển ATMEGA328
-Vi xử lý 74HC595
- Hiển thị: Các led 7 đoạn (anode chung), các led đơn xanh, vàng, đỏ.
- Các điện trở và tụ điện cần dùng.
1.2 ỨNG DỤNG:
Một ứng dụng cơ bản của mạch đèn giao thông ngày nay là giải quyết vấn
đề nạn kẹt xe, đang diễn ra hàng ngày trong các tỉnh thành có mật độ dân số lớn
mà các nhà chức năng đang phải đau đầu hiện nay.

4



CHƯƠNG II : TỔNG QUAN VỀ BỘ VI ĐIỀU KHIỂN
ATMEGA328 VÀ CÁC LINH KIỆN SỬ DỤNG

2.1 BỘ VI XỬ LÝ ATMEGA328
2.1.1 giới thiệu về vi xử lý ATMEGA328

Vi điều khiển là một hệ vi xử lý được tổ chức trong một chip.
Các thông số chính của vi điều khiển Atmega328 như sau
+ Bộ vi xử lý
+ giao diện SPI đồng bộ
+ kiến trúc: AVR 8bit
+ xung nhịp lớn nhất: 20Mhz
+ bộ nhớ chương trình (FLASH): 32KB
+ Bộ nhớ EEPROM: 1KB
+ Điện áp hoạt động rộng: 1.8V – 5.5V
+ số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
+ số kênh xung PWM: 6 kênh (1timer 2 kênh)
5


2.1.2 Một vài thông số của ATMEGA328

Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)


Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30Ma

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)


50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng bởi
bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

6


*Sơ đồ chân trên ATMEGA328

2.2 LED 7 ĐOẠN
2.2.1 Cấu tạo
Led 7 đoạn trên thị trường có 2 loại: Anode chung và Katot chung. Mỗi led
7 đoạn có 10 chân trong đó có 8 đường điều khiển cho 7 thanh và 1 dấu chấm,
và 2 đường điều khiển cho điểm chung( Anode hoặc Katot).
Trên hình minh họa một led 7 đoạn và cấu trúc bên trong của 1 led 7 đoạn
loại Anode chung. 8 đường điều khiển kí hiệu a, b, c, d, e, f, g, dp tương ứng
với các cực Katot của các led đơn được sắp thành hình số 8 và một dấu chấm
thể hiện dấu cách thập phân. Các anode của led được nối chung với nhau và

đưa ra chân 3 và 8. Cấu trúc lọai Katot chung cũng tương tự nhưng đảo lộn

f

05
1

g

p

9

5

d

B

4
A

3
VC C

2
F

G


1

chiều của led.

1
2

d
8

LED 7_D O N _1

3

e

D 13

4
b
a
7

6

7

8

9


10

6

D O T

C

VC C

D

E

c

2.2.2 Hình ảnh thực tế
7


Nguyên lý hoạt động của led 7 đoạn cũng giống như các led đơn, nghĩa là
khi cấp dòng cho chân nào thì chân đó sẽ sáng.

Ngoài ra để mạch hoạt động cần có thêm các linh kiện sau:
- IC74HC595 : tạo xung đếm cho led 7 đoạn

- Điện trở: giúp bảo vệ các led
- Tụ điện, thạch anh tạo xung nhịp


8


CHƯƠNG III: THIẾT KẾ HỆ THỐNG
3.1 Sơ đồ hệ thống mô phỏng

3.2 Nguyên lý hoạt động :
Hệ thống led đơn hoạt động theo chế độ đã được lập trình sẵn :
Các led xanh, đỏ, vàng sẽ hoạt động theo thời gian đã định sẵn

9


Các đèn hiển thị là các Led đơn nối chung nhau anot, đèn sáng tương ứng
với mức logic thấp.
Đèn xanh ở làn 1 sẽ tương ứng là đèn đỏ ở làn 2 và ngược lại, chuyển
mức giữa các đèn sẽ xen kẽ những bộ đếm lùi thời gian.
Kết thúc mỗi bộ đếm sẽ tương ứng thiết lập lại các bit để hiển thị đèn
tiếp theo.
Giữa đèn xanh và vàng là 15 giây
Giữa đèn vàng và đèn đỏ là 2 giây
Giữa đèn đỏ và đèn xanh là 18 giây

10


CHƯƠNG IV : CHƯƠNG TRÌNH ĐIỀU KHIỂN HỆ THỐNG
int led1 = 13;
int led2 = 12;
int led3 = 11;

int led4 = 10;
int led5 = 9;
int led6 = 8;
int led7 =7;
int led8=6;
int led9=5;
int latchPin1 = A5;
//chân SH_CP của 74HC595
int clockPin1 = A4;
//Chân DS của 74HC595
int dataPin1 = A3;
int latchPin = A2;
//chân SH_CP của 74HC595
int clockPin = A1;
//Chân DS của 74HC595
int dataPin = A0;
int i;
static int point1 = 0;
static int point = 0;
const int Seg[10] = {
0b11000000,//0 - các thanh từ a-f sáng
0b11111001,//1 - chỉ có 2 thanh b,c sáng
0b10100100,//2
0b10110000,//3
0b10011001,//4
0b10010010,//5
0b10000011,//6
0b11111000,//7
0b10000000,//8
0b10010000,//9

};

11


// Hàm setup chạy một lần duy nhất khi khởi động chương trình
void setup() {
// đặt 'led' là OUTPUT
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(latchPin1, OUTPUT);
pinMode(clockPin1, OUTPUT);
pinMode(dataPin1, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
}
// Hàm loop chạy mãi mãi sau khi kết thúc hàm setup()
void loop() {
point1=18;
point=15;
digitalWrite(led1, HIGH); //Bật đèn xanh 1 trong 5 giây

digitalWrite(led6, HIGH);//BAT DEN ĐỎ 2
digitalWrite(led7, LOW);//Tat den tin hieu mau xanh 1
digitalWrite(led8, HIGH);//bat den tin hieu di bo mau do1
digitalWrite(led9, HIGH);//bat den tin hieu mau xanh2
digitalWrite(led10, LOW);//tat den tin hieu mau do 2
for(i=0;i<=15;i++)
led();
//delay(5000);
point=2;
digitalWrite(led1, LOW); //mau xanh tat 1
digitalWrite(led6, HIGH);//mau xanh bat 2
digitalWrite(led2, HIGH);//mau vang bat 1
digitalWrite(led7, LOW);// Tat den tin hieu mau xanh 1
digitalWrite(led8, HIGH);// bat den tin hieu di bo mau do1
digitalWrite(led9, HIGH);// bat den tin hieu mau xanh2
digitalWrite(led10, LOW);// tat den tin hieu mau do 2
for(i=0;i<=2;i++)
12


led();
//delay(2000);
point1=15;
point=18;
digitalWrite(led2, LOW);//Tat den vang 1
digitalWrite(led6, LOW);//TAT DEN DO2
digitalWrite(led3, HIGH);//Bat den do1
digitalWrite(led4, HIGH);//Bat den Xanh 2
digitalWrite(led7, HIGH);//Tat den tin hieu mau xanh 1
digitalWrite(led8, LOW);//bat den tin hieu di bo mau do1

digitalWrite(led9, LOW);//bat den tin hieu mau xanh2
digitalWrite(led10, HIGH);//tat den tin hieu mau do 2
for(i=0;i<=15;i++)
led();
point1=2;
digitalWrite(led3 ,HIGH);//Tắt đèn đỏ
digitalWrite(led5, HIGH);//bat den vang 2
digitalWrite(led4, LOW);//tat den xanh 2
digitalWrite(led7, HIGH);//Tat den tin hieu mau xanh 1
digitalWrite(led8, LOW);//bat den tin hieu di bo mau do1
digitalWrite(led9, LOW);//bat den tin hieu mau xanh2
digitalWrite(led10, HIGH);//tat den tin hieu mau do 2
for(i=0;i<=2;i++)
led();
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
delay(0);
}
void HienThiLED7doan1(unsigned long Giatri, byte SoLed = 2) {
byte *array= new byte[SoLed];
for (byte i = 0; i < SoLed; i++) {
//Lấy các chữ số từ phải quá trái

array[i] = (byte)(Giatri % 10UL);
Giatri = (unsigned long)(Giatri /10UL);
}
digitalWrite(latchPin1, LOW);
13


for (int i = SoLed - 1; i >= 0; i--)
shiftOut(dataPin1, clockPin1, MSBFIRST, Seg[array[i]]);
digitalWrite(latchPin1, HIGH);
free(array);
}
void HienThiLED7doan(unsigned long Giatri, byte SoLed = 2) {
byte *array= new byte[SoLed];
for (byte i = 0; i < SoLed; i++) {
//Lấy các chữ số từ phải quá trái
array[i] = (byte)(Giatri % 10UL);
Giatri = (unsigned long)(Giatri /10UL);
}
digitalWrite(latchPin, LOW);
for (int i = SoLed - 1; i >= 0; i--)
shiftOut(dataPin, clockPin, MSBFIRST, Seg[array[i]]);
digitalWrite(latchPin, HIGH);
free(array);
}
void led()
{
HienThiLED7doan1(point1, 2);
point1 = (point1 - 1) % 100UL; // Vòng tuần hoàn từ 0--99
HienThiLED7doan(point, 2);

point = (point - 1) % 100UL; // Vòng tuần hoàn từ 0--99
delay(1000);//Đợi 0.5 s cho mỗi lần tăng số
}

14



×