đề tài: điều khiển động cơ dc
Trang 1LỜI CẢM ƠN
Người thực hiện đề tài xin được gửi lời cảm ơn chân thành đến quý Thầy cô trong khoa Điện – Điện Tử và nhất là quý Thầy cô thuộc bộ môn Điện Tử - Viễn Thông đã giảng dạy và truyền đạt kiến thức chuyên ngành cho người thực hiện đồ
án trong thời gian vừa qua
Đặc biệt người thực hiện xin gửi lời cảm ơn sâu sắc tới thầy Đặng Phước Hải Trang vì sự tận tình hướng dẫn cũng như đã tạo những điều kiện thuận lợi nhất cho người thực hiện đồ án để có thể thực hiện và hoàn thành tốt đề tài này
Người thực hiện đồ án cũng không quên cảm ơn các bạn trong lớp đã trao đổi, góp ý để người thực hiện hoàn thành đề tài này một cách tốt đẹp và đúng thời gian
Mặc dù đã có nhiều cố gắng và nỗ lực thực hiện, nhưng do kiến thức cũng như khả năng bản thân còn nhiều hạn chế nên trong quá trình thực hiện đề tài không thể tránh khỏi những sai phạm, thiếu sót…Rất mong nhận được sự góp ý, chỉ dẫn từ nơi quý thầy cô và các bạn sinh viên
Người thực hiện đề tài
Võ Phong Phú
Trang 2Mục lục Phần A : Giới thiệu
Nhận xét của giáo viên hướng dẫn
Nhận xét của giáo viên phản biện
Trang chấm ĐAMH của GVHD
Lời cám ơn 1
Mục lục 2
Danh sách hình vẽ 2
Danh mục bảng biểu 3
Phần B: Nội Dung 5 Chương 1: Mở Đầu 5
1.1 Khái quát vấn đề 5
1.2 Mục tiêu yêu cầu của đề tài 6
1.3 Nội dung đề tài 6
Chương 2:Cơ sở lý thuyết 7
2.1 Phương pháp điều chế độ rộng xung PWM 7
2.2 Các linh kiện sử dụng trong mạch 8
2.2.1 Giới thiệu vi điều khiển AT89S52 8
2.2.2 Mô tả AT89S52 9
2.2.2a Sơ đồ chân 89S52 9
2.2.2b Chức năng các chân 89S52 10
2.2.3 Led và Button 12
2.2.4 L298 N 13
2.2.5 Động cơ DC 15
Trang 3Chương 3: Tính toán và thiết kế hệ thống 16
3.1 Thiết kế phần cứng 16
3.1.1 Mạch nguyên lý 16
3.1.2 Các khối chính 17
3.2 Mạch in 19
Chương 4: Thi công phần mềm, mô phỏng, kết quả nghiên cứu 20
4.1 Điều chế PWM để điều khiển động cơ DC 20
4.2 Lưu đồ chương trình 25
4.3 Chương trình 26
4.4 Kết quả mô phỏng bằng phần mềm proteus 32
4.5 Kết quả thi công mạch 32
Chương 5: Kết luận và hướng phát triển 33
5.1 Kết luận 33
5.2 Hướng phát triển 33
Phần C: Phụ lục tài liệu tham khảo Tài liệu tham khảo 34
Trang 4LIỆT KÊ BẢNG
Bảng 2.1 Chức năng các chân của Port 3 10
Bảng 2.2 Chức năng các chân của L298N 14
LIỆT KÊ HÌNH Hình 2.1 Đồ thị dạng xung điều chế PWM 7
Hình 2.2 Sơ đồ khối AT89S52 9
Hình 2.3 Sơ đồ các chân AT89S52 10
Hình 2.4 Mạch Reset vi điều khiển 11
Hình 2.5 Mạch kết nối thạch anh cho vi điều khiển 12
Hình 2.6a LED 12
Hình 2.6b Nút nhấn 4 chân 17
Hình 2.7a IC L298N 13
Hình 2.8 Động cơ DC 15
HÌnh 2.9 Cấu tạo động cơ DC 15
Hình 3.1 Sơ đồ mạch nguyên lý 16
Hình 3.2 Khối hiển thị 17
Hình 3.3 Khối Led báo và reset 17
Hình 3.4 Khối mạch cầu H 18
Hình 3.5 Khối nút điều khiển 18
Hình 3.6 Khối vi điều khiển 19
Hình 3.7 Hình mạch in 19
Hình 4.1 Hình mô phỏng mạch 32
Hình 4.2 Mạch thực tế 32
Trang 5Với sự ra đời và phát triển của vi xử lý thì vấn đề điều khiển động cơ 1 chiều không còn là vấn đề khó khăn nữa Động cơ có thể điều khiển với nhiều cấp tốc độ khác nhau
và điều khiển dừng, đảo chiểu , nhanh chậm dễ dàng được
1.2 Mục tiêu yêu cầu của đề tài:
Vi xử lý 8501 là loại dòng vi xử lý khá là thông dụng đã có mặt từ rất lâu và được ứng dụng vào nhiều các thiết bị điều khiển hay tự động hóa Nên việc điều khiển động cơ 1 chiều với dòng vi xử lý này là 1 phương pháp tối ưu và kinh tế đối với bài toán điều khiển động cơ DC ngày nay
Trang 61.3 Nội dung đề tài
Trên cơ sở những kiến thức đã học từ môn vi xử lý Em đã thực hiện đề tài : Điều khiển động cơ một chiều (DC) Với yêu cầu là điều khiển : Dừng, Quay thuận, Quay nghịch, Tăng tốc, Giảm tốc
Để điều khiển tốc độ của động cơ một chiều thì có rất nhiều phương pháp, trong đồ án của mình chúng em xin trình bày điều khiển động cơ dùng họ vi điều khiển 8051 bằng phương pháp đếm xung (dùng động cơ có sử dụng encoder) Trong đồ án của mình chúng em sử dụng IC 89C52 để lập trình điều khiển động cơ một chiều DC nhỏ hơn 24V, sử dụng IC L298N để tăng công suất
Trang 7Chương 2 : Cơ sở lý thuyết
Đối với điều khiển tốc độ động cơ DC trong robot, phương pháp được sử dụng phổ biến nhất là điều chế độ rộng xung (Pulse Width Modulation) hay được gọi tắt là điều xung, băm xung hoặc PWM
2.1 Phương pháp điều xung PWM
PWM là phương pháp điều chỉnh điện áp ra tải hay nói cách khác là phương pháp điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông dẫm đếm sự thay đổi điện áp
Trang 8Điều xung PWM bằng phần mềm:
Điều xung PWM một cách đơn giản là đưa 1 chân nào đó của vi điều
khiển lên mức 1, sau đó đưa xuống mức 0 Công việc này được lặp
đi lặp lại liên tục sẽ tạo ra xung, và tốc độ của động cơ sẽ tương ứng
với duty cycle
2.2 Các linh kiện sử dụng trong mạch
Có rất nhiều loại vi điều khiển khác nhau có thể sử dụng trong mạch đồng hồ này như vi điều khiển pic, avr, 8051…
Các loại vi điều khiển pic hay avr có nhiều ưu điểm hơn so với 8051 như hỗ trợ kết nối ngoại vi tốt hơn, tốc độ xử lý nhanh hơn, lập trình đơn giản hơn Nhưng giá thành thì lại cao hơn nhiều so với 8051 mà trong mạch này người thực hiện đề tài sử dụng AT89S52 Việc sử dụng quá tốn kém cho một mạch là không cần thiết trong khi đó một chip cũng có thể làm được điều này mà giá thành rẻ hơn thì đó là lựa chọn tối ưu hơn
2.2.1 Giới thiệu Vi Điều Khiển AT89S52:
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất Các sản phẩm AT89S52 thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những lệnh số học 8 bit gồm cả lệnh nhân và lệnh chia Nó cung cấp những hổ trợ mở rộng trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có thể xóa
và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
3 bộ Timer/counter 16 Bit
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
Trang 9 64 KB vùng nhớ dữ liệu ngoại
4µs cho hoạt động nhân hoặc chia
Hình 2.2: Sơ Đồ Khối AT89S52
2.2.2 Mô tả AT89S52:
2.2.2a Sơ đồ chân 89S52:
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89S52, 89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không có chân đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau như vào ra I/O, đọc RD\, ghi WR\, địa chỉ, dữ liệu và ngắt Cần phải lưu ý một số hãng
Trang 10cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụng chip đóng vỏ 40 chân với hai hàng chân DIP nên người thực hiện đề tài chỉ tập trung mô tả phiên bản này
Hình 2.3: Sơ Đồ các chân AT89S52
2.2.2b Chức năng của các chân 89S52:
Port 0: Từ chân 32 đến chân 39 (P0.0_P0.7) Port 0 có 2 chức năng: trong các thiết
kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Port 1: Từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao tiếp với
thiết bị bên ngoài nếu cần
Port 2: Từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng kép
dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng
Port 3: Từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép.Các
chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc
tính đặc biệt của 89S52 như ở bảng 3.1:
Bảng 2.1: Chức năng các chân của Port 3
Chân Tên Chức năng
P3.0 RxD Ngõ vào Port nối tiếp
P3.1 TxD Ngõ ra Port nối tiếp
P3.2 INT0 Ngõ vào ngắt ngoài 0
Trang 11P3.3 INT1 Ngõ vào ngắt ngoài 1
P3.4 T0 Ngõ vào bên ngoài của bộ định thời 1
P3.5 T1 Ngõ vào bên ngoài của bộ định thời 0
P3.6 WR Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD Điều khiển đọc bộ nhớ dữ liệu ngoài
PSEN (Program store enable): PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc
bộ nhớ chương trình mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte mã lệnh.PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN
ở mức cao
ALE (Address Latch Enable): Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có
chức năng là bus địa chỉ vàdữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt Tín hiệu ở chân ALE là một xung trong
khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức 1 hoặc
mức 0 Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52
RST (Reset): Khi ngõ vào tín hiệu này đưa lênmức cao ít nhất 2 chu kỳ máy, các
thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch phải tự động reset
Hình 2.4: Mạch RESET Vi Điều Khiển
Trang 12Các ngõ vào bộ dao động X1, X2: Bộ tạo dao động được tích hợp bên trong 89S52
Khi sử dụng 89S52, người ta chỉ cần nối thêm thạch anh và các tụ Tần số thạch anh
tùy thuộc vào mục đích của người sử dụng, giá trị tụ thường được chọn là 33p
Hình 2.5: Mạch kết nối thạch anh cho Vi Điều Khiển
2.2.3 Led và Button
LED (viết tắt của : Light Emitting Diode) được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán dẫn loại n, đèn LED tạo ra nhiều ánh sáng hơn, tỏa nhiệt ít hơn
so với các thiết bị chiếu sáng khác vì vậy cũng tiêu thụ ít điện năng hơn
Trang 132.2.4 L298N
L298N là một drive chip tích hợp sẵn
hai mạch cầu H bên trong với chuẩn
điều khiển TTL, không có diode nội
bảo vệ Mosfet
IC L298
có khả năng hoạt động ở điện áp
cao,dòng cao
- Điện áp cấp lên tới 46V
- Tổng dòng một chiều chịu đ ợc tới
4A
- Điện áp bão hòa
- Chức năng bảo vệ quá nhiệt
- Logic 0 từ 1.5V trở xuống
Hình2.7a: L298N
Hình 2.7b: Sơ đồ chân của L298N
Trang 14Chức năng các chân :
Bảng 2.2
Trang 152.2.5 Động cơ DC
Động cơ điện một chiều là động cơ điện hoạt động với dòng một chiều Động cơ điện một chiều ứng dụng rộng rãi trong các ứng dụng dân dụng cũng như công nghiệp.Thông thường động cơ điện một chiều chỉ chạy ở một tốc độ duy nhất khi nối với nguồn điện,tuy nhiên vẫn có thể điều khiển tốc độ và chiều quay của động
cơ với sự hỗ trợ của các mạch điện tử cùng phương pháp PWM
Hình 2.8 Phần chính gồm Stato ( phần đứng yên ) với các cực từ (bằng nam châm vĩnh cửu hoặc nam châm điện), Roto với các cuộn dây quấn, cổ góp cùng chổi điện
Hình 2.9
Trang 16Chương 3: Tính toán và thiết kế hệ thống
3.1 Thiết kế phần cứng
3.1.1 Mạch nguyên lý :
Hình 3.1: Mạch nguyên lý
Trang 173.1.2 Các khối chính :
Khối hiển thị
Hình 3.2 Dùng led 7 đoạn đôi anode chung để hiển thị tốc độ
3 transistor A1013 có chức năng điều khiển cấp dòng hoặc không cấp dòng cho led,để mỗi thời điểm chỉ cho một led sáng
Khối led báo và reset
Hình 3.3: Khối led báo và reset
- Trong khối Reset chúng ta sử dụng điện trở 1K giúp treo áp cho chân reset của
vi điều khiển luôn ở mức 0V Tụ điện C3 1uF có tác dụng giảm nhiễu cho nút bấm
Trang 18- Các led D5, D6, D7 được dùng để báo cho người sử dụng biết trạng thái hiện tại của động cơ
- Để cho phép động cơ hoạt động chúng ta cần sử dụng chân EN như trong hình
vẽ Với mức 1 là cho phép và mức 0 là ngừng hoạt động Để điều khiển động cơ theo chiều thuận nghịch và tăng giảm tốc độ động cơ ta sử dụng 1 cách linh hoạt 2 chân IN1
và IN2 giống như trong hình vẽ 1 chân sẽ cấp xung PWM và chân còn lại điều khiển chiều thuận nghịch của động cơ
Khối điều khiển :
Hình 3.5 Khối nút điều khiển
Trang 19Các nút nhấn sw1,sw2,sw3,sw4,sw5 để điều chỉnh trạng thái hoạt động của động cơ, Stop, quay thuận,nghịch, tăng tốc,giảm tốc
Khối vi xử lý :
Hình 3.6 Khối vi điều khiển
Trong khối dao động chúng ta sử dụng 2 tụ C1, C2 cùng thạch anh 12Mhz
3.2 Mạch in
Hình 3.7
Trang 20Chương 4: Thi công phần mềm,mô phỏng , kết quả nghiên cứu
4.1 Điều chế PWM để điều khiển động cơ DC
Để điều khiển được tốc độ động cơ thì ta chỉ cần thay đổi độ rộng xung trong vi điều khiển Độ rộng xung càng lớn thì động cơ quay càng nhanh
Như chúng ta đã biết thì việc điều khiển nhấp nháy 1 con LED cũng là chúng ta đã điều chế được PWM rồi nhưng xung đó có độ rộng thay đổi và tần số lớn và có thể điều khiển nó bằng hàm trễ (delay) Tuy nhiên khi dùng hàm delay thì trong thời gian xung lên 5V và xuống 0V thì vi điều khiển không làm gì cả hơn nữa việc tạo xung hàm delay thì nếu ta muốn phát xung ở 2 kênh có độ rộng thay đổi là rất khó khăn cho nên chúng ta sử dụng bộ định thời timer ở đây là phương pháp tối ưu nhất
Trang 21b) Cấu hình ngắt
Trong 1 ngắt có nhiều chế độ Với ngắt Timer0 cấu hình cho nó chạy ở chế độ nào, chế độ timer hay counter, chế độ 8bit ,16bit…bằng cách gán cho giá trị tương ứng TMOD
Trang 224.1.1.2 Tạo PWM có chu kì max : 100us
a) Tạo timer 0
Do yêu cầu của bài toán là điều khiển tốc độ động cơ quay nhanh và quay chậm trong khi chạy thuận nghịch nên dữ nguyên chu kì và thay đổi thời gian mở Yêu cầu như: + Động cơ quay thuận nghịch bình thường : 1000us
+ Động cơ tăng tốc lớn nhất : 100us
+ Động cơ giảm tốc lớn nhất : 2000us
Khi bắt đầu cho timer 0 chạy thì bộ đếm của timer sẽ đếm dao động thạch anh, cứ 12 dao động cửa thạch anh thì bộ đếm timer 0 TL0 sẽ đếm tăng 1 , có thể nói timer 0 đếm chu kì máy đối với chế độ 8bit
TL0 là thanh ghi 8 bit nó đếm từ 0 đến 255 Nếu nó đếm đến 256 thì nó tràn bộ đếm TL0 lại quay về 0 và cờ ngắt TF0 tự động nạp lại giá trị 1 và ngắt được xảy ra
Trang 23Như đối với bài toán này thì ta chỉ cần tạo timer 0 là 100us nên ta tính theo công thức
* Hàm khởi tạo timer0
Như đã nói ở trên muốn có giá trị timer0 nào chỉ cần gán cho TL0 để cho thanh ghi đếm sau đó tràn nhưng ở đây do tạo timer là 100us nên ta dùng chế độ 2 8 bit tự nạp void khoitaotimer0(void)// Ham khoi tao