![](https://thanhelectronics.com/wp-content/uploads/2024/03/simulation_001-1.png)
I. GIỚI THIỆU
1.1. TỔNG QUAN VỀ VI ĐIỀU KHIỂN 89C51 VÀ CÁC ỨNG DỤNG
- Vi điều khiển AT89C51 là một loại vi điều khiển 8-bit hoạt động trên cơ sở kiến trúc Von Neumann, được sản xuất bởi hãng công nghệ ATMEL. Nó được phát triển từ loạt vi điều khiển 8051 và được tích hợp sẵn một số tính năng như bộ nhớ lớn hơn và các chức năng nâng cao.
- Các ứng dụng thường gặp của vi điều khiển AT89C51 bao gồm: hệ thống điều khiển đèn giao thông, hệ thống đo lường tự động, hệ thống bảo mật, và hệ thống điều khiển các thiết bị trong nhà máy sản xuất.
1.2. MÔ TẢ MÁY QUẤN BĂNG KEO VÀ CÁCH HOẠT ĐỘNG
- Máy quấn băng kéo biến áp xung là thiết bị được sử dụng để quấn các lớp băng cách điện lên cuộn biến áp. Quá trình này thường áp dụng một điện áp cao tần để tạo ra dòng điện trong cuộn dây.
- Cách thức hoạt động của máy quấn băng kéo biến áp xung bao gồm các bước như: chuẩn bị dây và cuộn, định vị và giữ cuộn, áp dụng điện áp cao tần, và điều chỉnh vòng quay để quấn các lớp băng cách điện theo yêu cầu.
II. LÝ THUYẾT CƠ SỞ
2.1. NGUYÊN LÝ HOẠT ĐỘNG CỦA MÁY QUẤN BIẾN ÁP BĂNG KEO BIẾN ÁP XUNG
- Máy quấn băng kéo biến áp xung là một thiết bị được sử dụng trong quá trình sản xuất biến áp để quấn các lớp băng cách điện xung quanh cuộn biến áp.
- Nguyên lý hoạt động của máy này bao gồm việc tạo ra một điện áp cao tần, thường từ một nguồn cấp dẫn hồng ngoại hoặc cấp dẫn tinh thể, sau đó áp dụng điện áp này vào cuộn dây biến áp.
- Khi điện áp cao tần được áp dụng, dòng điện sẽ chảy qua dây và tạo ra từ trường từ dòng điện này, góp phần vào quá trình quấn các lớp băng cách điện trên cuộn biến áp.
2.2. NGUYÊN LÝ HOẠT ĐỘNG CỦA VI ĐIỀU KHIỂN 89C51
- Vi điều khiển AT89C551 là một loại vi điều khiển 8-bit, tích hợp một bộ xử lý CPU, bộ nhớ, các chân I/O và các tính năng khác.
- Vi điều khiển AT89C51 hoạt động dựa trên nguyên lý lệnh, trong đó các lệnh được lưu trữ trong bộ nhớ chương trình và thực thi một cách tuần tự.
- Vi điều khiển AT89C51 có thể giao tiếp với các thiết bị ngoại vi thông qua các chân I/O, và có khả năng điều khiển các chức năng như đếm, ghi và đọc từ bộ nhớ, và giao tiếp với các module khác.
III. THIẾT KẾ MẠCH
- Mạch điều khiển sử dụng vi điều khiển AT89S52 được thiết kế để đọc các tín hiệu từ cảm biến vòng quay và điều khiển quá trình đếm và đặt trước vòng quay cho máy quấn băng kéo biến áp xung.
- Vi điều khiển AT89S52 sẽ đọc các tín hiệu từ cảm biến và thực hiện các tính toán để đếm và đặt trước giá trị vòng quay, sau đó điều khiển động cơ quay của máy quấn băng kéo biến áp xung.
![](https://thanhelectronics.com/wp-content/uploads/2024/03/simulation_001-1-1024x720.png)
- Như sơ đồ trên máy có 2 phần: phần hiển thị và phần nút nhấn cài đặt
- Phần hiển thị gồm có:
- 4 led 7 đoạn (1 cặp hiển thị cho số vòng thực tế, 1 cặp hiển thị vòng cài đặt)
- 4 led hiển thị (1 led báo RUN, 2 led báo đang đặt chế độ chạy 1 vòng hoặc 2 vòng, led tùy ý)
- Phần cài đặt nút nhấn gồm có:
- 4 nút nhấn (1 nút START, 1 nút STOP, 1 nút tăng, 1nút giảm dành cho chế độ tùy ý)
- 1 công tắc 3 nấc (có 3 nấc cho 2 chế độ cố định là 1 vòng hoặc 2 vòng và 1 nấc cho chế độ tùy ý)
- Về nguyên tăc hoạt động tóm tắt như sau:
- Bình thường vừa mới cấp nguồn cho máy thì:
- Hai cặp led 7 đoạn sẽ hiển thị giá trị 00 – 00
- Led RUN tắt, motor không quay
- Còn khi cho máy hoạt đông sẽ như sau:
- Chọn chế độ 1 vòng: bật núm vặn sang nấc “1 vòng” sau đó đèn báo “1 vòng” sáng lên. Nhấn nút START sau đó đèn RUN sáng lên motor quay. Trên cặp led hiển thị “số vòng thực tế” giá trị vòng quay được sẽ tăng lên, khi tăng lên 1 thì motor dừng quay đèn RUN tắt.
- Chọn chế độ 2 vòng: bật núm vặn sang nấc “2 vòng” sau đó đèn báo “2 vòng” sáng lên. Nhấn nút START sau đó đèn RUN sáng lên motor quay. Trên cặp led hiển thị “số vòng thực tế” giá trị vòng quay được sẽ tăng lên, khi tăng lên 2 thì motor dừng quay đèn RUN tắt
- Chọn chế độ tùy ý: bật núm vặn sang nấc “tùy ý” sau đó đèn báo “tùy ý” sáng lên. Chọn giá trị số vòng cho trước từ 00-99 bằng 2 nút tăng hoặc giảm thì cặp led 7 đoạn hiển thị “giá trị cài đặt” sẽ thay đổi theo ý mình . Nhấn nút START sau đó đèn RUN sáng lên motor quay. Trên cặp led hiển thị “số vòng thực tế” giá trị vòng quay được sẽ tăng lên, khi tăng lên giá trị cài đặt trước đó trên cặp led 7 đoạn hiển thị “giá trị cài đặt” thì motor dừng quay đèn RUN tắt.
- Khi đang chạy thì nhấn stop đèn RUN tắt motor dừng quay
- Để thiết kế mạch điều khiển, chúng ta cần kết nối các linh kiện như vi điều khiển AT89S52, cảm biến vòng quay, động cơ quay và các linh kiện khác.
- Cảm biến vòng quay sẽ cung cấp tín hiệu về vị trí hiện tại của vòng quay, còn động cơ quay sẽ được điều khiển để quay theo giá trị đặt trước từ vi điều khiển.
- Một số chân I/O của vi điều khiển AT89S52 sẽ được sử dụng để kết nối với cảm biến và động cơ, trong khi các chân khác sẽ được sử dụng để kết nối với các linh kiện ngoại vi khác.
- Bố Trí Mạch trên Board Mạch
- Khi bố trí mạch trên board mạch, chúng ta cần đảm bảo rằng các linh kiện được kết nối một cách chặt chẽ và an toàn.
- Vi điều khiển AT89S52 cần được đặt ở vị trí trung tâm để dễ dàng tiếp cận và kết nối với các linh kiện khác trên mạch.
- Cảm biến vòng quay và động cơ quay cần được đặt ở vị trí phù hợp để đảm bảo tín hiệu và kết nối đúng đắn.
Ngoài ra, các linh kiện ngoại vi khác như bộ nguồn và các linh kiện bảo vệ cần được bố trí một cách hợp lý để đảm bảo tính ổn định và an toàn của hệ thống.
IV. THIẾT KẾ PHẦN MỀM
- Phân Tích Yêu Cầu Chương Trình
- Để đạt được mục tiêu của đề tài, chương trình phần mềm cần thực hiện các chức năng sau:
- Đọc tín hiệu từ cảm biến vòng quay để xác định vị trí hiện tại của vòng quay.
- Đếm số lần quay để xác định giá trị vòng quay từ 00 đến 99.
- Thiết lập và cập nhật giá trị đặt trước cho vòng quay.
- Giao tiếp với mạch điều khiển để điều khiển động cơ quay theo giá trị đặt trước.
- Sơ Đồ Khối của Chương Trình
- Chương trình sẽ được chia thành các phần chức năng sau:
- Đọc Tín Hiệu: Đọc tín hiệu từ cảm biến vòng quay.
- Đếm Vòng Quay: Đếm số lần quay để xác định giá trị vòng quay từ 00 đến 99.
- Đặt Trước: Thiết lập và cập nhật giá trị đặt trước.
- Điều Khiển: Giao tiếp với mạch điều khiển để điều khiển động cơ quay theo giá trị đặt trước.
- Lập Trình Chương Trình Điều Khiển Vi Điều Khiển AT89S52
- Chương trình sẽ được viết bằng ngôn ngữ lập trình C để lập trình vi điều khiển AT89S52.
- Sử dụng các hàm và thư viện phù hợp để đọc tín hiệu từ cảm biến, đếm số vòng quay, thiết lập và cập nhật giá trị đặt trước, và giao tiếp với mạch điều khiển.
- Dưới đây là source-code chương trình:
movc a,@a+dptr
mov donvi_7seg2,a
mov a,chuc2
movc a,@a+dptr
mov chuc_7seg2,a
ret
hienthi:
mov p1,#0ffh
mov p0,donvi_7seg
mov p1,#11111110b
lcall delay
mov p1,#0ffh
mov p0,chuc_7seg
mov p1,#11111101b
lcall delay
mov p1,#0ffh
mov p0,donvi_7seg2
mov p1,#11111011b
lcall delay
mov p1,#0ffh
mov p0,chuc_7seg2
mov p1,#11110111b
lcall delay
ret
delay: mov r7,#255
de1: mov r6,#255
djnz r7,de1
ret
ngat_ngoai0:
inc sovong_manu
mov a,sovong_manu
cjne a,#99,thoat_ngat0
mov sovong_manu,#00
thoat_ngat0:reti
ngat_ngoai1:
dec sovong_manu
mov a,sovong_manu
cjne a,#-1,thoat_ngat0
mov sovong_manu,#00
reti
dulieu:
db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h
end
Phân tích source-code:
- Khai báo và Định nghĩa:
- Các thanh ghi `donvi`, `chuc`, `donvi_7seg`, `chuc_7seg`, `donvi2`, `chuc2`, `donvi_7seg2`, `chuc_7seg2`, và `sovong_manu` được sử dụng để lưu trữ các giá trị và cài đặt của chương trình.
- Các bit `den_start`, `den_tuyy`, `den_2vong`, `den_1vong`, `nut_2vong`, `nut_1vong`, `nut_tang`, `nut_giam`, `nut_start`, và `nut_stop` được sử dụng để điều khiển đèn LED và các nút nhấn.
- Chương trình chính (main1):
- Thiết lập các cài đặt ban đầu cho vi điều khiển và các biến.
- Chương trình chính sẽ lặp lại vô hạn với việc gọi các chức năng `giaima_tp`, `gaima_7seg`, và `hienthi`.
- Kiểm tra và xử lý sự kiện khi người dùng nhấn các nút `start`, `stop`, `2vong`, `1vong`.
- Các chức năng phụ (giaima_tp, gaima_7seg, hienthi, delay):
- `giaima_tp`: Chia nhỏ giá trị hiện tại thành các chữ số đơn vị và chục.
- `gaima_7seg`: Dịch các giá trị số thành mã hiển thị 7 đoạn.
- `hienthi`: Hiển thị các giá trị đã được chuyển đổi lên LED.
- `delay`: Tạo thời gian trễ.
- 4.Ngắt ngoài (ngat_ngoai0, ngat_ngoai1):
- Ngắt được sử dụng để tăng hoặc giảm giá trị `sovong_manu` khi các nút `tang` hoặc `giam` được nhấn.
- Dữ liệu (dulieu):
- Là bảng mã hiển thị 7 đoạn cho các chữ số từ 0 đến 9.
- Chương trình này sử dụng ngắt ngoài để điều khiển số lần quay và có thể điều chỉnh được bằng các nút nhấn để tăng hoặc giảm giá trị.
- Giao Tiếp với Mạch Đếm và Đặt Trước
- Sử dụng các chân I/O của vi điều khiển AT89S52 để kết nối với mạch đếm và đặt trước.
Thiết lập giao tiếp đúng đắn để truyền và nhận dữ liệu giữa vi điều khiển và mạch đếm và đặt trước.