Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 1
Mục lục
Lời mở đầu 5
Lời cảm ơn 6
Chương 1 : Họ vi điều khiển PIC và vi điều khiển PIC18F4520
7
1.1 Giới thiệu chung 7
1.2 . Vi điều khiển Pic18F4520 8
1.2.1. Tổ chức bộ nhớ (Memory Organization)
13
1.2.2. 8 x 8 HARDWARE MULTIPLIER 22
1.2.3. Ngắt (Interrupts) 23
1.2.4. Cổng vào ra (I/O Port) 32
1.2.5. Bộ định thời (Timer)
33
1.2.6. Bộ truyền nhận dữ liệu đồng bộ (EUSART-Enhanced Universal
Synchronous Asynchronous Receiver Transmitter) 37
1.2.7. Module chuyển đổi tưong tự sang số 10 bit (A/D) 50
Chương 2 : Thiết kế bộ điều khiển PID
số 57
2.1 Thiết kế mô hình phần cứng mạch điều khiển 57
2.1.1. Yêu cầu thiết kế 57
2.1.2. Các khối chức năng trên kit điều khiển 58
a) Khối vi điều khiển trung tâm 58
b) Khối giao tiếp máy tính qua cổng nối tiếp 59
c) Khối bàn phím 60
3.4 Cảm biến (Encoder) 81
3.5 Hệ thống điều khiển 84
3.6 Một số hình ảnh về Kit điều khiển động cơ sử dụng vi điều khiển PIC 86
3.7 :Kết quả thực nghiệm 87
3.8 So sánh kết quả mô phỏng và thực
tế 88
Kết luận 89
Tài liệu tham khảo 91
Phụ lục Code phần mềm 92 Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 3
MỤC LỤC HÌNH VẼ
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520 9
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520 10
Hình 1.3: Tổ chức bộ nhớ chương trình 13
Hình 1.5: Clock/Instruction Cycle 15
Hình 1.6 Instruction Pipeline Flow 15
Hình 1.7 Instruction In Program Memory 16
Hình 3.7 Mô phỏng trên Simulink các phương pháp điều khiển 78
Hình 3.9 Đặc tính mô phỏng 78
Hình 3.10 Sơ đồ chân L298 79
Hình 3.11: Các chế độ của L298 80
Hình 3.12 : Sơ đồ giải pháp 81
Hình 3.13 : Mô hình1 - En coder quang tương đối 81
Hình 3.14 : Phương thức hoạt động Encoder quang tương đối 82
Hình 3.15 : Mô hình 2 -En coder quang tương đối 82
Hình 3.16 : Sơ đồ xung của En coder quang tương đối(mô hình 2) 83
Hình 3.17 Sơ đồ hệ thốngđiều khiển động cơ 84
Hình 3.18 Cấu trúc hệ thống điều khiển 84
Hình 3.19 Cấu trúc khối điều khiển động cơ 85
Một số hình ảnh mạch điều khiển động cơ một chiều 86
Hình 3.20 Đặc tính với bộ điều khiển PI 87
Hình 3.21 Đặc tính với bộ đièu khiển PID 87
Hình 3.22 Hệ thống khi có nhiễu 88
Hình 3.23 Đặc tính khi hệ thống có thay đỏi giá trị đặt 88
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 5
trong ngành điều khiển tự động. Có thể thiết kế điều khiển cho đối tượng độngcơ điện
một chiều theo nhiều phương pháp như :dùng PLC & biến tần, điện tử công suất, vi
điều khiển… Mỗi phương pháp có ưu và nhược điểm khác nhau nhưng đều có mục
đích ổn định và điều khiển được tốc độ động cơ. Ngày nay vi điều khiển phát triển sâu
rộng và ngày càng ứng dụng nhiều trong cài đặt thiết kế bộ điều khiển cho các đối
tượng công nghiệp. Trên cơ sở muốn tìm hiểu về lĩnh vực vi điều khiển chúng em chọn
đề tài: Thiết kế bộ điều khiển PID số trên nền vi điều khiểnPIC. Vì khả năng và thời
gian có hạn nên không thể tránh khỏi những thiếu sót trong đồ án. Do vậy chúng em
rất mong được thầy cô và bạn bè đóng góp xây dựng để đồ án của chúng em được hoàn
thiện hơn.
Hà Nội, ngày tháng năm 2009
Sinh viên
Phạm Văn Cường
Hoàng Văn Quân
Lớp ĐKT1 - K49
Lời cảm ơn
Đầu tiên chúng em xin chân thành gửi lời cảm ơn tới nhà truờng, khoa điện, bộ
môn ĐKTĐ, các thầy cô đã dạy dỗ và dìu dắt chúng em trong suốt 5 năm học vừa qua
để có được những kiến thức chuyên môn cơ sở sau này chúng em có thể vào đời làm
việc, sử dụng có ích cho xã hội.
Để thực hiện thành công đồ án là sự hướng dẫn, chỉ bảo tận tình của PGS.TS Phan
Xuân Minh, Người đã hướng dẫn tận tình , giúp chúng em định hướng, góp ý và cung
cấp ý tưởng cũng như chỉ dẫn tài liệu và các tiến trình thực hiện đồ án .Sự hướng dẫn
của cô là một yếu tố quan trọng để chúng em có thể hoàn thành đồ án này .
Cuối cùng chúng em xin chân thành gửi những lời cảm ơn sâu sắc đến cha mẹ và
gia đình, những người luôn sát cánh cùng chúng em, nuôi dưỡng chăm sóc chúng em
tạo điều kiện tốt nhất cho chúng em học tập để có kết quả như ngày hôm nay. Chúng
em xin chân thành cảm ơn
sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện hiện nay đều có sự
góp mặt của vi điều khiển và vi xử lí. Ứng dụng vi điều khiển trong thiết kế hệ thống
làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của
thiết bị và hệ thống.
Trên thị trường hiện nay có nhiều họ vi điều khiển để lựa chọn như: 8051,
Motola68HC, AVR, ARM, Pic…và có lẽ 8051 là dòng mà chúng ta được làm quen
nhiều nhất trong môi trường đại học nhưng tại sao chúng ta chọn dòng vi điều khiển Pic
để thực hiện ứng dụng và phát triển không ngoài những nguyên nhân sau:
- Họ vi điều khiển Pic phát triển và sử dụng phổ biến ở nước ta => việc tìm mua và
trao đổi kinh nghiệm là hết sức thuận lợi.
- Giá thành các dòng Pic là không quá mắc.
- Các dòng Pic có đầy đủ tính năng để hoạt động độc lập.
- Là sự bổ sung hợp lý về kiến thức cũng như ứng dụng cho họ vi điều khiển 8051
- Có sự hỗ trợ cao của nhà sản xuất về các công cụ lập trình, trình biên dịch, mạch
nạp Pic từ đơn giản tới phức tạp. Không những vậy các tính năng đa dạng của các
đòng Pic không ngừng được phát triển.
- Có nhiều bộ phận ngoại vi ngay trên chip, bao gồm: Cổng và/ra số, bộ biến đổi
ADC, bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung (PWM)…
- Bộ nhớ chương trình và bộ nhớ dữ liệu được tích hợp ngay trên chip.
Đây là họ VĐK được chế tạo theo kiến trúc RISC (Reduced Intruction Set
Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác, nó
còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình.
Pic18F4520 nằm trong dòng sản phẩm PIC18F2420/2520/4420/4520 của nhà sản
xuất Microchip với đặc điểm 28/40/44 -Pin Enhanced Flash Microcontrollers with
10Bit A/D and nanoWatt Technology. Dòng sản phẩm này có nhiều cải tiến đáng kể về
tính năng so các dòng Pic trước đó như :
- Bộ nhớ chương trình được tăng cường (16Kbytes for PIC18F2420/4420 devices
and 32Kbytes for PIC18F2520/4520 devices).
Vi điều khiển Pic
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 10
Power on Reset và dò Brown out khả trình
Bộ tạo dao động RC được định cỡ bên trong
Các nguồn ngắt bên trong và bên ngoài - I/O và các kiểu đóng gói
32 đường I/O khả trình
Đóng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 11
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520
Sơ đồ chân của các vi điều khiển Pic18F4420/4520
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520
Sau đây là giới thiệu cấu tạo chân loại 40 chân (40 Pin PDIP):
• Chân 1(MCLR/V
PP
/RE3) :
- MCLR là đầu vào Master Clear (reset) hoạt động ở mức thấp dể reset toàn bộ thiết
bị.
- V
PP
dùng để thay đổi điện áp đầu vào.
- RE3 đầu vào số.
Các chân thuộc cổng vào ra Port A
• Chân 2(RA0/AN0):với RA0 là cổng vào ra số, AN0 là đầu vào tương tự Input0.
• Chân 3(RA1/AN1): RA1 là cổng vào ra số, AN1 là đầu vào tương tự Input1.
• Chân 4(RA2/AN2/V
sử dụng chung .
• Chân 14(OSC2/CLKO/RA6): OSC2 là đầu ra bộ dao động thạch anh được nối với
thạch anh hoặc bộ công hưởng dể lựa chọn dạng bộ dao động thạch anh. CLK0 có tần
số bằng ¼ tần số của OSC1 đọ rộng chu kì lệnh, RA6 là đầu vào ra chung.
Các chân cổng vào ra hai chièu Port B. Port B có thể lập trình bằng phần mềm khi cho
kéo đầu vào bên trong yếu lên trên toàn bộ đầu vào.
• Chân 33(RB0/INT0/FLT0/AN12): Với RB0 là cổng vào ra số, INT0 là đầu vào ngắt
ngoài Interrup 0, FLT0 là đầu vào báo lỗi PWM được tăng cường CCP1, AN12 đầu
vào tương tự Input 12.
• Chân 34(RB1/INT1/AN10): RB1 là đầu vào ra số, INT1 đầu vào ngắt ngoài Interrup1,
AN10 đầu tương tự Input 10.
• Chân 35(RB2/INT2/AN8): RB2 là đầu vào ra số, INT2 đầu vào ngắt ngoài Interrup2,
AN8 đầu tương tự Input 8.
• Chân 36 (RB3/AN9/ccp2): RB3 là đầu vào ra số, AN9 đầu tương tự Input 9, CCP2 (
Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11):): RB4 là đầu vào ra số, KBI0 thay đổi mở ngắt, AN11
đầu tương tự Input 9.
• Chân 38(RB5/KBI1/PGM): RB5 đầu vào ra số, KBI1 thay đổi mở ngắt, PGM cho
phép có thể lập trình ISCP
TM
ở điện áp thấp.
• Chân 39(RB6/KBI2/PGC): RB6 là đầu vào ra số, KBI2 thay đổi mở ngắt, PGC chân
dùng trong mạch chạy và xung lập trình ICSP.
• Chân 40(RB7/KBI3/PGD): RB7 đầu vào ra số, KBI3 thay đổi mở ngắt, PGD chân
dùng trong mạch chạy và xung lập trình ICSP.
Các chân công Port C
• Chân 15(RC0/T1OSO/T13CKI):RC0 đầu vào ra số, T1OSO đầu ra bộ dao động
Timer1, T13CKI đầu vào xung bên ngoài Timer1/Timer3.
• Chân 16(RC1/T1OSI/CCP2): RC1 đầu vào ra số, T1OSI đầu vào bộ dao động Timer1,
CCP2(Capture 2 input/Compare 2 output/PWM2 output.).
thuộc, P1C đầu ra được tăng cường CCP1.
• Chân 30(RD7/PSP7/P1D): RD7 đầu vào ra số, PSP7 cổng dữ liệu song song phụ
thuộc, P1D đầu ra được tăng cường CCP1. Các chân cổng Port E • Chân 8(RE0/RD/AN5): RE0 đầu vào ra số, RD đầu vào điều khiển đọc cho cổng PSP,
AN5 đầu vào tương tự Input5. • Chân 9(RE1/WR /AN6): RE1 đầu vào ra số, WR đầu vào điều khiển viết dữ liệu cổng
PSP, AN6 đầu vào tương tự Input6. Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 14
• Chân 10(RE2/CS /AN7): RE2 đầu vào ra số, CS điều khiển chọn Chip cho cổng PSP,
AN7 đầu vào tương tự Input7.
- Đầu RE3 nằm ở chân 1
Các chân khác
• Chân 12,31(V
SS
): nối đất chuẩn cho I/O và logic.
• Chân 11,32(V
DD
): cungcấp nguồn dương cho I/O và logic.
Loại 44 chân có thêm một số chân phụ khác khi cần thiết ta có thể dễ dàng tra trong
DataSheet. Chi tiết hơn chúng ta có thể thấy qua sơ đồ khối của Pic18F4420/4520 trong
tài liệu do microchip cung cấp sẽ có hoàn toàn đầy đủ thông tin. đặc điểm cấu tạo.
1.2.1. Tổ chức bộ nhớ (Memory Organization)
ng trình theo ki
ế
n trúc Harvard
đượ
c s
ắ
p x
ế
p theo s
ơ
đồ
:
Hình 1.3: T
ổ
ch
ứ
c b
ộ
nh
ớ
ch
ươ
ng trình
T
ổ
ch
Hình 1.4: Sơ đồ địa chỉ ngăn xếp
Trong vùng ngăn xếp này cần quan tâm tới::
- Top-of-Stack Access
- Return Stack Pointer (STKPTR)
- Stack Full and Underflow Resets
Khi chúng ta lập trình cần thiết chính xác khi gọi chương trình qua lệnh Call và
Rcall nên khi tác động cần quan tâm sự thay đổi các ngăn xếp cũng như quản lý
con trỏ (Pointer). Ta có thể dùng các lệnh Push và Pop để điều khiển con trỏ. Một
quan tâm khác nữa đó là Stack Pointer Register (STKPTR) - thanh ghi con trỏ ngăn
xếp:
Bit 7 (STKFUL): bit cờ báo ngăn xếp đầy
− Giá tri 1 có nghĩa là ngăn xếp đã đầy hoặc tràn
− Giá trị 0 thì ngăn xếp vẫn chưa bị đầy hoặc tràn
Bit 6 (STKUNF): bit cờ báo tràn dưới
− Giá trị 1: xảy ra tràn dưới
− Giá trị 0: không có tràn dưới
Bit 5 (Unimplementad): mang giá trị “0”
Bit 4-0 (SP<4:0>:Các bit xác định con trỏ ngăn xếp
Chúng ta có thể xóa bit 6 và bit 7 nhờ phần mềm hoạc bởi một POR
• FAST REGISTER STACK
Nhóm thanh ghi này gồm có các thanh ghi: Status, WREG, BSR giúp việc khôi phục
nhanh lựu chọn cho các ngắt. Ví dụ một chương trình:
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 17
Việc quản lý tốt bộ nhớ chương trình sẽ giúp ta thực hiện chương trình tốt hơn cũng
như tối ưu câu lệnh.
nhanh tới SFRs và phần Bank0 của GPR nếu không sử dụng BSR.
Chi tiết các bank thanh ghi và chức năng ta có thể theo dõi kĩ hơn trong dataSheet
Sau đây là một số cấu trúc các thanh ghi điển hình:
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 20
Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520
Thanh ghi Status (Status Register)
Bit 7-5 (Unimplemented): mang giá trị “0”
Bit 4 (N): bit xác định dấu(Negative bit) dược sử dụng cho số có dấu(số bù 2), nó
được xác dịnh khi kết quả mang dấu âm(ALU MSB=1)
− Giá trị 1: kết quả là âm
− Giá trị 0: kết quả là dương
Bit 3 (OV): bít báo tràn(overflow bit) được sử dụng cho số có dấu (số bù 2), nó
xác định báo tràn cho độ dài 7 bit cái là nguyên nhân thayđổi trạng
thái và dấu bit 7.
− Giá trụ 1: xảy ra tràn
− Giá trị 0 : không xáy ra tràn
Bit 2 (Z): bít không (Zero bit)
− Giá trụ 1: kết quả các phép toán số học và logic là bằng “0”
− Giá trị 0 : kết quả các phép toán khác “0”
Bit 1 (DC): Digit Carry/borrowbit. Sử dụng cho các lệnh ADDWF, ADDLW,
SUBLW và SUBWF
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 21
− Giá trụ 1: xảy ra việc thao tác 4 bit thấp.
Tại một thời điểm chúng ta có thể thực hiện đọc một byte, Viết một khối 32 byte, xoá
một khối 64 byte. Hoạt động xoá một khối lớn không có khả năng từ mã người sử
dụng.
Khi ta xoá hoặc viết vào bộ nhớ chương trình sẽ ngừng chỉ dẫn cho khi hoàn
thành hoạt động.Và không có sự truy nhập trong suốt quá trình viết hoặc xoá dữ
liệu. Sẽ có một bộ đếm thời gian khi có hoạt động xoá hoặc viết.
Sau đây chúng ta sẽ tìm hiểu một số thuộc tính cơ bản khi thao tác bộ nhớ Flash.
• Table Reads and Table Writes
Theo thứ tự đọc và viết dữ liệu cho phép vi xử lý di chuyển các byte giữa không
gian bộ nhớ chương trình và dữ liệu trong RAM thông qua: Table Reads and Table
Writes. Nhưng do bộ nhớ chương trình có độ rông 16bit còn bộ nhớ Ram chỉ là 8
bit nên để di chuyển dữ liệu giữa chúng cần thanh ghi 8bit (TABLAT):
Bảng đọc hoạt động lấy ra dữ liệu từ bộ nhớ chương trình đưa chúng tới khoảng nhớ
của RAM.:
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 23
Bảng viết hoạt động lưu trữ dữ liệu từ bộ nhớ dữ liệu htông qua đó giữ trong bộ nhớ
chương trình:
• Control Registers
Có bốn thanh ghi điều khiển:
• EECON1 register
• EECON2 register
• TABLAT (TABLE LATCH ) register
• TBLPTR(TABLE POINTER) registers Ta đưa ra thanh ghi
EECON1 ví dụ:
Bit 7 (EEPGD): bit lựa chọn bộ nhớ Flash và bộ nhớ dữ liệu EEPROM
Ta có thể xác định hoặc điều khiển các bit 0 và bit 1 nhờ phần mềm.
• Reading the Flash Program Memory
Khi đọc dữ liệu chúng ta sử dụng cấu trúc lệnh TBLRD để lấy dữ liệu từ bộ nhớ tới
bộ nhớ RAM. Hoạt động theo hình sau:
• Erasing Flash Program Memory
Việc thực hiện xoá dữ liệu có thể thông qua người lập trình hoặc thông qua điều
khiển ISCP. Chúng ta có thể xoá khối nhỏ nhất 32 từ tới 64 byte, có khả nưng cho