Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Chương 1
TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC16F87xA
1.1 Giới thiệu về vi điều khiển PIC
PIC bắt nguồn từ chữ viết tắt của “Programmable intelligen computer”
(Máy tính khả trình thông minh) là sản phẩm của hãng General Instrument đặt
cho dòng sản phẩm đầu tiên của họ là PIC 1650. Lúc này Pic dùng để giao tiếp
với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì vậy người ta gọi PIC
với tên là “Peripheral Interface Controller” (bộ điều khiển giao tiếp ngoại vi).
Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các modul
ngoại vi được tích hợp sẵn (như :USART, PWM, ADC…) với bộ nhớ chương
trình từ 512word đến 32k Word.
PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh 12
Bit ví dụ PIC12Cxxx) và mid-range (độ dài mã lệnh 14 bit , ví dụ
PIC16Fxxx), tập lệnh bao gồm khoảng 35 lệnh, và 70 lệnh đối với dòng PIC
high-end (có độ dài mã lệnh 16bit PIC18Fxxxx). Tập lệnh bao gồm các lệnh
tính toán trên các thanh ghi, và các hằng số, hoặc các vị trí ô nhớ, cũng như có
các lệnh điều kiện, nhảy/ gọi hàm, và các lệnh quay trở về, nó cũng có các
chức năng phần cứng khác như ngắt hoặc sleep (chế độ hoạt động tiết kiệm
điện). Microchip cung cấp môi trường lập trình MPLAB0, nó bao gồm phần
mềm mô phỏng và trình dịch ASM.
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể điểm qua một vài nét như sau :
- 8/16 bit CPU, xây dựng theo kiến trúc Harvard
- Flash và Rom có thể tuỳ chọn 256 byte đến 256 kbybe
- Các cổng xuất/ nhập (mức lôgic thường từ 0v đến 5 v, ứng với mức logic 0
và 1)
- 8/16 bit timer
- Các chuẩn giao tiếp ngoại vi nối tiếp đồng bộ/ không đồng bộ
- Bộ chuyển đổi ADC
- Bộ so sánh điện áp
SVTH: Lê Tiến Thanh Trang 1
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- MSSP Pripheral dùng cho các giao tiếp I2C, SPI
- Bộ nhớ nội EEPROM - có thể ghi/ xoá lên tới hàng triệu lần
- Modul điều khiển động cơ, đọc encoder
- Hỗ trợ giao tiếp USB
- Hỗ trợ điều khiển Ethernet
- Hỗ trợ giao tiếp CAN
- Hỗ trợ giao tiếp LIN
- Hỗ trợ giao tiếp IrDA
- DSP những tính năng xử lý tín hiệu số
1.2 Tổng quan vi điều khiển PIC16F87xA
1.2.1 Sơ đồ chân của PIC16F87xA
Hình 1.1 Sơ đồ chân của PIC16F87xA
1.2.2 Các thông số về vi điều khiển PIC16F877A
CPU tốc độ cao :
- Chỉ có 35 cấu trúc lệnh.
- Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẻ nhánh
chương trình mất hai chu kỳ máy.
- Tốc độ làm việc: xung đồng hồ đến 20MHz, tốc độ thực thi lệnh 200ns.
- 8K*14 words của bộ nhớ chương trình (flash program memory).
- 368*8 byte bộ nhớ dữ liệu RAM.
- 256*8 byte bộ nhớ dữ liệu EEPROM.
SVTH: Lê Tiến Thanh Trang 2
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Đặc điểm ngoại vi:
- Timer 0: 8 bit timer/counter với 8 bít bộ chia tỉ lệ.
- Timer 1: 16 bit timer/counter với bộ chia tỉ lệ có thể tăng lên trong chế độ
Sleep theo xung đồng hồ bên ngoài.
- Timer2 : 8 bit timer/counter.
- Hai Modul capture, compare, PWM.
+ Capturre 16 bit có độ phân giải 12,5ns.
+ Compare 16 bit có độ phân giải 200ns.
+ PWM 16 bít có độ phân giải 10 bit.
- Cổng giao tiếp nối tiếp đồng bộ với chế độ Master và Master/ Slave.
- Bộ truyền nhận nối tiếp vạn năng.
- Cổng Slave song song 8 bit được điều khiển đọc ghi từ bên ngoài.
Đặc điểm tương tự
- Độ phân giải 10 bit với 8 kênh chuyển đổi tương tự- số.
- Modul so sánh tương tự gồm:
+ Hai modul so sánh tương tự.
+ Modul tham chiếu điện áp trên chip (VEF) có thể lập trình được, có thể
lập trình nhiều chức năng đầu vào từ các đầu vào và điện áp bên trong.
+ Hai đầu ra so sánh có thể sử dụng bên ngoài.
SVTH: Lê Tiến Thanh Trang 3
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
1.3 Sơ đồ khối của vi điều khiển PIC16F877A
Hình 1.2 Sơ đồ khối vi điều khiển PIC16F877A
SVTH: Lê Tiến Thanh Trang 4
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
1.3.1 Tổ chức bộ nhớ:
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).
1.3.1.1 Bộ nhớ chương trình
Hình 1.3 Bộ nhớ chương trình PIC16F877A
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 (một word =14bit) và được phân thành nhiều
trang (từ Page0 đến Page 3). Như vậy bộ nhớ chương trình có khả năng chứa
được 8*1024 lệnh vì một word sau khi mã hoá sẽ có dung lượng một word
14bit). Để mã hoá được địa chỉ của 8 K word bộ nhớ chương trình, bộ đếm
chương trình có dung luợng 13 bit.
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 (Interup Vector). Bộ nhớ chương trình không bao gồm stack và
SVTH: Lê Tiến Thanh Trang 5
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
không được địa chỉ hoá bởi bộ đếm chương trình. Bộ nhớ Stack sẽ được đề
cập trong phần sau.
1.3.1.2 Bộ nhớ dữ liệu
Hình 1.4 Sơ đồ bộ nhớ dữ liệu của PIC16F877A
SVTH: Lê Tiến Thanh Trang 6
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều
bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia làm 4 bank. Mỗi bank có
dung lượng 128byte, bao gồm các thanh ghi có chức năng đặc biệt SFG
(Speccial Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi
mục đích 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 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 truy xuất và làm
giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A
như hình 1.4.
1.3.1.2.1 Thanh ghi chức năng đặc biệt
Đây là thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các khối chức năng tích hợp trên vi điều khiển .
- Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực
hiện phép toán của khối ALU, trạng thái RESET và các bit chọn bank cần truy
xuất trong bộ nhớ dữ liệu.
- Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và
ghi, cho phép điều khiển chức năng Pull up của các chân trong PORTB, xác
lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm
Timer0.
- Thanh ghi INTCON (0B, 8Bh, 10Bh, 18Bh): thanh ghi cho phép đọc và
ghi, chứa các bit điều khiển và các bit cờ hiệu khi Timer0 bi tràn, ngắt ngoại vi
RB0/INT và ngắt Interup un change tại các chân của PORTB.
- Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các
khối chức năng ngoại vi .
SVTH: Lê Tiến Thanh Trang 7
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- Thanh ghi PIR1 ( 0Ch) : chứa cờ ngắt của các khối chức năng ngoại vi
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1 .
- Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối
chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ
EEPROM .
- Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại
vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi
PIE2.
- Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ
Reset của vi điều khiển.
1.3.1.3 Stack
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là
một vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh Call được thực
hiện hay khi một ngắt xảy ra làm chương trình bị rẻ nhánh, giá trị của bộ đếm
chương trình PC tự động được vi điều khiển cất vào trong Stack. Khi một
trong các lệnh RETURN, RETLW, RETFIE được thực thi, giá trị PC sẽ tự
động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình
theo đúng quy trình định trước.
SVTH: Lê Tiến Thanh Trang 8
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa
được 8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ
nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất
vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị cất vào Stack lần thứ 2.
1.3.2 Các cổng xuất nhập
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng
để tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua
sự tương tác đó, chức năng của vi điều khiển được thể hiện một cách rỏ ràng.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD và PORTE. Tương ứng với các thanh ghi điều
khiển các cổng xuất nhập là TRISA, TRISB, TRISC, TRISD, TRISE. Chức
năng của từng port xuất nhập được cho ở bảng 1.1.
Bảng 1.1 Sơ đồ chân của vi điều khiển PIC
Số chân Tên chân Loại(I/O/P) Chức năng
1 MCLL
Vpp
I
P
Chân Reset ,tích cực ở mức thấp
Đầu vào điện áp nguồn
2
PORT A là cổng hai hướng
RA0
AN0
I/O
I đầu vào tương tự 0
3 RA1
AN1
I/O
I Đầu vào tương tự 1
4
RA2
AN2
VREF-
CVREF
I/O
I
I
O
Đầu vào tương tự 2
Đầu vào điện áp tham chiếu
Đầu ra Vref bộ so sánh
5
RA3
AN3
VREF+
I/O
I
I
Đầu vào tương tự 3
Đầu vào điện áp tham chiếu
6
RA4
TOCKI
C1OUT
I/O
I/O
O
Đầu vào xung đồng bộ bên ngoài
Đầu ra bộ so sánh 1
SVTH: Lê Tiến Thanh Trang 9
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
7
RA5
AN4
SS*
C2OUT
I/O
I
I
O
Đầu vào tương tự 4
Đầu vào chọn chip ( SPI)
Đầu ra bộ so sánh 2
8
PORT E Là cổng hai hướng
RE0
RD*
AN5
I/O
I
I
Điều khiển đọc từ port slave song song
Đầu vào tương tự 5
9
RE1
WR*
AN6
I/O
I
I
Điều khiển ghi từ port slave song song
Đầu vào tương tự 6
10 RE2
CS*
AN7
I/O
I
I
Điều khiển chọn chip từ port slave
Đầu vào tương tự 7
11,33 VDD P Đầu vào điện áp dương
12,31 VSS P Chân nối đất
13
OSC1
CLK1
I
I
Dao động thạch anh hoặc đầu vào xung
đồng bộ bên ngoài
Đầu vào xung đồng hồ bên ngoài, luôn luôn
kết hợp với chân OSC1
14 OSC2
CLK0
O
O
Dao động thạch anh hoặc đầu ra đồng hồ
Kết nối dao động thạch anh hoặc bộ cộng
hưởng trong chế độ dao động
Trong chế độ RC chân OSC2 cung cấp
CLK0 ,có tần số bằng ¼ tần số OSC1
PORT C là cổng hai hướng
SVTH: Lê Tiến Thanh Trang 10
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
15 RC0
T1OSO
T1CK1
I/O
O
I
Đầu ra bộ dao động timer 1
Đầu vào xung đồng hồ timer 1
16 RC1
T1OSI
CCP2
I/O
I
I/O
Đầu vào bộ dao động timer 1
Đầu vào/ra capture 2 đầu ra PWM2
17 RC2
CCP1
I/O
I/O Đầu vào/ra capture 1, đầu ra PWM1
18 RC3
SCK
SCL
I/O
I/O
I/O
Đầu vào ra xung đồng hồ đồng bộ nối tiếp
chế độ SPI
23 RC4
SDI
SDA
I/O
I
I/O
Dữ liệu vào (SPI)
Dữ liệu vào ra chế độ I2C
24 RC5
SDO
I/O
O Dữ liệu ra (SPI)
25 RC6
TX
CK
I/O
O
I/O
Truyền không đồng bộ USART
Xung đồng bộ USART 1
26 RC7
RX
DT
I/O
I
I/O
Nhận không đồng bộ USART
Dữ liệu đồng bộ USART
PORT D Là cổng hai hướng
19 RD0
PSP0
I/O
I/O Dữ liệu cổng Slave song song
20 RD1
PSP1
I/O
I/O
21 RD2
PSP2
I/O
I/O
22 RD3 I/O
SVTH: Lê Tiến Thanh Trang 11
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
PSP3 I/O
27 RD4
PSP4
I/O
I/O
28 RD5
PSP5
I/O
I/O
29 RD6
PSP6
I/O
I/O
30 RD7
PSP7
I/O
I/O
33
PORT B là cổng hai hướng
RB0
INT
I/O
I Ngắt ngoài
34 RB1 I/O
35 RB2 I/O
36 RB3
PGM
I/O
I Ở mức thấp cho phép lập trình
37 RB4 I/O
38 RB5 I/O
39 RB6
PGC
I/O
40 RB7
PGD
I/O
1.3.3 Bộ đếm Timer0
Đây là 1 trong 3 bộ đếm hoặc bộ định thời của vi điều khiển
PIC16F877A. Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số 8bit. Cấu
trúc của Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực
của xung clock. Ngắt Timer0 sẽ xuất hiện khi Timer bị tràn. Bit
TMR0IE(INTCON<5>) là bit điều khiển của Timer0. Sơ đồ khối của Timer0
như sau:
SVTH: Lê Tiến Thanh Trang 12
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 1.5 Sơ đồ khối của Timer0
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0(01h, 101h): chứa giá trị đếm của Timer0.
INTCON (0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và PEIE).
OPTION_REG (81h, 181h) điều khiển prescaler.
1.3.4 Bộ đếm Timer1
Timer1 là bộ định thời 16 bit, giá trị của Timer1 được lưu trong hai
thanh ghi TMR1H và TMR1L. Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>).
Bit điều khiển của Timer1 là TMR1IE (PIE<0>).
Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động : chế độ định thời
(Timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼
tần số của oscillator) và chế độ đếm (counter) với xung kích là xung phản ánh
các sự kiện cần đếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI
(cạnh tác động là cạnh lên).
SVTH: Lê Tiến Thanh Trang 13
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 1.6 Sơ đồ khối của timer 1
Các thanh ghi liên quan đến Timer1 bao gồm:
INTCON (địa chỉ 0Bh, 08Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và
PEIE ).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
PIE1 (địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1.
TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1.
T1CON (địa chỉ 10h): xác lập các thông số cho Timer1.
1.3.5 Bộ đếm Timer2
Timer2 là bộ định thời 8 bit và được hổ trợ bởi hai bộ chia tần số
prescaler và postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit
cho phép ngắt của Timer2 tác động là TMR2ON (T2CON<2>). Cờ ngắt của
Timer2 là bit TMR2IF (PIR1<1>). Xung ngõ vào (tần số bằng ¼ tần số
oscillator) được đưa qua bộ chia tần
SVTH: Lê Tiến Thanh Trang 14
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
số prescaler 4 bit ( với các tỉ số chia tần số là: 1:1, 1:4, 1:16 và được điều
khiển bởi các bit T2CKPS1:T2CKPS0 ( T2CON<1:0>) ).
Hình 1.7 Sơ đồ khối của Timer2
Các thanh ghi liên quan đên Timer2 bao gồm:
INTCON( địa chỉ 0Bh, 8Bh,10Bh, 18Bh): cho phép toàn bộ các ngắt (GIE và
PEIE).
PIR1 ( địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF).
PIE1 ( địa chỉ 8Ch): chứa bit điều khiển Timer2 (TMR2IE).
TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.
T2CON ( địa chỉ 12h): xác lập các thông số cho Timer2.
PR2 (địa chỉ 92h): thanh ghi hổ trợ cho Timer2.
Ta có nhận xét về các timer như sau:
- Timer0 và Timer2 là bộ đếm 8 bít ( giá trị đếm tối đa là FFh), trong khi
Timer1 là bộ đếm 16bit ( giá trị đếm tối đa là FFFFh).
- Timer0, Timer1 và Timer2 đều có hai chế độ hoạt động là timer và
counter. Xung clock có tần số bằng ¼ tần số của oscillator.
1.3.6 Bộ chuyển tín hiệu ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai
dạng tương tự và số. PIC16f877A có 8 ngõ vào analog (RA4: RA0 và RE2:
RE0). Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, Vss hay hiệu
điện thế chuẩn được xác lập trên hai chân RA2 và RA3. Kết quả chuyển đổi từ
SVTH: Lê Tiến Thanh Trang 15
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
tín hiệu tương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai
thanh ghi ADRESH: ADRESL.
Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử
dụng như những thanh ghi thông thường khác. Khi quá trình chuyển đổi hoàn
tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit GO/DONE
(ADCON0<2>) được xoá về 0 và cờ ngắt ADIF được set.
Quy trình chuyển đổi từ tương tự sang số bao gồm các bước sau :
1. Thiết lập các thông số cho bộ chuyển đổi ADC:
2. Thiết lập các cờ ngắt cho bộ AD.
3. Đợi cho tới khi quá trình lấy mẫu hoàn tất .
4. Bắt đầu quá trình chuyển đổi (set bit GO/DONE).
5. Đợi cho tới khi quá trình chuyển đổi bằng cách :
- Kiểm tra bit GO/DONE nếu GO/DONE =0 quá trình chuyển đổi hoàn tất.
- Kiểm tra cờ ngắt.
6. Đọc kết quả chuyển đổi và xoá cờ ngắt, set bit GO/DONE (nếu cần chuyển
đổi).
7. tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo.
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
INTCON: cho phép các ngắt (các bit GIE, PEIE).
PIR1: chứa cờ ngắt AD (bit ADIF)
ADRESH (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số của
bộ chuyển đổi AD.
Các PORTA, PORTE liên quan đến các ngõ vào analog
SVTH: Lê Tiến Thanh Trang 16
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 1.8 sơ đồ khối bộ chuyển đổi ADC
1.3.7 Bộ so sánh Comparator
Bộ so sánh bao gồm hai bộ so sánh tín hiệu analog và được đặt ở PortA.
Ngõ vào bộ so sánh là các chân RA3: RA0, ngõ ra là hai chân RA4 và RA5.
Thanh ghi điều khiển bộ so sánh là CMCON. Các bit CM2: CM0 trong thanh
ghi CMCON đóng vai trò chọn lựa các chế độ hoạt động cho bộ Comparator.
Cơ chế hoạt động của bộ Compartor như sau:
Tín hiệu analog ở chân Vin + sẽ được so sánh với điện áp chuẩn ở chân
Vin- và tín hiệu ở ngõ ra bộ so sánh sẽ thay đổi tương ứng như hình vẽ. Khi
điện áp ở chân Vin- lớn hơn điện áp ở chân Vin+ ngõ ra sẽ ở mức 1 và ngược
lại.
Cực tính của bộ so sánh có thể thay đổi dựa vào các giá trị đặt vào các bit
C2INV và C1INV (CMCON<4:5>).
Các thanh ghi liên quan đến bộ so sánh bao gồm:
CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh): xác lập các thống số cho
bộ so sánh .
Thanh ghi INTCON: chứa các bit cho phép ngắt( GIE và PEIE)
SVTH: Lê Tiến Thanh Trang 17
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Thanh ghi PIR2 (địa chỉ 0Dh): chứa cờ ngắt của bộ so sánh (CMIF)
Thanh ghi PIE2 (địa chỉ 8Dh): chứa bit cho phép bộ so sánh ( CNIE).
Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): các thanh ghi điều
khiển PORTA.
* Bộ tạo điện áp so sánh
Bộ so sánh này chỉ hoạt động khi bộ compartor được định dạng hoạt
động ở chế độ ‘110’. Khi đó các Pin RA0/AN0 và RA1/AN1 (khi CIS=0) hoặc
Pin RA3/AN3 và RA2/AN2 ( khi CIS=1) sẽ là ngõ vào analog của điện áp cấn
so sánh đưa vào ngõ Vin- của hai bộ so sánh C1 và C2. Trong khi đó điện áp
đưa vào ngõ Vin+ sẽ được lấy từ
một bộ tạo điện áp so sánh. Sơ đồ khối của bộ tạo điện áp so sánh được trình
bày như hình 1.9.
Hình 1.9 Sơ đồ khối bộ tạo điện áp so sánh
Bộ tạo điện áp so sánh này có thể xem như một bộ chuyển đổi D/A đơn
giản. Giá trị điện áp cần so sánh ở ngõ ra vào analog sẽ được so sánh với các
mức điện áp do bộ tạo điện áp tạo ra cho tới khi hai điện áp này đạt được giá
trị xấp xỉ bằng nhau. Khi có kết quả chuyển đổi xem như được chứa trong các
bit CVR3: CVR0.
SVTH: Lê Tiến Thanh Trang 18
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
1.3.8 CCP
CCP (Capture/Comparator/PWM) bao gồm các thao tác trên các xung
đếm cung cấp bởi các bộ đếm Timer1 và Timer2. PIC16F877A được tích hợp
sẵn hai khối CCP: CCP1 và CCP2. Mỗi CCP có một thanh ghi 16 bit
(CCPR1H: CCPR1L và CCPR2H:CCPR2L), pin điều khiển dùng cho khối
CCPx là RC2/CCP1 và RC1/T1PSI/CCP2. Các chức năng của CCP bao gồm:
Capture.
So sánh (compare)
Điều chế độ rộng xung PWM (Pulse Width Modulation).
Cả CCP1 và CCP2 về nguyên tắc hoạt động đều giống nhau và chức
năng của từng khối là khá độc lập. Tuy nhiên trong một số trường hợp ngoại lệ
CCP1 và CCP2 có khả năng phối hợp với nhau, để tạo ra các hiện tượng đặc
biệt (Special event trigger) hoặc các tác động lên Timer1 va Timer2. các
trường hợp đặc biệt được liệt kê trong bảng 1.2
Bảng 1.2 Các thông số của CCP
CCPx CCPy Tác động
Capture Capture Dùng chung nguồn xung clock từ TMR1
Capture Compare tạo ra hiện tượng làm xoá TMR1
Compare Compare tạo ra hiện tượng đặc biệt làm xoá TMR1
PWM PWM Dùng chung tần số xung clock và cùng chịu tác
động của ngắt TMR2
PWM Capture hoạt động độc lập
PWM Compare hoạt động độc lập
Một số điểm cần lưu ý khi sử dụng CCP như sau:
Các Pin dùng cho khối CCP phải được ấn định là input (set các bit tương ứng
trong thanh ghi TRISC). Khi ấn định các pin dùng cho khối CCP là output,
việc đưa giá trị vào PORTC cũng có thể gây ra các hiện tượng tác động lên
khối CCP do trạng thái của pin thay đổi .
Timer1 phải hoạt động ở chế độ timer hoặc chế độ đếm đồng bộ.
SVTH: Lê Tiến Thanh Trang 19
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Tránh sử dụng ngắt CCP bằng cách clear bit CCPxIE (thanh ghi PIE1), cờ
ngắt CCPIF nên được xoá bằng phần mềm mỗi khi được set để tiếp tục nhận
định được trạng thái hoạt động của CCP.
Khi hoạt động ở chế độ PWM (khối điều chế độ rộng xung), tín hiệu
sau khi điều chế sẽ được đưa ra các pin của khối CCP (cần ấn định các pin này
là output).
Độ rộng của xung điều chế được tính theo công thức sau:
PWM duty cycle = (CCJPRxL:CCPxCON<5:4>)*Tosc*(giá trị bộ chia tấn số
TMR2
Như vậy 2 bit CCPxCON<5:4> sẽ chứa hai bit LSB. Thanh ghi CCPxL chứa
byte cao của giá trị quyết định độ rộng xung. Thanh ghi CCPRxH đóng vai trò
là Buffer cho khối PWM. Khi giá trị trong thanh ghi CCPxH bằng với giá trị
trong thanh ghi TMR2 và hai bit CCPxCON<5:4> bằng với giá trị 2 bit của bộ
chia tần số prescler, pin của khối CCP lại được đưa về mức thấp, như vậy ta có
được hình ảnh của xung điều chế tại ngõ ra của khối PWM .
1.3.9 Giao tiếp nối tiếp
1.3.9.1 Chuẩn giao tiếp USART
USART (Universal Synchronous Asynchronous Receiver Transmitter)
là một trong hai chuẩn giao tiếp nối tiếp. USART còn được gọi là giao diện
giao tiếp nối tiếp SCI (Serial Communication Interface). Có thể sử dụng giao
diện này cho các giao tiếp với các thiết bị ngoại vi, với các vi điều khiển khác
hay với máy tính. Các dạng của giao diện USART ngoại vi bao gồm:
Không đồng bộ (Asynchronous); Đồng bộ _ Master mode; Đồng bộ _ Slave
mode
PIC16F877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate
Genetator) 8 bit dùng cho giao diện USART .BRG thực chất là một bộ đếm có
thể có thể được sử dụng cho cả hai dạng đồng bộ và được điều khiển bởi thanh
ghi PSPRG. Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH
(TXSTA<2>). Ở dạng đồng bộ tác động của bit BRGH được bỏ qua. Tốc độ
Baud do BRG tạo ra được tính theo công thức trong bảng 1.3.
SVTH: Lê Tiến Thanh Trang 20
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Bảng 1.3 Công thức tính tốc độ Baud
SYNC BRGH=0 (Low Speed) BRGH=1 (High Speed)
0
1
(Asychronous )baud rate =
Fosc/(64(x+1))
(Asychronous )baud rate =
Fosc/(4(x+1))
Baud rate =
Fosc/(64(x+1))
N/A
Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên va 0<X<255).
Các thanh ghi liên quan đến BRG bao gồm:
TXSTA(địa chỉ 98h): chọn chế độ đồng bộ hay bất đồng bộ (bit SYNC ) và
chọn mức tốc độ baud (bit BRGH).
RCSTA(địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit PSEN)
RSBRG(địa chỉ 99h): quyết định tốc độ baud
USART bất đồng bộ
Ở chế độ này USART hoạt động theo chuẩn NRZ(None – Return – to –
Zero). Nghĩa là các bit truyền đi bao gồm: 1 bit Start, 8 hay 9 bit dữ liệu
(thông thường là 8 bit) và một bit Stop. Bit LSB sẽ được truyền đi trước. Các
khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với
tốc độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ
dịch dữ liệu tuỳ theo giá trị của bit BRGH), và để đảm tính hiệu quả của dữ
liệu thì hai khối truyền và nhận phải dùng chung một định dạng dữ liệu.
Truyền dữ liệu qua chuẩn giao tiếp USART bất đồng bộ
Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch
dữ liệu TSR(Transmit Shift Register). Thanh ghi TSR sẽ lấy dữ liệu từ thanh
ghi đệm dùng cho quá trình truyền dữ liệu TXREG. Dữ liệu cần truyền phải
được đưa vào thanh ghi TXREG. Ngay sau khi bit Stop của dữ liệu cần truyền
trước đó được truyền xong, dữ liệu từ thanh ghi TXREG sẽ được đưa vào
thanh ghi TSR, thanh ghi TXREG bị rổng, ngắt xảy ra và cờ hiệu TXIF
(PIR1<4>) được set. Ngắt này được điều khiển bởi bit TXIE(PIE1<4>). Cờ
hiệu TXIF vẫn được set bất chấp trạng thái của bit TXIE hay tác động của
SVTH: Lê Tiến Thanh Trang 21
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
chương trình (không thể xoá TXIF bằng chương trình) mà chỉ có reset về 0 khi
có dữ liệu mới đưa vào thanh ghi TXREG.
Hình 1.10: sơ đồ khối của khối truyền dữ liệu USART
Trong trường hợp dữ liệu cần truyền là 9 bit, bit TX9(TXSTA<6>)
được set và bit dữ liệu thứ 9 sẽ được lưu trong bit TX9D(TXSTA<0>). Nên
ghi bit dữ liệu thứ 9 vào trước, vì khi ghi 8 bit dữ liệu vào thanh ghi TXREG
trước có thể xảy ra trường hợp nội dung thanh ghi TXREG sẽ được load vào
thanh ghi TSG trước, như vậy dữ liệu truyền đi sẽ bi sai khác so với yêu cầu.
Nhận dữ liệu qua chuẩn giao tiếp USART bất đồng bộ
Dữ liệu được đưa vào từ chân RC7/RX/DT sẽ kích hoạt khối phục hồi
dữ liệu. Khối phục hồi dữ liệu thực chất là một bộ dịch dữ liệu tốc độ cao và
có tần số hoạt động gấp 16 lần hoặc 64 lần tần số baud. Trong khi đó tốc độ
dịch của thanh ghi nhận dữ liệu sẽ bằng với tần số baud hoặc tần số của
Oscillator.
Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA<4>).
Thành phần quan trọng nhất của khối nhận dữ liệu là thanh ghi nhận dữ liệu
RSR (Receive Shift Register). Sau khi nhận diện bit stop của dữ liệu truyền
tới, dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh ghi
RCGER, sau đó cờ hiệu RCIF(PIR1<5>) sẽ được set và ngắt nhận được kích
hoạt. Ngắt này được điều khiển bởi bit RCIE(PIE1<5>). Bit cờ hiệu RCIF là
bit chỉ đọc và không thể được tác động bởi chương trình. RCIF chỉ reset về 0
khi dữ liệu nhận vào ở thanh ghi RCREG đã được đọc và khi đó thanh ghi
SVTH: Lê Tiến Thanh Trang 22
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
RCREG rỗng. Thanh ghi RCREG là thanh ghi có bộ đệm kép và hoạt động
theo cơ chế FIFO cho phép nhận 2 byte và byte thứ 3 tiếp tục
Hình 1.11 Sơ đồ khối của khối nhận dữ liệu USRAT
được đưa vào thanh ghi RSR. Nếu sau khi nhận được bit Stop của byte dữ liệu
thứ 3 mà thanh ghi RCREG vẫn còn đầy, cờ hiệu báo tràn dữ liệu
OERR(RCSTA<1>) sẽ được set, dữ liệu trong thanh ghi RSR sẽ bị mất đi và
quá trình đưa dữ liệu từ thanh ghi RSR vào thanh ghi RCREG sẽ bị gián đoạn.
Khi đọc dữ liệu từ thanh ghi RCREG, hai bit FERR và RX9D sẽ nhận các giá
trị mới. Do đó cần đọc dữ liệu từ thanh ghi RCSTA trước khi đọc dữ liệu từ
thanh ghi RCREG để tránh bị mất dữ liệu.
USART đồng bộ
Giao diện USART đồng bộ được kích hoạt bằng cách set bit SYNC.
Cổng giao tiếp nối tiếp vẫn là hai chân RC7/RX/DT, RC6/TX/CK và được cho
phép bằng cách set bit SPEN. USART cho phép hai chế độ truyền nhận dữ
liệu la Master mode và Slave mode. Master mode được kích hoạt bằng cách
set bit CSRC(TXSTA<7>), Slave mode được kích hoạt bằng cách clear bit
CSRC. Điểm khác biệt duy nhất giữa hai chế độ này là Master mode sẽ lấy
xung clock đồng bộ từ bộ tạo xung baud BRG còn Slave mode lấy xung clock
SVTH: Lê Tiến Thanh Trang 23
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
đồng bộ từ bên ngoài qua chân RC6/TX/CK. Điều này cho phép Slave mode
hoạt động ngay cả khi vi điều khiển đang ở chế độ Sleep.
1.3.9.2 MSSP ( Master Synchronous Serial Port)
Là giao diện đồng bộ nối tiếp dùng để giao tiếp với các thiết bị ngoại
vi(EERPROM, ghi dich, chuyển đổi ADC…) hay các vi điều khiển khác.
MSSP hoạt động dưới hai dạng giao tiếp:
SPI (Serial Pheripheral Interface) I2C ( Inter- Intergrated Circuit)
Các thanh ghi điều khiển giao tiếp này bao gồm thanh ghi trạng thái SSPSTAT
và hai thanh ghi điều khiển SSPCON và SSPCON2. Tuỳ theo chuẩn giao tiếp
được sử dụng (SPI hay I2C) mà chức năng các thanh ghi này được thể hiện
khác nhau.
Chuẩn giao tiếp SPI
Chuẩn giao tiếp SPI cho phép truyền nhận đồng bộ. Ta cần sử dụng 4
pin cho chuẩn giao tiếp này:
RC5/SDO: ngõ ra dữ liệu dạng nối tiếp (Serial Data Output).
RC4/SDI/SDA: ngõ vào dữ liệu dạng nối tiếp (Serial Data Input).
RC3/SCK/SCL: xung đồng bộ nối tiếp (Serial Clock).
RA5/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) khi giao tiếp ở chế
độ Slave mode.
MSSP bao gồm thanh ghi dịch dữ liệu SSPSR và thanh ghi đệm dữ liệu
SSPBUF. Hai thanh ghi này tạo thành bộ đệm dữ liệu kép. Dữ liệu sẽ được
dịch vào hoặc ra qua thanh ghi SSPSR, bit MSB được dịch trước, đây là một
trong những điểm khác biệt giữa hai giao diện MSSP và USART (USART
dịch LSB trước).
Trong quá trình nhận dữ liệu, khi dữ liệu được đưa vào chân RC4/SDI/SDA
trong thanh ghi SSPSR, dữ liệu được đưa vào thanh ghi SSPBUF bit chỉ trạng
thái của bộ đệm BF sẽ được set báo hiệu bộ đệm đã đầy đồng thời cờ ngắt
SSPIF cũng được set, bit BF sẽ tự động reset về 0 khi dữ liệu trong thanh ghi
SSPBUF. Bộ đệm kép cho phép đọc byte tiếp theo trước khi byte dữ liệu trước
đó được đọc vào. Tuy nhiên ta nên đọc dữ liệu từ thanh ghi SSPBUF trước khi
nhận byte dữ liệu tiếp theo.
SVTH: Lê Tiến Thanh Trang 24
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Quá trình truyền dữ liệu cũng hoàn toàn tương tự như ngược lại: dữ liệu
cần truyền sẽ được đưa vào thanh ghi SSPBUF đồng thời đưa vào thanh ghi
SSPSR, khi đó cờ hiệu BF được set. Dữ liệu được dịch vào thanh ghi SSPSR
và được dịch ra ngoài qua chân RC5/SDO. Ngắt xảy ra khi quá trình dịch dữ
liệu hoàn tất. Tuy nhiên dữ liệu trước khi được đưa ra ngoài phải được cho
phép bởi tín hiệu từ chân RA5/SS/C2OUT. Chân này đóng vai trò chọn đối
tượng giao tiếp khi SPI ở chế độ Slave mode Cổng giao tiếp của giao diện
SPI được điều khiển bởi bit SSPEN, bên cạnh đó cần điều khiển chiều xuất
nhập của portc thông qua thanh ghi TRISC sao cho phù hợp với giao diện SPI.
Sơ đồ kết nối chuẩn giao tiếp SPI như sau:
Hình 1.13 Sơ đồ kết nối của chuẩn giao tiếp SPI
Trong sơ đồ kết nối này, khối master sẽ bắt đầu truyền nhận dữ liệu
bằng cách gởi tín hiệu xung đồng bộ SCK. Dữ liệu sẽ được dịch từ cả hai
thanh ghi SSPSR đưa ra ngoài nếu có một cạnh của xung đồng bộ tác động và
ngưng dịch khi có tác động của cạnh còn lại.
Cả hai khối Master và Slave nên được ấn định chung các quy tắc động
của xung clock đồng bộ để dữ liệu có thể dịch chuyển đồng thời.
SVTH: Lê Tiến Thanh Trang 25
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Chuẩn giao tiếp I2C
Đây là một dạng khác của MSSP, chuẩn giao tiếp I2C cũng có hai chế
độ Master và slave và cũng được kết nối với ngắt. I2C sử dụng 2 pin để truyền
và nhận dữ liệu :
RC3/SCK/SCL: chân truyền dẫn xung clock
RC4/SDI/SDA: chân truyền dẫn dữ liệu.
Các khối cơ bản trong sơ đồ khối của I2C không có nhiều khác biệt so với
SPI. Tuy nhiên còn có thêm khối phát hiện bit start và bit Stop của dữ liệu và
khối xác định địa chỉ.
Hình 1.14 Sơ đồ khối MSSP( I2C mode)
Trong quá trình nhận dữ liệu, sau khi nhận được một byte dữ liệu hoàn
chỉnh, thanh ghi SSPSR chuyển dữ liệu vào thanh ghi SSPBUF. Thanh ghi
SSPSR không đọc và ghi được, quá trình truy xuất thanh ghi này phải thông
qua thanh ghi SSPBUF.
Trong quá trình truyền dữ liệu, dữ liệu cần truyền đưa vào thanh ghi SSPBUF
cũng sẽ đồng thời đưa vào thanh ghi SSPSR.
SVTH: Lê Tiến Thanh Trang 26
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Ngắt
PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển
bởi thanh ghi INTCON(bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều
khiển và cờ ngắt riêng. Các cờ ngắt vẫn được set binh thường khi thỏa mãn
điều kiện ngắt xảy ra bất chấp trạng thái của GIE. Tuy nhiên hoạt động ngắt
vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt
RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi còn chứa bit cho
phép ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và
PIE2. Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.
Trong một thời điểm chỉ có một chương trình ngắt được thực thi,
chương trình ngắt được kết thức bằng lệnh RETFIE. Khi chương trình ngắt
được thực thi, bit GIE tự động đuợc xóa, địa chỉ lệnh tiếp theo của chương
trình chính được cất vào trong bộ nhớ Stack và bộ đệm chương trình sẽ chỉ
đến địa chỉ 0004h. Lệnh RETFIE được dùng để thoát khoải chương trình ngắt
và quay về chương trình chính, đồng thời GIE cũng được set để cho phép các
ngắt hoạt động trở lại. Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy
ra và phải được xóa vào chương trình trước khi cho phép ngắt tiếp tục hoạt
động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.
Đối với ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái
các pin của portB, việc xác định ngắt nào xảy ra ta cần 3 hoặc 4 chu kì lệnh
tùy thuộc vào thời điểm ngắt xảy ra ngắt.
Ngắt INT
Ngắt này dựa trên sự thay đổi trạng thái của pin RB0/INT. Cạnh tác
động gây ra ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit
INTEDG( thanh ghi OPTIONREG<6>). Khi có cạnh tác động thích hợp xuất
hiện tại pin RB0/INT, cờ ngắt INTF được set bất chấp trạng thái các bit điều
khiển GIE và PEIE. Ngắt này có khả năng đánh thức vi điều khiển từ chế độ
Sleep nếu bit cho phép ngắt được set trước khi lệnh sleep được thực thi .
Ngắt do sự thay đổi trạng thái các pin trong portB
Các pin portB<7:4> được dùng cho ngắt này và được điều khiển bởi bit RBIE
( thanh ghi INTCON<4>), cờ ngắt của ngắt này là bit RBIF(INTCON<0>)
SVTH: Lê Tiến Thanh Trang 27
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Chương 2
ĐỘNG CƠ ĐIỆN MỘT CHIỀU VÀ CÁC PHƯƠNG PHÁP ĐIỀU
CHỈNH TỐC ĐỘ
2.1 Đặc tính cơ tĩnh của động cơ điện một chiều ( Động cơ DC )
Có 4 loại động cơ DC thông dụng, bao gồm: Động cơ DC kích từ độc
lập, kích từ song song, kích từ nối tiếp và kích từ hỗn hợp.
+ Động cơ DC kích từ độc lập: Dòng phần ứng và dòng kích từ có thể
điều khiển độc lập với nhau.
+ Động cơ DC kích từ song song: Phần ứng và cuộn kích từ được đấu với
nguồn cung cấp. Vì vậy, với loại động cơ này, dòng phần ứng hoặc dòng
kích từ chỉ có thể điều khiển độc lập bằng cách thay đổi điện trở phụ trong
mạch phần ứng hoặc mạch kích từ. Tuy nhiên, đây là cách điều khiển có iệu
suất thấp.
+ Động cơ kích từ nối tiếp: Dòng phần ứng cũng là dòng kích từ, và do
đó, từ thông động cơ là một hàm của dòng phần ứng.
+ Động cơ DC kích từ hỗn hợp: Bao gồm cả kích từ nối tiếp và kích từ
song song. Yêu cầu cần đấu dây sao cho sức từ động của cuộn nối tiếp cùng
chiều với sức từ động của cuộn song song.
Iư A1 F1 Ikt Iư A1 Ikt
+ + + + +
U - - - Ukt U - -
(a) Kích từ độc lập (b) Kích từ song song
SVTH: Lê Tiến Thanh Trang 28
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Iư A1
F1
S1 S2 Iư S1 S2 A1
+ + + +
U U
- - - -
A 2 A 2
F2
(c) Kích từ nối tiếp (d) Kích từ hỗn hợp
Hình 2.1 Các loại động cơ điện một chiều (động cơ DM)
Mạch tương đương ở chế độ tĩnh của động cơ một chiều được trình
bày ở hình 2.2, điện trở Rư biểu thị điện trở phần ứng. Đối với động cơ một
chiều kích từ độc lập hoặc song song, điện trở này là điện trở phần ứng.
Đối với động cơ một chiều kích từ nối tiếp hoặc động cơ kích từ hỗn
hợp, Rư là tổng điện trở của cuộn phần ứng và cuộn kích từ nối tiếp.
Iư Rư
+
U Uư =KΦω
-
Hình 2.2: Mạch tương đương chế độ tĩnh của động cơ DC
Hệ phương trình cơ bản của động cơ một chiều là:
Eư = KΦω (2.1)
U =Eư+RưIư (2.2)
M =KΦIư (2.3)
Trong đó :
Rư: Điện trở phần ứng (Ω)
Iư : Dòng phần ứng (A)
U : Điện áp phần ứng (V)
SVTH: Lê Tiến Thanh Trang 29
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
ω : Tốc độ động cơ (rad/s)
Φ: Từ thông trên mỗi cực (Wb)
M: moment do động cơ sinh ra (Nm)
K: Hằng số, phụ thuộc cấu trúc động cơ
Từ công thức (2.1) - (2.3), ta có:
ω = - Iu (2.4)
Hoặc : ω = - M (2.5)
Lưu ý: Các công thức từ (2.1) đến (2.5) có thể áp dụng cho tất cả các loại
động cơ một chiều đã kể trên.
Với động cơ một chiều kích từ độc lập, nếu điện áp kích từ được duy trì
không đổi, có thể giả thiết rằng từ thông động cơ không đổi khi moment động
cơ thay đổi. Khi đó ta có:
KФ = constant (2.6)
Như vậy theo (2.5) đặc tính cơ của động cơ một chiều kích từ độc lập là một
đường thẳng, như vẽ trên hình 2.3. Tốc độ không tải của động cơ xác định bởi
điện áp cung cấp U và từ thông kích từ KΦ. Tốc độ động cơ suy giảm khi
moment tải tăng và độ ổn định tốc độ phụ thuộc vào điện trở phần ứng Rư, Với
moment lớn, từ thông có thể suy giảm đến mức độ dốc đặc tính cơ trở nên dẫn
đến hoạt động không ổn định. Vì vậy, cuộn bù thường hay được sử dụng để
làm giảm hiệu ứng khử từ của phản ứng phần ứng. Với động cơ công suất
trung bình, độ sụt tốc khi tải định mức so với khi không tải khoảng 50%.
Với động cơ một chiều kích từ, từ thông Φ là một hàm của dòng phần
ứng. Nếu giả thiết động cơ hoạt động trong vùng tuyến tính của đặc tính từ hóa, có
thể xem là từ thông tỷ lệ bậc nhất với dòng phần ứng, nghĩa là :
Ф = KktI (2.7)
Thay (2.7) vào (2.1), (2.4) và (2.5), ta được :
M = KKktI2 (2.8)
ω = - (2.9)
SVTH: Lê Tiến Thanh Trang 30
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
ω = . - (2.10)
Lưu ý là Rư lúc này là tổng của điện trở mạch phần ứng và điện trở cuộn kích
từ.
Hình 2.3 Đặc tính cơ các loại động cơ DM
Đặc tính cơ động cơ một chiều kích từ nối tiếp được vẽ trên hình
2.3. Có thể thấy rằng tốc độ động cơ suy giảm nhiều theo moment tải. Tuy
nhiên trong thựïc tế, các động cơ tiêu chuẩn thường được thiết kế làm việc
tại các cánh nhỏ ( knee-point ) của đặc tính từ hóa khi mang tải định mức.
Với tải trên định mức, mạïch từ động cơ bão hòa, khi đó từ thông Ф không
thay đổi nhiều theo dòng tải Iư dẫn đặc tính cơ tiệm cận với đường thẳng.
Động cơ một chiều kích từ nối tiếp thích hợp cho các ứng dụng đòi hỏi
moment khởi động cao và có thể quá tải nặng. Với moment tải tăng, từ thông
động cơ cũng tăng theo. Như vậy với cùng một lượng gia tăng của moment
như nhau, dòng phần ứng Iư của động cơ một chiều kích từ nối tiếp sẽ tăng ít
hơn so với động cơ kích từ độc lập. Do đó, trong điều kiện quá tải nặng, sự
quá tải của nguồn cung cấp và sự quá nhiệt của động cơ cũng ít hơn so với động
cơ kích từ độc lập.
Theo công thức (2.10), tốc độ động cơ kích từ nối tiếp tỷ lệ nghịch với
căn bậc hai của moment. Vì vậy tốc độ động cơ khi không tải có thể tăng lên
SVTH: Lê Tiến Thanh Trang 31
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
rất cao, chỉ bị hạn chế bởi từ dư của động cơ và có thể gấp hàng chục lần tốc
độ định mức. Điều này là không cho phép với máy điện thường chỉ cho
phép hoạt động gấp hai lần tốc độ định mức.Do đó, động cơ kích từ
nối tiếp không được dùng với các ứng dụng trong đó moment tải có thể nhỏ đến
mức làm tốc độ động cơ vượt quá mức giới hạn cho phép.
Đặc tính của động cơ một chiều kích từ hỗn hợp có dạng biểu diễn
trên hình 2.3. Tốc độ không tải của động cơ phụ thuộc vào dòng kích từ qua
cuộn song song, trong khi độ dốc đặc tính cơ phụ thuộc vào sự phối hợp giữa
cuộn song song và cuộn nối tiếp. Động cơ kích từ hỗn hợp được sử dụng
trong những ứng dụng cần có đặc tính cơ tương tự động cơ kích từ nối tiếp
đồng thời hạn chế tốc độ không tải ở một giá trị giới hạn thích hợp. Cũng cần
lưu ý các đặc tính cơ đề cập trên hình 2.3 là đặc tính cơ tự nhiên của động cơ,
nghĩa là các đặc tính này nhận được khi động cơ hoạt động với điện áp cung
cấp và từ thông định mức, và không có điện trở phụ nào trong mạch phần ứng
hoặc kích từ.
2.2 Các phương pháp điều chỉnh tốc độ động cơ DC
Từ công thức (2.5) biểu diễn quan hệ giữa tốc độ–moment động cơ, có thể
thấy rằng tốc độ động cơ có thể được điều chỉnh bằng các phương pháp sau:
+ Điều chỉnh tốc độ bằng cách thay đồi từ thông kích từ của động cơ.
+ Điều chỉnh tốc độ bằng cách thay đổi điện áp phần ứng
+ Điều chỉnh tốc độ bằng cách thay đổi điện trở phụ trong mạch phần ứng
2.2.1 Điều chỉnh từ thông kích từ của động cơ
Điều chỉnh từ thông được sử dụng khi cần tăng tốc độ làm việc của
động cơ cao hơn tốc độ định mức. Có thể thấy điều đó qua công thức (2.5): ω
=
Đặc tính tĩnh của động cơ kích từ độc lập và kích từ nối tiếp khi điều
khiển từ thông được biểu diễn lần lượt trên hình 2.4 (a) và (b) bằng các đường
nét đứt. Lưu ý là độ cứng đặc tính cơ giảm nhanh khi giảm từ thông.
Tốc độ cao của động cơ đạt được khi giảm từ thông bị hạn chế bởi:
+ Sự không ổn định của động cơ gây ra bởi ảnh hưởng của phản ứng phần ứng
SVTH: Lê Tiến Thanh Trang 32
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
+ Giới hạn về mặt cơ khí của động cơ: các động cơ thông thường cho phép tốc
độ đạt đến 1.5 - 2 lần tốc độ định mức. Một số động cơ chế tạo đặc biệt cho phép
tốc độ cao nhất đạt tới 6 lần định mức.
Đối với động cơ DC kích từ độc lập và song song, công suất cực đại cho
phép của động cơ gần như không đổi với mọi tốc độ khi điều khiển từ thông
(xem hình 2.5). Có thể thấy điều này nếu giả thiết là dòng cực đại cho phép, Iư
của động cơ không thay
đổi khi điều chỉnh từ thông và điện áp cung cấp cho phần ứng, U là định mức,
không đổi.
Khi đó , ta có: Eư = U – R ưI ư = const (2.11)
P = E ưI ư = const ( vì Iư = const ) (2.12)
Vậy công suất động cơ không thay đổi khi điều chỉnh tốc độ bằng phương pháp
thay đổi từ thông. Do đóù moment cực đại cho phép của động cơ sẽ biến thiên tỉ
lệ nghịch với tốc độ, vì: M = (2.13)
Lưu ý: Trong thực tế, giả thiết dòng phần ứng cực đại cho phép I không thay
đổi khi giảm từ thông chỉ là gần đúng. Tác động của phản ứng phần ứng càng
lớn khi từ thông càng giảm, do đó dòng phần ứng cực đại cho phép cần giảm
xuống để không sinh ra tia lửa điện quá mức trên cổ góp. Điều n ày dẫn đến
việc giá trị thực tế của I sẽ giảm xuống khi tốc độ tăng cao.
Đối với động cơ DC kích từ độc lập, việc điều khiển kích từ được thực
hiện bằng cách thay đổi điện áp kích từ với bộ chỉnh lưu có thể điều khiển
hoặc bộ chopper, tùy theo nguồn cung cấp được sử dụng là AC hay DC. Với
động cơ công suất nhỏ, cũng có thể nối tiếp biến trở vào mạch kích từ để điều
khiển từ thông.
Với động cơ DC kích từ nối tiếp, việc điều khiển từ thông được thực
hiện bằng cách thay đổi điện trở song song với cuộn kích từ. Một số động cơ
kích từ nối tiếp có cuộn kích từ nhiều đầu ra, và do đó có thể thay đổi từ thông
bằng cách thay đổi số vòng dây cuộn kích từ.
SVTH: Lê Tiến Thanh Trang 33
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
2.2.2 Điều chỉnh theo điện áp phần ứng
Với động cơ DC kích từ độc lập, nếu điện áp kích từ được duy trì không
đổi, hoặc động cơ kích từ dùng nam châm vĩnh cửu có thể giả thiết rằng từ
thông động cơ không đổi khi moment động cơ thay đổi.
Khi đó: KФ = const (2.14)
Vậy để thay đổi tốc độ động cơ ta thay đổi điện áp phần ứng. Bằng cách
thay đổi điện áp phần ứng, động cơ có thể làm việc tại bất kỳ tốc độ nào,
moment nào.
Tính chất quan trọng của phương pháp này là độ cứng đặc tính cơ không thay
đổi khi
tốc độ động cơ được điều chỉnh. Điều này khiến hệ có khả năng đáp ứng với
tải có moment hằng số vì dòng phần ứng cực đại cho phép Iưmax- tương ứng với
nó là moment tải cực đại cho phép của động cơ không đổi với mọi tốc độ.
Điện áp phần ứng động cơ có thể được điều khiển bằng cách sử dụng:
+ Máy phát DC (Hệ Máy phát – Động cơ)
+ Bộ chỉnh lưu có điều khiển (Biến đổi AC → DC )
+ Bộ Chopper (Bộ biến đổi xung áp) : DC → DC .
Hình 2.4: Điều khiển bằng cách thay đổi điện áp phần ứng, từ thông báo
2.2.3 Điều chỉnh điện trở phụ trong mạch phần ứng
Hình 2.6 biểu diễn đặc tính cơ của động cơ DC kích từ độc lập và nối
tiếp khi điều khiển tốc độ bằng cách thêm điện trở phụ vào phần ứng.
Nhược điểm chính của phương pháp này là có hiệu suất của hệ thống rất kém
SVTH: Lê Tiến Thanh Trang 34
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
và độ cứng đặc tính cơ thấp. Do đó, phương pháp này hiện nay ít được sử dụng
để điều khiển tốc độ động cơ, trừ các trường hợp :
+ Khởi động động cơ
+ Thay đổi tốc độ động cơ trong một thời gian ngắn trong chế độ ngắn hạn hoặc
chế độ ngắn hạn lặp lại.
Hình 2.5 Đặc tính động cơ DC khi thêm điện trở phụ vào phần ứng
2.3 Phương pháp điều chế độ rộng xung
Phương pháp điều rộng xung (PWM: Pulse Width Modulation) là
phương pháp thay đổi điện áp phần ứng của động cơ DC bằng cách thay đổi
thời gian đóng ngắt công tắc nguồn. Đây là phương pháp sử dụng rất phổ biến vì
những ưu điểm của nó như :
+ Mạch thiết kế khá đơn giản
+ Tốc độ động cơ thay đổi êm và như mong muốn
+ Tổn hao công suất nhỏ
Xét mạch điện như hình vẽ : S R
L
U E
Hình 2.6 Mạch nguyên lý điều rộng xung
Bằng cách thay đổi thời gian đóng ngắt công tắc S, ta có thể thu đượcợc
điện áp trung bình đặt trên động cơ thay đổi theo ý muốn, khoảng thay đổi từ
0V đến U. Dạng áp ra như sau :
SVTH: Lê Tiến Thanh Trang 35
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
S
0 t
ton toff
Ut
U
0 t
Hình 2.7 Dạng áp ra sau khi điều chế
Trị trung bình điện áp trên tải tính theo công thức :
Ut = U (2.15)
Với T = ton + toff là chu kỳ không đổi của xung kích S.
Từ công thức (2.15) ta thấy 0 ≤Ut ≤ U , và Ut phụ thuộc tỉ số , vậy có thể
điều chỉnh điện áp trên tải theo ý muốn bằng cách thay đổi tỉ số .
Trong điều khiển động cơ DC bằng phương pháp PWM với tần số của xung
điều khiển cao, người ta có thể sử dụng các vi điều khiển để tạo xung (tần số
từ 5Khz đến 20Khz) để điều khiển các mạch động lực (trong các khối mạch
động lực, thường dùng IGBT hay MosFet làm khóa đóng ngắt ).
2.4 Sơ đồ khối của động cơ điện một chiều kích từ độc lập
(-)
Uư iư M Mc ω
(-) eư
U
Rktikt (-)
Hình 2.8 Sơ đồ khối động cơ điện một chiều kích từ độc lập
Sơ đồ có ba thông số đầu vào: - Điện áp phần ứng (Uư)
SVTH: Lê Tiến Thanh Trang 36
1
/1
pT
R
u
u
Jp
1
K
pwkt
1
ikt=f-1(Φ)Rkt
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- Điện áp kích từ (Ukt)
- Moment cản (Mc)
Và có hai thông số đầu ra: - Tốc độ động cơ (ω)
- Moment điện từ của động cơ (M)
2.4.1 Sơ đồ khối của động cơ điện một chiều kích từ độc lập với kích từ
định mức
(-)
Uư iư Mc ω
eư (-)
Hình 2.9 Sơ đồ khối động cơ điện một chiều kích từ độc lập với kích từ định
mức
Với kích từ định mức và bỏ qua moment cản (Mc=0), ta có hàm truyền đạt:
Gđc(p)= (2.16)
Gđc(p)= (2.17)
Gđc(p)= (2.18)
Gđc(p)= (2.19)
Gđc(p)= (2.20)
Trong đó: KĐ = , Hệ số khuếch đại động cơ (2.21)
Tc = , Hằng số thời gian cơ (2.22)
SVTH: Lê Tiến Thanh Trang 37
1
/1
pT
R
u
u KΦdm
Jp
1
KΦdm
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Do Tư << Tc nên có thể gần đúng coi: Gđc(p)= (2.23)
2.4.2 Thực nghiệm nhận dạng đối tượng điều khiển:
Từ trước đến nay khi tổng hợp các hệ truyền động nhiều thông số người
ta thường phân hệ thành cấu trúc nhiều mạch vòng có các bộ điều chỉnh nối
theo cấp. Do đó việc xác định được các tham số của đối tượng điều khiển (mà
không phải nhà sản xuất nào cũng cung cấp) là tất yếu.
Thông thường đối động cơ điện một chiều nhà sản xuất sẽ cung cấp các
thông số cơ bản: Uưđm, Iưđm, Pđm, đm. Tuy nhiên để tổng hợp và mô phỏng hệ
chúng ta cần phải biết thêm một số tham số khác như: Điện trở phần ứng (R ư),
Điện cảm phần ứng (Lư), Mômen quán tính của rôto (J), Hằng số mômen (Km),
Mômen tổn hao theo tốc độ (B ). Đây là các tham số động nên để xác định
được cần phải thí nghiệm nhiều lần và lấy giá trị trung bình.
Có nhiều phương pháp thực nghiệm hay các công thức lý thuyết gần
đúng để tính chúng.
Sử dụng động cơ một chiều kích từ độc lập bằng nam châm vĩnh cửu.
Do hãng HITACHI sản xuất có các thông số:
- Điện áp định mức Uđm= 24VDC
- Dòng điện định mức Iđm = 2A
- Công suất định mức Pđm =20W
2.5 Giới thiệu về Encoder sử dụng trong đồ án
Trong thực tế có nhiều loại encoder khác nhau như: Encoder tiếp xúc,
Encoder từ trường, Encoder quang (gồm: Encoder quang tương đối, Encoder
quang tuyệt đối). Mỗi loại lại có một nguyên lý hoạt động khác nhau, trong đồ
án này, tôi chỉ sử dụng loại Encoder quang tương đối (incremental encoder)
nên trình bày về loại encoder này.
Loại incremental encoder dùng trong đồ án được gắn đồng trục với động
cơ DC 24V – 20W, và có độ phân giải là 100 xung/vòng.
- Mô hình thứ 1:
Incremental encoder về cơ bản là một đĩa tròn quay quanh một trục
SVTH: Lê Tiến Thanh Trang 38
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
được đục lỗ như hình 2.9. Ví dụ Encoder có 100, 200, 500 hay 1000 vạch khe
hở trên vành đĩa.
Hình 2.10 Encoder quang loại tương đối- mô hình 1
Ở hai bên mặt của cái vành đĩa, sẽ có một bộ thu phát quang. Trong quá
trình encoder quay quanh trục, nếu gặp lỗ trống thì ánh sáng chiếu qua được,
nếu gặp mãnh chắn thì tia sáng không chiếu qua được. Do đó tín hiệu nhận được từ
encoder quang là một chuỗi xung. Mỗi encoder được chế tạo với số khe hở
trên vành đĩa, sẽ cho biết sẵn số xung khi quay hết một vòng. Do đó ta có
thể dùng vi điều khiển đếm số xung đó trong một đơn vị thời gian và tính ra
tốc độ động cơ (có encoder được gắn đồng trục), khi đó encoder nào có số
khe hở (lỗ) trên vành đĩa càng nhiều thì độ chính xác càng cao.
Hình 2.11 Cách thức hoạt động của encoder quang loại tương đối
Encoder mà tôi sử dụng trong đồ án, hoàn toàn giống với mô hình ở
trên. Tuy nhiên, mô hình trên có nhược điểm lớn là: ta không thể xác định
được động cơ quay trái hay quay phải, vì có quay theo chiều nào đi nữa thì
chỉ có một dạng xung đưa ra. Ngoài ra thời điểm bắt đầu hoạt động của
SVTH: Lê Tiến Thanh Trang 39
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
động cơ, ta cũng không thể nào biết được.
- Mô hình thứ 2: (Cải tiến mô hình 1, nhằm khắc phục các nhược điểm )
Hình 2.12 Mô hình 2 của encoder quang loại tương đối
Trong mô hình này, người ta đục tất cả là 2 vòng lỗ. Vòng ngoài cũng
giống như mô hình 1 ( thường được gọi là vòng A) , vòng giữa lệch pha so với
vòng ngoài là 90 độ ( gọi là vòng B ). Khi đó, dạng xung ra từ 2 vòng trên như
sau :
Hình 2.13 Sơ đồ xung ra của encoder quang tương đối – mô hình 2
Hai xung đưa ra từ 2 vòng lệch nhau 90 độ, nếu vòng ngoài (chuỗi xung
A) nhanh pha hơn vòng trong (chuỗi xung B) thì chắc chắn động cơ quay từ
trái sang phải và ngược lại.
Một lỗ ở vòng trong cùng dùng để phát hiện điểm bắt đầu của động cơ. Có thể
viết chương trình cho vi điều khiển nhận biết: nếu có một xung phát ra từ
vòng trong cùng này, tức là động cơ đã quay đúng một vòng. Tín hiệu của
chuỗi xung do 1 lỗ này tạo ra thường gọi là xung Z.
Với những đặc tính trên, encoder loại này (mô hình 2) được dùng rất
phổ
biến trong việc xác định vị trí góc của động cơ…..
SVTH: Lê Tiến Thanh Trang 40
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Tuy nhiên: Vấn đề quan trọng trong việc tìm mua những loại động cơ có gắn
encoder như thế này để là đồ án – hay Luận văn đối với sinh viên là khá khó,
và cặp mắt quang 2 bên encoder để tạo xung thường bị hư và không có đồ thay
thế.
CHƯƠNG 3
SVTH: Lê Tiến Thanh Trang 41
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
LÝ THUYẾT ĐIỀU KHIỂN PID
3.1 Giới thiệu chung về PID
Tên gọi PID là chữ viết tắt của ba thành phần cơ bản có trong bộ điều
khiển (hình 3.1): khuếch đại tỷ lệ (P), tích phân (I), và vi phân (D). Bộ điều
khiển PID được ví như một tập thể hoàn hảo gồm ba cá nhân với ba tính cách
khác nhau:
- Phục tùng và thực hiện chính xác nhiệm vụ được giao (tỷ lệ).
- Làm việc và có tích lũy kinh nghiệm để thực hiện tốt nhiệm vụ được giao
(tích phân).
- Luôn có sáng kiến và phản ứng nhanh nhạy với sự thay đổi trong quá trình
thực hiện nhiệm vụ (vi phân).
Hình 3.1 Sơ đồ khối của một bộ điều chỉnh PID
Bộ điều khiển PID được thực hiện khá rộng rãi để điều khiển đối tượng
SISO (một vào, một ra) theo nguyên lý hồi tiếp (hình 3.2). Lý do bộ điều
khiển PID được sử dụng rộng rãi là vì tính đơn giản của nó cả về cấu trúc lẫn
nguyên lý làm việc. Bộ điều khiển PID có nhiệm vụ đưa sai lệch e(t) của hệ
thống về 0 sao cho quá trình quá độ thỏa mãn các yêu cầu cơ bản về chất
lượng. Nguyên lý làm việc của bộ điều khiển PID được mô tả một cách định
tính như sau:
- Nếu sai lệch e(t) càng lớn thì thông qua thành phần uP(t), tín hiệu điều chỉnh
u(t) càng lớn (vai trò của khâu khếch đại KP).
- Nếu sai lệch e(t) chưa bằng 0 thì thông qua thành phần uI(t), bộ điều khiển
PID vẫn còn tạo tín hiệu điều chỉnh u(t) (vai trò của khâu tích phân TI).
SVTH: Lê Tiến Thanh Trang 42
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- Nếu sự thay đổi của sai lệch e(t) càng lớn thì thông qua thành phần uD(t), bộ
điều khiển PID sẽ phản ứng càng nhanh (vai trò của khâu vi phân TD).
Hình 3.2 Mô hình hệ thống điều khiển với bộ PID
Biểu thức toán học của bộ điều khiển PID có dạng:
u(t) = Kp
(3.1)
trong đó e(t) là tín hiệu đầu vào, u(t) là tín hiệu đầu ra, KP được gọi là hệ số
khuếch đại, TI là hằng số tích phân, TD là hằng số vi phân.
Từ biểu thức toán học trên ta suy ra được hàm truyền đạt của bộ điều khiển
PID:
Gc(s) = Kp(1+ ) (3.2)
Chất lượng của hệ thống phụ thuộc vào các tham số KP, TI, TD. Muốn hệ thống
có được chất lượng như mong muốn thì phải phân tích đối tượng rồi trên cơ sở
đó chọn các tham số KP, TI, TD cho phù hợp. Hiện có khá nhiều phương pháp
xác định các tham số KP, TI, TD cho bộ điều khiển PID. Dưới đây là một số
những phương pháp thường được sử dụng:
- Phương pháp của Ziegler – Nichols.
- Phương pháp tối ưu mô đun, phương pháp tối ưu đối xứng.
- Phương pháp thực nghiệm.
- Phương pháp của Reinisch.
Một điểm cần chú ý là trong nhiều trường hợp không cần xác định cả
ba tham số KP, TI, TD cho bộ điều khiển PID. Chẳng hạn như bản thân đối
tượng đã có thành phần tích phân thì trong bộ điều khiển ta không cần phải
thêm khâu tích.
SVTH: Lê Tiến Thanh Trang 43
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
phân mới triệt tiêu được sai lệch tĩnh, tức là ta chỉ cần sử dụng bộ điều khiển
PD là đủ.
Nếu tín hiệu trong hệ thống thay đổi tương đối chậm và bản than bộ
điều khiển không cần phải có phản ứng thật nhanh với sự thay đổi của sai lệch
e(t) thì ta chỉ cần sử dụng bộ điều khiển PI.
3.1.1 Phương pháp tổng hợp bộ điều khiển PID kinh điển
Để tổng hợp một bộ điều khiển PID kinh điển cần tuân theo các bước
sau:
Bước 1: Xây dựng mô hình toán học đủ chính xác cho đối tượng điều khiển.
Đây còn gọi là bước nhận dạng mô hình đối tượng.
Bước 2: Đơn giản hóa mô hình.
Bước 3: Tuyến tính hóa mô hình.
Bước 4: Chọn bộ điều khiển thích hợp, ví dụ như bộ điều khiển P, PI, PD, hay
PID và xác định các chỉ tiêu chất lượng mà hệ thống cần phải đạt được.
Bước 5: Tính toán thông số KP, TI, TD của bộ điều khiển PID. Để thực hiện
việc xác định thông số cho bộ điều khiển PID có rất mhiều phương pháp như
kể trên, trong đó phương pháp thực nghiệm (phương pháp thứ hai của Zeigler-
Nichols) là thông dụng nhất.
Bước 6: Kiểm tra bộ điều khiển PID vừa thiết kế bằng cách ghép nối với mô
hình đối tượng điều khiển, nếu kết quả mô phỏng không được như mong
muốn, phải thiết kế lại
theo các bước từ 2 đến 6 cho đến khi đạt được kết quả mong muốn.
Bước 7: Đưa bộ điều khiển PID vừa thiết kế vào điều khiển đối tượng thực và
kiểm tra quá trình làm việc của hệ thống. Nếu chưa đạt kết quả yêu cầu, thiết
kế lại bộ điều khiển theo các bước từ 1 đến 7 cho đến khi đạt được các chỉ tiêu
chất lượng mong muốn.
3.1.2 Xác định thông số cho bộ điều khiển PID theo phương pháp thực
nghiệm (phương pháp thứ hai của Zeigler - Nichols)
Thực tế cho thấy mô hình toán học của đối tượng mà ta xây dựng được
thường không nằm trong các dạng đặc biệt để có thể áp dụng một số phương
pháp xác định thông số cho bộ điều khiển PID như phương pháp tối ưu mô
SVTH: Lê Tiến Thanh Trang 44
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
đun, phương pháp tối ưu đối xứng, phương pháp của Reinisch, phương pháp
Chien-Hrones-Reswick hay phương pháp tổng T của Kuhn. Trong thực tế khi
gặp những đối tượng dạng này, phương pháp xác định tham số KP, TI, TD của
bộ điều khiển PID bằng thực nghiệm hay còn gọi là phương pháp thứ hai của
Zeigler-Nichols thường được sử dụng vì nó có ưu điềm là đơn giản và cho kết
quả khá tốt. Nguyên lý của phương pháp này như sau:
Bước 1: Thay bộ điều khiển vị trí trong hình 3.2 bằng một bộ khuếch đại. Sử
dụng tín hiệu thử là hàm step 1(t). Sau đó tăng dần hệ số khuếch đại tới giá trị
trị Kth để hệ kín ở biên giới ổn định, nghĩa là h(t) có dạng dao động điều hòa.
Xác định chu kỳ Tth của dao động.
Bước 2: Xác định tham số cho bộ điều khiển P, PI, PID như sau:
- Nếu sử dụng bộ điều khiển P: G(p) = KP thì chọn KP = Kth (3.3)
- Nếu sử dụng bộ điều khiển PI: G(p) = KP (1 + ) thì chọn KP = 0.45Kth
và
TI = 0.85Tth (3.4)
- Nếu sử dụng bộ điều khiển PID: G(p) = KP ( 1+ ) thì chọn
KP = 0.6Kth , TI = 0.5Tth , TD = 0.12Tth (3.5)
3.1.3 Thực tế về các bộ điều chỉnh PID
Hiện nay hầu hết các bộ điều chỉnh mới sản xuất có chức năng tự động
xác định tham số PID. Chức năng tự động này làm việc rất tốt với các hệ
thống điều chỉnh nhiệt độ và tốc độ động cơ. Các hệ thống lớn không có chức
năng tự động xác định thông số nhưng được trang bị hệ thống vẽ đồ thị tín
hiệu đo được của biến quá trình (proces value- PV) và biến đầu ra của bộ điều
khiển (manipulated value - MV). Ta có thể dễ dàng nhìn được dạng PV và đo
được chu kỳ dao động cũng như độ lệch. Mỗi mạch vòng thường có thể đặt
thông số trực tiếp trên giao diện người và máy hoặc dùng máy tính lập trình
can thiệp. Tùy theo nhà sản xuất mà số lượng, tên gọi các thông số có thể khác
nhau. Có ba thông số cơ bản mà hầu hết các bộ điều chỉnh đều giống nhau là
ba thông số P, I, D.
SVTH: Lê Tiến Thanh Trang 45
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
3.2 Lý thuyết điều khiển PID
Các khâu điều chỉnh P, PD, PID và cách thiết kế bộ điều khiển PID
3.2.1 Khâu điều chỉnh tỷ lệ P (Proportional Controller)
Điều chỉnh tỷ lệ là phương pháp điều chỉnh tạo ra tín hiệu điều chỉnh tỷ
lệ với sai lệch đầu vào.
Hàm truyền: Gc(s) = Kp
(3.6)
Hệ số tỷ lệ càng lớn sai số xác lập càng nhỏ. Trong đa số các trường hợp hệ số
tỷ lệ càng lớn độ vọt lố càng cao, hệ thống càng kém ổn định.
3.2.2 Khâu điều chỉnh vi phân tỷ lệ PD (Proportional Derivative
Controller)
Hàm truyền: Gc(s) = Kp + KD s = Kp (1+TD s) (3.7)
Đặc tính tần số logarit: arctg(TDω) (3.8)
Khâu điều chỉnh PD là trường hợp riêng của khâu hiệu chỉnh sớm pha, trong
đó độ lệch pha cực đại giữa tín hiệu ra và tín hiệu vào là: φmax = 900, tương ứng
với tần số ωmax = +∞
Hình 3.3 Khâu điều chỉnh vi phân tỷ lệ PD
Khâu điều chỉnh PD làm giảm độ vọt lố, đáp ứng ra bớt nhấp nhô, làm nhanh
đáp ứng của hệ thống, nhưng cũng làm cho hệ thống rất nhạy với nhiễu tần số
cao.
SVTH: Lê Tiến Thanh Trang 46
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
3.2.3 Khâu điều chỉnh tích phân tỷ lệ PI (Proportional Integral
Controller)
Hàm truyền: Gc(s) = Kp + = Kp (1 + ) (3.9)
Đặc tính tần số logarit: φ = arctg(TIω) - /2 (3.10)
Khâu điều chỉnh PI là một trường hợp riêng của khâu hiệu chỉnh trể pha, trong
đó độ lệch pha cực tiểu giữa tín hiệu ra và tín hiệu vào là: φmin = -900, tương
ứng với tần số ωmin = 0.
Khâu tích phân tỷ lệ PI có mặt trong hệ thống sẽ dẫn đến sai lệch tĩnh triệt tiêu
( hệ vô sai ). Muốn tăng độ chính xác của hệ thống ta phải tăng hệ số khuếch
đại, song với mọi hệ thống thực đều bị hạn chế và sự có mặt của khâu PI là bắt
buộc.
Hình 3.4 Khâu điều chỉnh tích phân tỷ lệ PI
3.2.4 Khâu điều chỉnh vi tích phân tỷ lệ PID (Proportional Integral
Derivative Controller)
Có thể nói trong lĩnh vực điều khiển, bộ điều khiển PID được xem như
một giải pháp đa năng cho các ứng dụng điều khiển Anolog cũng như Digital.
Theo một nghiên cứu cho thấy: Hơn 90% các bộ điều khiển được sử dụng là
bộ điều khiển PID. Bộ điều khiển PID nếu được thiết kế tốt có khả năng điều
khiển hệ thống với chất lượng quá độ tốt ( đáp ứng nhanh, độ vọt lố thấp ) và
triệt tiêu sai số xác lập.
SVTH: Lê Tiến Thanh Trang 47
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Khâu điều chỉnh PID kết hợp những ưu điểm của khâu PD và PI, có khả năng
tăng độ dự trữ pha ở tần số cắt, khử chậm pha. Sự có mặt của khâu PID ở vòng
hồi tiếp có thể dẫn đến sự dao động trong hệ do đáp ứng quá độ bị vọt lố bởi
hàm dirac δ(t).
Hàm truyền: Gc(s) = Kp + + KDs = Kp (1 + + TDs ) (3.11)
Hình 3.5 Khâu điều chỉnh vi tích phân tỷ lệ PID.
Chương 4
SVTH: Lê Tiến Thanh Trang 48
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
THIẾT KẾ VÀ THI CÔNG MÔ HÌNH PHẦN CỨNG
4.1 Cấu trúc phần cứng của mô hình
Giới thiệu sơ đồ khối của mô hình
Hình 4.1. Sơ đồ khối của mô hình.
4.2. Các khối chức năng trên mô hình
Mô hình của đề tài gồm các khối sau:
- Mạch vi điều khiển trung tâm.
- Mạch động lực.
- Khối nguồn 24VDC cho mạch động lực và 5VDC cho mạch điều
khiển.
- Mạch LED hiển thị trạng thái và reset Vi điều khiển.
- Mạch bàn phím điều khiển tại chỗ.
- Mạch LCD hiển thị các thông số.
- Mạch giao tiếp vơi máy vi tính.
- Khối động cơ, encoder và các tải.
SVTH: Lê Tiến Thanh Trang 49
RS232
Nguồn 24V
ĐC
Encoder
Máy tính ĐK
Nguồn 5V
Khối hiển thị LCD
Phản hồi
PID;Mạch lực(cầu H)
Khối điều khiển trung
tâm PIC 16f877a
Khối bàn phím
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Encoder
3334353637383940
15CCP1CCP2
2324
Led_ChieuquayRS_LCDE_LCDD4_LCDD5_LCDD6_LCDD7_LCD
X12X11
Led_Chedo
TXRX
CCP1
18
CCP2
40 39 38 37 36 35 34 33V
DD
GN
DD
7_
LC
DD
6_
LC
DD
5_
LC
DD
4_
LC
DE
_L
CD
RS
_L
CD
TX
RX
GN
DV
DD
reset
Led_Thuan
Led_nguocLed_TaichoLed_tuxa
KpKi
Kd
Led_thuanLed_NguocLed_TaichoLed_tuxa
VDDGND
Reset
KpKiKd
RS
E D4
D5
D6
D7
KdKiKp
LED_thuan
LED_taichoLED_tuxa
LED_nguoc
VDDGND
TX
RX
T1OUT
R1IN
RB4
RB5
RB6
RB7
RB0
RB
1
RB2
X12
X11
ENCODER
VDDGND
GNDVDD
Re
set
VD
DG
ND
RB3
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U0 PIC16F877A
X14MHz
C1
33pF
C2
33pFGND
12
5VDC
Q1B688
Q2
B688
Q3D718
Q4
D718
GND
R8
1k
R910k
R12 370R GND
R10
1k
R1110k
GND
R14
1k
R1510k
R16 370R
GND
R17
1k
R1810k
1
2
4
3
U1
P521
1
2
4
3
U2
P521
1
2
4
3
U3
P521
1
2
4
3
U4
P521
12
24VDC
CONN-H2
VDD
GND
1 2
DONGCO
PWM1
PWM1PWM2
PWM2
24V-24V+
24V-
24V+
24V-
24V+
24
V+
24
V-
C3104
C4104
D51N4007
D61N4007
D71N4007
D81N4007
12345678
BANPHIMCONN-H8
12345678
LCDCONN-H8
1234
MAX232CONN-H4
12345678910
LED-RESET
CONN-SIL10
PWM1PWM2
D7
14D
613
D5
12D
411
D3
10D
29
D1
8D
07
E6
RW
5R
S4
VS
S1
VD
D2
VE
E3
K16
A15
LCD1TC1602A-01T
R1270R
1 2 3 4 5 6 7 8
LCDCONN-H8
THUAN/NGUOC TOC DO
OK
8 9 PID
5 6 NEXT
2 3 0
CHAY/DUNG
7
4
1
12
24VDC
CONN-H2
12
5VDC
CONN-H2
BR1-24V
GBU6A
BR2-5V
2W01G
VI1
VO3
GN
D2
U17824
VI1
VO3
GN
D2
U27805
Q1B688
C12200u
C21000u
D1
1N4007
C32200u
D2
1N4007
C5104
D3
LED
R2330R
C410u
D4LED
R310k
R4
10R
12345678910
J1
LE
D-R
ES
ET
RESET
RV1
1k
RV2
1k
RV3
1kD1LEDD2LEDD3LEDD4LED
R1270R
R3270R
R4270R
R5270R
GND
VDD
R2370R
VDD
GND
R6270R
R7270R
R13270R
162738495
J1
COM
1234
MAX232
CONN-H4
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT14
R1IN13
T2OUT7
R2IN8
C2+
4
C2-
5
C1+
1
C1-
3
VS+2
VS-6
U1
MAX232
C1
10u
C2
10u
C310u
C410u
1 2 3 4 5 6 7 8
BANPHIM
CONN-S8
1234
J3
ENCODER
VDD
GND
1224V~
CONN-H2
129V~
CONN-H2
VDD
GND
VDD
GND
GND
VDD
Hình 4.2. Sơ đồ nguyên lý.
4.2.1 Mạch vi điều khiển trung tâm
SVTH: Lê Tiến Thanh Trang 50
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Khối mạch vi điều khiển trung tâm chịu trách nhiệm xử lý tất cả các
hoạt động của toàn mạch. Mạch vi điều khiển sử dụng PIC16F877A, bộ dao
động thạch anh kiểu Piece 4 Mhz.
Trên mạch này còn có các Jump để kết nối với các mạch chức năng
khác.
Bảng 4.1 Chức năng các chân của PIC16F877A trong mô hình:
Số chân Tên chân Chức năng trong mạch
1 MCLR Reset vi điều khiển
2 RA0 Điều chỉnh Kp bằng biến trở
3 RA1 Điều chỉnh Ki bằng biến trở
4 RA2 Không dùng
5 RA3 Điều chỉnh Kd bằng biến trở
6 RA4 Đọc xung từ encoder
7 RA5 LED báo động cơ chạy thuận
8 RE0 LED báo động cơ chạy ngược
9 RE1 LED báo chế độ điều khiển tại chỗ
10 RE2 LED báo chế độ điều khiển từ xa
11 VDD Nguồn dương 5VDC cho vi điều khiển
12 VSS Nối đất
13 OSC1 Dao động thạch anh
14 OSC2 Dao động thạch anh
15 RC0 Không dùng
16 RC1 Đầu ra PWM2
17 RC2 Đầu ra PWM1
18 RC3 Không dùng
19 RD0 Không dùng
20 RD1 Không dùng
21 RD2 Chân RS của LCD
22 RD3 Chân E của LCD
23 RC4 Không dùng
24 RC5 Không dùng
SVTH: Lê Tiến Thanh Trang 51
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
25 RC6 Chân truyền dữ liệu lên máy tính
26 RC7 Chân nhận dữ liệu từ máy tính
27 RD4 Chân D4 của LCD
28 RD5 Chân D5 của LCD
29 RD6 Chân D6 của LCD
30 RD7 Chân D7 của LCD
31 VSS Nối đất
32 VDD Nguồn dương 5VDC cho vi điều khiển
33 RB0 Nối với bàn phím điều khiển
34 RB1 Nối với bàn phím điều khiển
35 RB2 Nối với bàn phím điều khiển
36 RB3 Nối với bàn phím điều khiển
37 RB4 Nối với bàn phím điều khiển
38 RB5 Nối với bàn phím điều khiển
39 RB6 Nối với bàn phím điều khiển
40 RB7 Nối với bàn phím điều khiển
SVTH: Lê Tiến Thanh Trang 52
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Encoder
3334353637383940
15CCP1CCP2
2324
Led_ChieuquayRS_LCDE_LCDD4_LCDD5_LCDD6_LCDD7_LCD
X12X11
Led_Chedo
TXRX
CCP1
18
CCP2
40 39 38 37 36 35 34 33
VD
D
GN
DD
7_
LC
DD
6_
LC
DD
5_
LC
DD
4_
LC
DE
_L
CD
RS
_L
CD
TX
RX
GN
DV
DD
reset
Led_Thuan
Led_nguocLed_TaichoLed_tuxa
KpKi
Kd
Led_thuanLed_NguocLed_TaichoLed_tuxa
VDDGND
Reset
KpKiKd
X12
X11
ENCODER
VDDGND
GNDVDD
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U0 PIC16F877A
X14MHz
C1
33pF
C2
33pFGND
12
NGUON 5V
R12 370R
R16 370R
VDD
GND
C3104
C4104
12345678
BANPHIMCONN-H8
12345678
LCDCONN-H8
1234
MAX232CONN-H4
12345678910
LED-RESET
CONN-SIL10
PWM1PWM2
1234
J3
ENCODER
VDD
GND
Hình 4.3. Mạch điều khiển trung tâm.
4.2.2 Mạch động lực
Mạch động lực: là mạch cầu H có nhiệm vụ nhận tín hiệu điều khiển từ
mạch điều khiển trung tâm, thay đổi điện áp vào động cơ, thông qua đó thay
đổi tốc độ động cơ theo yêu cầu. Mạch cầu H sử dụng 2 transistor thuận B688
và 2 transisor ngược D718. Các điốt bảo vệ cho các transistor tránh dòng
ngược đặt lên các chân C-E.
Mạch động lực và mạch điều khiển được cách ly về điện bởi các cách ly
quang.
Nguyên tắc hoạt động: Khi vi điều khiển phát xung PWM1 trên chân
CCP1, làm cho các opto U1 và U4 dẫn, kích mở cặp transistor Q1 và Q4, dòng
điện sẽ chạy qua Q1 đến động cơ rồi qua Q4, động cơ sẽ quay thuận. Ngược
lại, khi vi điều khiển phát xung PWM2 trên chân CCP2, opto U2 và U4 dẫn,
cặp transistor Q2 và Q3 mở, dòng điện chạy qua Q2 đến động cơ rồi qua Q3,
SVTH: Lê Tiến Thanh Trang 53
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
động cơ quay ngược. Trong trường hợp cả 2 chân CCP1 và CCP2 đều không
có xung thì động cơ sẽ dừng lại.
Encoder sử dụng nguồn 5VDC, chân tín hiệu đưa trực tiếp vào chân
RA4/TOCKI của vi điều khiển qua Jump J2.
Q1B688
Q2
B688
Q3D718
Q4
D718
GND
R8
1k
R910k
GND
R10
1k
R1110k
GND
R14
1k
R1510k
GND
R17
1k
R1810k
1
2
4
3
U1
P521
1
2
4
3
U2
P521
1
2
4
3
U3
P521
1
2
4
3
U4
P521
12
NGUON 24V
CONN-H2
1 2
DONGCO
PWM1
PWM1PWM2
PWM2
24V-24V+
24V-
24V+
24V-
24V+
24V
+24
V-
D51N4007
D61N4007
D71N4007
D81N4007
Hình 4.4. Mạch động lực.
4.2.3 Khối nguồn 24VDC cho mạch động lực và 5VDC cho mạch điều
khiển.
Mạch nguồn 24V cung cấp cho động cơ:
Cung cấp nguồn 24VDC cho động cơ hoạt động
12
24VDC
CONN-H2
12
5VDC
CONN-H2
BR1-24V
GBU6A
BR2-5V
2W01G
VI1
VO3
GN
D2
U17824
VI1
VO3
GN
D2
U27805
Q1B688
C12200u
C21000u
D1
1N4007
C32200u
D2
1N4007
C5104
D3LED
R2330R
C410u
D4LED
R310k
R4
10R1224V~
CONN-H2
129V~
CONN-H2
Hình 4.5. Mạch nguồn 24VDC cho động cơ.
Ngõ vào là điện áp xoay chiều 24VAC/3A. Sau đó qua cầu chỉnh lưu
diod thành điện áp một chiều. Tụ điện C1(2200uF/50V) dùng để làm phẳng
SVTH: Lê Tiến Thanh Trang 54
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
điện áp sau chỉnh lưu. Điện áp sau chỉnh lưu sẽ qua IC ổn áp LM7824 , tiếp
tục qua tụ C2(1000uF) thành điện áp 24VDC.
BJT công suất loại PNP Q1(B688) dùng để khuếch đại dòng điện ngõ
ra, điện trở công suất R4 (10 Ohm/2W) được sử dụng có các chức năng sau:
- Điện áp mức dẫn trên cực E-B của Q1: VEB =0.7V nên BJT Q1 chỉ
hoạt động khi dòng điện vào IC ổn áp LM7824 vượt qua ngưỡng:
Ing=VEB/R4=0.7/10=0.07mA. Có nghĩa là chỉ khi các ngõ ra 24V cần sử dụng
dòng lớn(từ 0.07mA trở lên) thì Q1 mới hoạt động để khuếch đại dòng ngõ ra.
- Ngoài ra, điện trở R4 còn có chức năng cải thiện tốt việc đóng/ngắt
BJT Q4.
- Diod D1(1N4007) có nhiệm vụ bảo vệ IC ổn áp LM7824 khi ngõ vào
mất điện đột ngột.
Mạch nguồn 5V cung cấp cho mạch điều khiển:
12
24VDC
CONN-H2
12
5VDC
CONN-H2
BR1-24V
GBU6A
BR2-5V
2W01G
VI1
VO3
GN
D2
U17824
VI1
VO3
GN
D2
U27805
Q1B688
C12200u
C21000u
D1
1N4007
C32200u
D2
1N4007
C5104
D3LED
R2330R
C410u
D4LED
R310k
R4
10R1224V~
CONN-H2
129V~
CONN-H2
Hình 4.6. Mạch nguồn 5VDC cho mạch điều khiển.
Ngõ vào là điện áp xoay chiều 9VAC, qua chỉnh lưu cầu diod thành điện
áp một chiều. Tụ C3(2200uF) làm phẳng hơn điện áp sau chỉnh lưu. Tụ C4,
C5 dùng để lọc nhiễu sóng hài bậc cao cho điện áp 5VDC trước khi cung cấp
cho vi điều khiển. Ngõ ra sau IC ổn áp LM7805 là điện áp 5VDC.
4.2.4 Mạch LED hiển thị trạng thái và reset Vi điều khiển
Mạch gồm có:
- Nút nhấn reset Vi điều khiển.
- LED D1 cho biết động cơ đang chạy thuận.
- LED D2 cho biết động cơ đang chạy ngược.
- LED D3 cho biết đang nhập thông số cho mạch bằng bàn phím.
SVTH: Lê Tiến Thanh Trang 55
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- LED D4 cho biết mạch sẵn sàng nhận thông số cài đặt từ máy tính.
- Các biến trở RV1, RV2, RV3 dùng để điều chỉnh các thông số Kp, Ki,
Kd (Không sử dụng trong mô hình).
KdKiKp
LED_thuan
LED_taichoLED_tuxa
LED_nguoc
VDDGND
Rese
t
12345678910
J1
LE
D-R
ES
ET
RESET
RV1
1k
RV2
1k
RV3
1kD1LEDD2LEDD3LEDD4LED
R1270R
R3270R
R4270R
R5270R
GND
VDD
R2370R
VDD
GND
R6270R
R7270R
R13270R
VDD
Hình 4.7. Mạch LED hiển thị trạng thái và reset Vi điều khiển.
4.2.5 Mạch bàn phím điều khiển tại chỗ
RB4
RB5
RB6
RB7
RB0
RB
1
RB2
RB3
THUAN/NGUOC TOC DO OK
8 9 PID
5 6 NEXT
2 3 0
CHAY/DUNG
7
4
1
1 2 3 4 5 6 7 8
BANPHIM
CONN-S8
Hình 4.8. Mạch bàn phím.
Cấu tạo của bàn phím gồm:
- Các phím số từ 0 đến 9.
- Phím CHAY/DUNG dùng để điều khiển động cơ chạy hoặc dừng.
SVTH: Lê Tiến Thanh Trang 56
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- Phím THUAN/NGUOC để đảo chiều động cơ.
- Phím TOCDO cho phép nhập tốc độ từ bàn phím.
- Phím PID cho phép nhập thông số Kp, Ki, Kd từ bàn phím.
- Phím NEXT phục vụ cho việc nhập thông số PID.
- Phím OK dùng cập nhật tốc độ hoặc các thông số Kp, Ki, Kd.
4.2.6 Mạch LCD hiển thị các thông số.
Sử dụng LCD chế độ nửa byte (Nibble) nên chỉ cần dùng 4 bit cao dữ
liệu là D4 ÷ D7. Các chân của LCD kết nối với Port D của vi điều khiển
PIC16F877A. Trình tự kết nối các chân LCD vào vi điều khiển: RS-RD2, E-
RD3, D[4:7]-RD[4:7].
Bảng 4.2: Sơ đồ chân của LCD
Chân Kí hiệu Chức năng
1 Vss mass
2 Vdd Nguồn cung cấp cho LCD
3 V_Cons Chỉnh độ tương phản cho LCD
4 /RS Chọn thanh ghi trong LCD
5 R/W Đọc (1)/Ghi dữ liệu (0)
6 Enable Cho phép chọn LCD
7 D0 Bit 0 của byte dữ liệu
8 D1 Bit 1 của byte dữ liệu
9 D2 Bit 2 của byte dữ liệu
10 D3 Bit 3 của byte dữ liệu
11 D4 Bit 4 của byte dữ liệu
12 D5 Bit 5 của byte dữ liệu
13 D6 Bit 6 của byte dữ liệu
14 D7 Bit 7 của byte dữ liệu
15 LED_A Nguồn cho đèn LED nền của LCD
16 LED_K Mass cho đèn LED nền của LCD
SVTH: Lê Tiến Thanh Trang 57
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Vì trong chương trình chỉ sử dụng chế độ ghi giá trị lên LCD (Write)
mà không có đọc giá trị từ LCD về (Read) nên chân R/W của LCD được nối
mass. V_cons nối mass sẽ cho độ tương phản cao nhất.
RS
ED4D5D6D7
VDD
GND
D714
D613
D512
D411
D310
D29
D18
D07
E6
RW5
RS4
VSS1
VDD2
VEE3
K16
A15
LCD1
TC1602A-01T
R1
270R
12345678
LCD
CONN-H8
Hình 4.9. Mạch LCD.
4.2.7 Mạch giao tiếp máy vi tính
Cổng nối tiêp trong máy vi tính thường gọi là cổng COM, thường được
sử dụng để truyền dữ liệu hai chiều giữa máy vi tính và ngoại vi vì các lý do
sau:
- Cổng nối tiếp truyền mức 1 (High): từ -3V đến -12V và mức 0 (Low):
từ +3V đến +12V nên tính chống nhiễu tương đối tốt, cho phép khoảng cách
truyền xa hơn cổng song song.
- Số dây kết nối ít, tối thiểu 3 dây: TxD (dây truyền), RxD (dây nhận),
GND.
- Ghép nối dễ dàng với vi điều khiển hay PLC.
- Cho phép nối mạng.
Việc truyền dữ liệu xảy ra trên 2 đường dẫn tín hiệu: TxD (dây truyền)
và RxD (dây nhận), các chân khác đóng vai trò như tín hiệu hổ trợ khi trao đổi
thông tin và vì thế không phải trong mọi ứng dụng đều cần đến.
SVTH: Lê Tiến Thanh Trang 58
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Các mạch logic thường dùng điện áp 5V do đó cần bộ chuyển đổi mức
TTL CMOS để có điện áp phù hợp cổng COM trên máy tính. Các IC
chuyển mức thường dùng là: MAX232 của hãng Maxim, Hin232…
Chuẩn RS-232 chỉ có thể kết nối nhiều nhất với hai thiết bị, với khoảng
cách dài nhất giữa hai thiết bị là 50 ÷ 100 feet (12.7 ÷ 25.4 m), tốc độ truyền là
20k bit/s.
Trong sơ đồ khối của mạch này, ta dùng 3 dây để truyền và nhận dữ
liệu: TxD, RxD và GND, tức là không dùng chế độ bắt tay bằng phần cứng
(cặp DSR/DTR hay CTS/RTS). Hình thức này diễn ra khá phổ biến bởi vì tốc
độ xử lý của máy tính hiện nay rất cao. Không phải như lúc trước: có lúc máy
vi tính đang làm việc gì đó thì phải kiểm tra xem máy vi tính làm xong chưa,
nếu xong rồi thì thực hiện việc truyền thông. Nếu vì lý do gì đó mà cần phải
bắt tay thì ta có thể dùng chế độ bắt tay phần mềm.
TX
RX
T1OUT
R1IN
162738495
J1
COM
1234
MAX232
CONN-H4
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT 14
R1IN 13
T2OUT 7
R2IN 8
C2+
4
C2-
5
C1+
1
C1-
3
VS+ 2
VS- 6
U1
MAX232
C1
10u
C2
10u
C310u
C410u
GND
VDD
GND
GND
VDD
Hình 4.10. Mạch giao tiếp với máy vi tính.
4.2.8 Khối động cơ, Encoder và các tải.
Động cơ sử dụng trong mô hình là động cơ điện một chiều 24V/20W.
Encoder quang 100xung/vòng, được nối đồng trục với động cơ. Encoder sử
dụng nguồn 5VDC, tín hiệu đưa trực tiếp vào chân TOCKI của vi điều khiển.
Tải được kéo bởi động cơ bằng cơ cấu puli và dây curoa.
SVTH: Lê Tiến Thanh Trang 59
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 4.11. Hình ảnh thực tế của mô hình trong đề tài.
SVTH: Lê Tiến Thanh Trang 60
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Chương 5
GIẢI THUẬT CHƯƠNG TRÌNH
5.1 Thuật điều khiển PID
5.1.1 Bộ điều khiển tỷ lệ P
X(t) E(t) U(t) Y(t)
Hình 5.1 Sơ đồ hệ thống điều khiển với bộ điều khiển P
Bộ điều khiển tỷ lệ có nhiệm vụ làm giảm sai lệch e(t). Tăng tính tác
động nhanh của hệ thống.
+ U(t) = e(t).Kp (5.1)
+ E(t) = X(t) – Z(t). (5.2)
+ Z(t) = C.Y(t). (5.3)
E(t) tăng thì U(t) tăng, Y(t) tăng, Z(t) tăng e(t) giảm .
E(t) gi ảm thì U(t) giảm, Y(t) giảm, Z(t) giảm e(t) tăng .
Trong đó : Kp là hệ số khuếch đại của khâu điều chỉnh tỷ lệ.
Nhược điểm của bộ điều chỉnh tỷ lệ là : Luôn tồn tại sai số ở chế độ xác lập
5.1.2 Bộ điều khiển tích phân I
Hình 5.2 Sơ đồ hệ thống điều khiển với bộ điều khiển I
SVTH: Lê Tiến Thanh Trang 61
Bộ điều khiển P
Đối tượng
Đo lường
Bộ điều khiển I
Đối tượng
Đo lường
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Ta có: U(t) = hoặc U(p) = (5.4)
Với Ti là thời gian tích phân.
Khi e(t) khác 0 thì U(t) tiếp túc tăng vì hoạt của khâu tích phân. U(t)
tăng thì Y(t) tăng e(t) giảm. Khi U(t) tích luỹ đủ thì e(t) 0.
Tín hiệu đầu ra của khâu tích phân U(t) sẽ tiếp tục tăng cho đến khi bằng
giá trị tương ứng với lúc tốc độ biến thiên. Lúc đó Y(t) đạt được tốc độ biến
thiên cuả tốc độ chủ đạo, sai số e(t) = 0.
Sau đây ta sẽ thấy sự phụ thuộc của sai số e(t) và tích phân của sai số này :
e(t)
U(t)
e(t)
t
Ti
Hình 5.3 Đặc tính quá độ của khâu tích phân
e(t)
t
e(t)dt
t
Hình 5.4 Sự phụ thuộc e(t) và tích phân e(t).
SVTH: Lê Tiến Thanh Trang 62
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
L(ω) L(ω)
20lgKi 1 lg
0 ω 0 -1/Ti
Hình 5.5 Đặc tính tần số-biên độ,và đặc tính tần số pha logarit của bộ I.
Bộ điều chỉnh tích phân có những nhược điểm sau :
Từ hình vẽ ta thấy bộ điều khiển có biên độ giảm 20dB/dec. Tại tần số
= Ki tỷ số bằng 1 và tại tần số = 0 tác động tích phân tạo ra một hệ số
khuếch đại rất lớn. Dù hệ số khuếch đại không tăng ở tần số lớn nhưng nó
vẫn có ảnh hưởng. Do vậy, bộ điều chỉnh tích phân trừ khử được sai lệch
tĩnh nhưng vẫn làm ảnh hưởng đến quá trình quá độ và dễ gây mất ổn định
cho hệ thống. Vì vậy bộ điều chỉnh tích phân không được dùng riêng lẽ.
5.1.3 Bộ điều khiển tỷ lệ tích phân PI.
Để giảm bớt ảnh hưởng của nhiễu loạn, tăng hệ số khuếch đại của
hệ thống ở vùng tần số thấp nhằm giảm bớt sai số ở chế độ xác lập mà
không làm thay đổi đáng kể đặc tính ở miền tần số cao, người ta dùng bộ
điều khiển tỷ lệ tích phân PI.
Hàm truyền khâu PI có dạng : Gc(p) = = Kp(1+ ) (5.5)
U(t)
e(t)
2Kp
Kp 1
0 e(t)
Hình 5.6 Đặc tính quá độ của bộ điều khiển PI
Khi dùng bộ điều khiển PI thì vấn đề chọn các thông số Kp, Ti để phù
SVTH: Lê Tiến Thanh Trang 63
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
hợp với đối tượng điều khiển nhằm đạt được các chỉ tiêu chất lượng của
quá trịnh quá độ là rất quan trọng .
5.1.4 Bộ điều khiển tỷ lệ vi phân PD
Bộ điều khiển PD cải thiện khả năng quá độ của hệ thống, điều khiển
vi phân đáp ứng được tốc độ thay đổi của sai số e(t), nó có thể tạo ra một
sự sửa chữa đáng kể trước khi biên độ của sai lệch điều khiển e(t) trở nên
lớn.
Từ đồ thị ta thấy de(t)/dt(t) sớm pha hơn e(t) nên có thể tạo ra sai số sớm
hơn. Đáp ứng kịp thời hơn. Tác động vi phân có ích trong các hệ thống
kiểm tra khi có tính hiệu vào đột biến hoặc thay đổi phụ tải.
e(t)
t
de(t) t1 t2
t
Hình 5.7 Sai lệch của bộ điều khiển và đạo hàm của khâu PD
Một điều cần lưu ý là bộ điều khiển PD không đựơc sử dụng độc lập
vì nó không đáp ứng được sai số trong chế độ xác lập.
Hàm truyền của bộ PD có dạng: Gc(p) = Kp(1+Tdp) (5.6)
L(ω) L(ω)
20lgKp
0 t
1/Td 1/Td
SVTH: Lê Tiến Thanh Trang 64
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 5.8 Đặc tính tần số-biên độ,và đặc tính tần số pha logarit của bộ PD.
Từ đồ thị ta thấy ở miền tần số cao biên độ không suy giảm. Như vậy
nhược điểm của thành phần vi phân là cho những tín hiệu tần số cao đi
qua mà không hề bị suy giảm, nếu có nhiễu loạn biến thiên ở tốc độ nhanh
mà phổ của chúng phân bố trong miền tần số cao nhập vào tín hiệu hữu
ích thì qua thành phần vi phân thiết bị sẽ cho nhiễu loạn qua mà không bị
suy giảm do đó làm tăng sai số do nhiễu loạn tác động vào hệ thống. Do đó
tín hiệu đầu ra điều khiển sẽ không chính xác .
5.1.5 Bộ điều khiển tỷ lệ vi tích phân PID
Hàm truyền của bộ điều khiển PID: Gc(p) = Kp(1+ + Td p) (5.7)
Bộ điều khiển PID là bộ điều khiển được sử dụng rộng rãi nhất
trong các ứng dụng điều khiển vì nó mang tất cả các ưu điểm của các bộ điều
khiển P, PI, PD.
Tác dụng của khâu vi phân là loại trử sự truyền tín hiệu tăng theo tỷ
lệ, đặc biệt là sự truyền tăng theo tỷ lệ của nhiễu lớn bằng cách hiệu chỉnh
liên tục hoặc ‘lặp lại’ đầu ra thiết bị điều khiển .
Khâu vi phân đáp ứng với tốc độ thay đổi của đầu ra nên gọi là tác
động tốc độ.
U(t) U(t)
1 t
0 Ti
Hình 5.9 Đặc tính quá độ của bộ điều chỉnh PID.
5.2 Đối tượng điều khiển
Đối tượng điều khiển là động cơ DC 24V, thay đổi vận tốc bằng
phương pháp PWM – thay đổi độ rộng xung (duty cycle).
SVTH: Lê Tiến Thanh Trang 65
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Vậy ngõ vào và ra của bộ điều khiển PID:
- Ngõ vào: e = vận tốc hiện tại (v_cur) – vận tốc thiết lập (v_set)
- Ngõ ra: u = %duty cycle
Phụ thuộc giữa %duty và vận tốc động cơ gần như tuyến tính nên để đơn giản,
ta giả sử nó hoàn toàn tuyến tính. Vậy, ta có thể điều khiển vận tốc động cơ
thông qua %duty.
5.3 Cách tính tốc độ động cơ trong đề tài
Động cơ được gắn đồng trục với encoder quang 100xung/vòng.
Trong vi điều khiển sử dụng Timer0 làm chức năng bộ đếm để đếm xung vào,
Timer1 dùng để định thời gian 30mS.
Timer0 8 bit, mỗi khi có xung vào thì giá trị của Timer0 tăng lên 1 đơn
vị, Timer0 sẽ tràn khi vượt qua giá trị 255.
Gọi: + TDDC: tốc độ động cơ vòng/phút
+ Soxung: số xung của encoder trong 30mS
Ta có: + Số xung của encoder trong 1 giây là (xung/s)
+ Suy ra số xung của encoder trong 30ms sẽ là:
(5.6)
Do đó, từ số xung encoder nhận được trong 30ms, đem nhân nó với 20
ta sẽ được tốc độ động cơ trong 1 phút.
TDDC(vòng/phút)=Soxung*20 (5.7)
Do tốc độ tối đa của động cơ là 4200vòng/phút = 420 000 xung/60giây
Vậy trong 30ms số xung nhận được tối đa là nên
không sợ Timer0 bị tràn.
Timer1 dùng để định thời gian 30ms.
5.4 Thuật toán quét bàn phím
Sử dụng chức năng ngắt PortB khi xảy ra sự thay đổi trạng thái trên 1
trong 4 chân RB[4:7]. Bàn phím gồm 4 hàng nối vào 4 chân RB[4:7] và 4 cột
nối vào 4 chân RB[0:3].
Lưu đồ thuật toán chương trình quét bàn phím: (Hình 5.2)
SVTH: Lê Tiến Thanh Trang 66
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
5.5 Cách tính toán PWM duty
Các ký hiệu:
+ Kp, Ki, Kd lần lượt là các hệ số Kp,Ki, Kd.
+ e_new là sai lệch hiện tại (trong lúc đang xét).
+ e_old là sai lệch ngay trước đó.
+ e_sum là tổng của tất cả các sai lệch từ lúc bắt đầu đến thời điểm
đang xét.
+ e_del là hiệu số của hai sai lệch e_new và e_old (độ biến thiên sai
lệch).
+ V_set là tốc độ đặt (số xung/40ms).
+ V_cur là tốc độ hiện tại đọc được từ encoder (số xung/40ms).
+ Pw_duty là độ rộng của xung PWM.
SVTH: Lê Tiến Thanh Trang 67
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Lưu đồ thuật toán tính toán (hình 5.2).
Hình 5.2 Lưu đồ thuật toán chương trình quét bàn phím
SVTH: Lê Tiến Thanh Trang 68
Bắt đầu quét bàn phím
Hàng ngõ vào, cột ngõ raHàng mức 1, cột mức 0
Đ
S
delay_20ms
Đ
SRBj = 0
Hàng ngõ ra, cột ngõ vào
RBj = 0
Đ
S 0 ≤ i ≤ 3RBi = 0
Xác định phím được nhấn
Thực hiện đoạn chương trình của phím
Kết thúc quét bàn phím
4 ≤ j ≤ 7RBj = 0
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 5.3 Lưu đồ thuật toán tính toán PWM duty
SVTH: Lê Tiến Thanh Trang 69
Bắt đầu tính PID
Đặt các giá trị ban đầu
Đ
S
e_new = v_set – v_cur
s_sum = e_sum + e_new
e_del = e_new – e_old
e_old = e_new
pw_duty = pw_duty + Kp*e_new + Ki*e_sum + Kd*e_del
pw_duty = 1000
Pw_duty < 256
pw_duty = 256
Đ
S
pw_duty > 1000
Kết thúc tính PID
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
5.6 Lưu đồ thuật toán chương trình chính:
Hình 5.4 Lưu đồ thuật toán chương trình chính
SVTH: Lê Tiến Thanh Trang 70
Bắt đầu
Khai báo biến, các giá trị ban đầu,
khai báo ngắt, khai báo Timer, khai báo PWM,
cho phép ngắt hoạt động.
Đ
S
Thực hiện chương trình tính toán PID
Đ
S
Thực hiện chương trình ngắt
Flag_Timer1 = 1
Có ngắt xảy ra?
set_pwm1_duty = pw_duty
set_pwm2_duty = pw_duty
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Hình 5.5 Lưu đồ thuật toán chương trình ngắt Timer1
Hình 5.6 Lưu đồ thuật toán chương trình ngắt Timer0
SVTH: Lê Tiến Thanh Trang 71
Ngắt Timer1
Reset Timer0;
Đặt lại giá trị ban đầu cho Timer1
Đọc giá trị tốc độ từ Timer0
Flag_Timer1 = 1
Kết thúc ngắt Time1
Ngắt PortB (RB4÷RB7)
Thực hiện đoạn chương trình ứng với mỗi phím
Gọi chương trình quét bàn phím
Kết thúc ngắt PortB
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
5.7 Chương trình viết trên Vi điều khiển.
5.7.1 Chương trình chính viết trên vi điều khiển PIC16F877A
// Đoạn chương trình chính
#include <Text PID.h>
#include <def_877a.h>
#include <lcd_lib_4bit.c>
#use delay(clock=4000000)
#define key_port PORTB
#define key_tris TRISB
int1 chieu,chedo,chay,xoa,OK;
int1 flag_timer1;
int8 key,next,PID;
int16 tocdomoi;//tocdomoi= toc do dang nhap, tocdodat= toc do duoc chon
int16 kp_nhap,ki_nhap,kd_nhap;//nhap vao roi chia cho 1000
int16 tddc,count,tocdodat,v_cur,v_set;
signed int16 e_old,e_new,e_sum,e_del,pw_duty;
float kp = 1.07;//thu nghiem ung voi 1 tai. hoi dao dong
float ki = 0.09;
float kd = 3.61;
#include <KEY-SCAN.c>
#INT_RTCC // Ngat Timer 0
void Timer0_isr()//ngat Timer0
{
count++;
}
#INT_TIMER1 // Chuong trinh ngat Timer 1, cai dat de cu 40ms thi co ngat
timer1
void Timer1_isr()
{
v_cur = count * 255 + get_Timer0(); //so xung dem duoc khi timer1 ngat
(0,04s)
SVTH: Lê Tiến Thanh Trang 72
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
tddc = v_cur * 15; // tddc(v/p)= soxung*(60s/0.04s)/100 = soxung*15
count = 0;
set_Timer0(0);
SET_TIMER1(55535);
flag_timer1 = 1;
}
void init_rb()
{
set_tris_b(0b11110000);
enable_interrupts(int_RB);
bit_clear(OPTION_REG,7);
}
void init_timer()
{
setup_timer_0 (RTCC_DIV_1|RTCC_EXT_H_TO_L);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
set_Timer0(0);
set_timer1(55535);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
count = 0;
TRISA = 0b011111;//PortA la input de nhan tin hieu tu encoder
TRISE = 0b000;
}
void init_pwm()
{
setup_timer_2(T2_DIV_BY_4, 255, 1);//976.5Hz
tocdodat = 2307;
v_set = tocdodat/15;
pw_duty = 500;
SVTH: Lê Tiến Thanh Trang 73
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
}
void init_lcd()
{
lcd_init();
delay_ms(200);
trisD = 0;
RD2 = 1;
}
void cal_PID()
{
float temp_kp =0;
float temp_ki =0;
float temp_kd =0;
e_new = v_set - v_cur;
e_sum = e_sum + e_new;
e_del = e_new - e_old;
e_old = e_new;
temp_kp = kp*e_new;
temp_ki = ki*e_sum;
temp_kd = kd*e_del;
///pw_duty = 1024~2047, nhung dc chi chay khi pw_duty = 1040, bao hoa
khi pw_duty = 2020
///(~pw_duty = 102->933)
pw_duty = (float)pw_duty + temp_kp + temp_ki + temp_kd;
if(pw_duty > 1023)
pw_duty = 1023;
if(pw_duty < 256)
pw_duty = 256;
}
//Gan gia tri bien tro tu 0->100 tuong ung voi gia tri ADC doc duoc tu 0-
>1024
SVTH: Lê Tiến Thanh Trang 74
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
//Vay gia tri tinh toan cua KP,KI,KD se la K = read_adc()*100/1024 =
read_adc()*0.0976
void init_adc() //Dat gia tri Kp,Ki,Kd tu bien tro
{
// set_adc_channel(0);
// delay_us(5);
// Kp = read_adc()*0.0976;
// set_adc_channel(1);
// delay_us(5);
// Ki = read_adc()*0.0976;
// set_adc_channel(3);
// delay_us(5);
// Kd = read_adc()*0.0976;
// set_adc_channel(0);
// delay_us(5);
// tocdodat = read_adc()*4;
}
void main()
{
e_new = 0;
e_old = 0;
init_timer();
init_lcd();
init_pwm();
init_RB();
chay=0;
chieu=0;
RE0 = chieu;
RA5 = chieu+1;
chedo=0;
RE1=chedo;
SVTH: Lê Tiến Thanh Trang 75
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
RE2=chedo+1;
OK=0;
setup_adc(adc_clock_internal);
setup_adc_ports(AN0_AN1_AN3);
while(true) // doan chuong trinh tinh toan gia tri pwm, hien thi len LCD
{
//init_adc();
v_set = tocdodat/15;
if(flag_timer1 == 1&&chay==1)
{
flag_timer1 = 0;
cal_pid();
set_pwm2_duty(pw_duty);
set_pwm1_duty(pw_duty);
}
if(chedo==1) //manual
{
OK=0;
if(tocdomoi>4100)
tocdomoi=0;
LCD_SetPosition(line_1);
printf(lcd_putchar,"Toc do cu: %04lu ",tddc);
LCD_SetPosition(line_2);
printf(lcd_putchar,"Toc do moi: %04lu ",tocdomoi);
if(OK==1)
{
tocdodat=tocdomoi;
tocdomoi=0;
chedo=0;
OK=0;
}
SVTH: Lê Tiến Thanh Trang 76
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
}
else
{
LCD_SetPosition(line_1);
printf(lcd_putchar,"%04lu-%04lu-%05ld ",tocdodat,tddc,pw_duty);
LCD_SetPosition(0xC0);
printf(lcd_putchar,"%f",Kp);
LCD_SetPosition(0xC4);
printf(lcd_putchar," %f",Ki);
LCD_SetPosition(0xC9);
printf(lcd_putchar," %f",Kd);
LCD_SetPosition(0xCE);
printf(lcd_putchar," ");
}
}
}
// Đoạn chương trình quét bàn phím
/
*---------------------------------------------------------------------------------------------
Ham kiem tra cot nao trong hang row xuong 0
---------------------------------------------------------------------------------------------
*/
void row_check(int8 row)
{
switch(row)
{
case 0:
{
if(!bit_test(key_port,0))
{
while(!bit_test(key_port,0));
SVTH: Lê Tiến Thanh Trang 77
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
key = 1;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,1))
{
while(!bit_test(key_port,1));
key = 2;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,2))
{
while(!bit_test(key_port,2));
key = 3;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,3))
{
while(!bit_test(key_port,3));
key = 0;
tocdomoi = tocdomoi*10 + key;
break;
}
}
//......................
case 1:
{
if(!bit_test(key_port,0))
{
SVTH: Lê Tiến Thanh Trang 78
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
while(!bit_test(key_port,0));
key = 4;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,1))
{
while(!bit_test(key_port,1));
key = 5;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,2))
{
while(!bit_test(key_port,2));
key = 6;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,3))////////////////dau "."
{
while(!bit_test(key_port,3))
break;
}
}
//.......................
case 2:
{
if(!bit_test(key_port,0))
{
while(!bit_test(key_port,0));
SVTH: Lê Tiến Thanh Trang 79
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
key = 7;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,1))
{
while(!bit_test(key_port,1));
key = 8;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,2))
{
while(!bit_test(key_port,2));
key = 9;
tocdomoi = tocdomoi*10 + key;
break;
}
if(!bit_test(key_port,3))
{
while(!bit_test(key_port,3));///nhap PID
PID++;
break;
}
}
//.......................
case 3:
{
if(!bit_test(key_port,0))
{
while(!bit_test(key_port,0));
SVTH: Lê Tiến Thanh Trang 80
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
chay++;
if(chay==0)
{
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
RA5 = 0;
RE0 = 0;
break;
}
else
{
RE0 = chieu;
RA5 = chieu+1;
if(chieu==1)
{
setup_ccp2(CCP_OFF);
delay_ms(1000);
setup_ccp1(CCP_PWM);
break;
}
else
{
setup_ccp1(CCP_OFF);
delay_ms(1000);
setup_ccp2(CCP_PWM);
break;
}
}
break;
}
if(!bit_test(key_port,1))
SVTH: Lê Tiến Thanh Trang 81
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
{
while(!bit_test(key_port,1));
chieu++;
RE0 = chieu; //den thuan
RA5 = chieu+1; //den nguoc
if(chay==1)
if(chieu==1)
{
setup_ccp2(CCP_OFF);
delay_ms(1000);
setup_ccp1(CCP_PWM);
break;
}
else
{
setup_ccp1(CCP_OFF);
delay_ms(1000);
setup_ccp2(CCP_PWM);
break;
}
break;
}
if(!bit_test(key_port,2))
{
while(!bit_test(key_port,2));
chedo++; //local- nhap toc do
RE1=chedo;
RE2=chedo+1;
break;
}
if(!bit_test(key_port,3))
SVTH: Lê Tiến Thanh Trang 82
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
{
while(!bit_test(key_port,3));
OK=1;
break;
}
break;
}
}
}
/
*---------------------------------------------------------------------------------------------
Ham quet phim
---------------------------------------------------------------------------------------------
*/
#INT_RB
void key_scan(int8 count)
{
if((RBIF)&&(RBIE))
{
disable_interrupts(INT_RB);
for(count = 4;count <= 7; count++)
{
key_tris = 0xF0; // hang ngo vao, cot ngo ra
key_port = 0xF0; // hang muc 1, cot muc 0
if(!bit_test(key_port,count)) // hang count xuong 0 chua?
{
delay_ms(20); // sau 100ms
if(!bit_test(key_port,count)) // kiem tra lai hang count co xuong 0
ko?
{
key_tris = 0x0F; // hang ngo ra, cot ngo vao
SVTH: Lê Tiến Thanh Trang 83
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
switch(count)
{
case 4:
{
key_port = 0xEF; // hang 0 xuong 0
row_check(0); // kiem tra cot ung voi hang 0
break;
}
case 5:
{
key_port = 0xDF; // hang 1 xuong 0
row_check(1); // kiem tra cot ung voi hang 1
break;
}
case 6:
{
key_port = 0xBF; // hang 2 xuong 0
row_check(2); // kiem tra cot ung voi hang 2
break;
}
case 7:
{
key_port = 0x7F; // hang 3 xuong 0
row_check(3); // kiem tra cot ung voi hang 3
break;
}
}
}
}
}
set_tris_b(0b11110000);
SVTH: Lê Tiến Thanh Trang 84
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
RBIF=0; //Xoa co ngat RB
key_port = 0xF0;
delay_ms(100);
enable_interrupts(INT_RB);
}
}
5.8 Kết nối giữa máy tính với vi điều khiển qua giao diện giám sát
Việc kết nối giữa PC với vi điều khiển được thực hiện qua cổng COM
theo chuẩn RS-232C, ở đây dữ liệu được truyền và nhận theo phương thức
không đồng bộ. Định dạng khung truyền 1 byte dữ liệu gồm: 1 bit bắt đầu
(start), 8 bit dữ liệu, 1 bit kết thúc (stop), với tốc độ baub là 9600, không kiểm
tra chẳn lẻ và không bắt tay phần cứng.
Kết nối giữa PC và mạch điều khiển qua giao diện người dùng giúp ta
biết được những giá trị như: Tốc độ đặt và tốc độ thật của động cơ, các thông
số P, I, D, chiều quay, đáp ứng tốc độ và thời gian qua đồ thị từ đó có thể biết
được tình trạng làm việc của hệ thống. Từ giao diện giám sát có thể nhập các
thông số điều khiển như tốc độ, Kp, Ki, Kd, có thể điều chỉnh tốc độ theo nhiều
cấp tốc độ, điều chỉnh có cấp hoặc không có cấp.
5.9 Kết quả đạt được
5.9.1 Một số hình ảnh về hoạt động của hệ thống.
Cách điều khiển và giám sát qua giao diện người dùng:
SVTH: Lê Tiến Thanh Trang 85
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
+ Kết nối cáp truyền thông với mạch điều khiển.
+ Mở giao diện người dùng.
+ Cho phép kết nối với mạch điều khiển bằng cách nhấn nút “kết nối”.
+ Nhấn nút khởi động để động cơ quay, có thể đảo chiều quay trực tiếp bằng
cách nhấn nút “đảo chiều” trên giao diện, khi muốn dừng động cơ ta chỉ việc
nhấn nút “dừng”.
+ Có thể tăng, giảm tốc độ động cơ bằng cách kéo thanh trượt trên giao diện,
làm như vậy ta có thể điều khiển được tốc độ không có cấp.
+ Khi chỉ việc nhấn nút “dừng” sau đó nhấn nút “ngừng kết nối”
Từ giao diện ta sẽ biết chiều quay, tốc độ đặt và tốc thật từ đó có thể
biết được sai số tốc độ là bao nhiêu, biết được đáp ứng của hệ thống qua đồ
thị.
5.9.2 Các kết quả đã đạt được
- Đã thiết kế và hoàn thiện mô hình phần cứng, mô hình hoạt động ổn
định.
- Bộ điều khiển PID trong vi điều khiển PIC16F877A đã ổn định được
tốc độ động cơ với: đáp ứng khá tốt, thời gian lên và xác lập đều nhanh, vọt lố
thấp và sai số xác lập hầu như rất nhỏ…, ngay cả khi động cơ mang tải hay ở
nhiều giá trị tốc độ khác nhau.
- Kết nối được máy tính với vi điều khiển theo chuẩn RS232C và đã
thiết kế hoàn chỉnh giao diện trên máy tính để điều khiển – giám sát hệ thống
(Sử dụng ngôn ngữ Visual Basic 6).
5.9.3 Một số điểm hạn chế
- Động cơ sử dụng có tốc độ tối đa là 4000 vòng/phút, bộ điều khiển
PID của đề tài điều khiển tốt động cơ trong khoảng tốc độ từ: 120 vòng/phút
đến 3800 vòng/phút. Lý do là sử dụng Encoder 100 xung/vòng nên không thể
điều khiển được động cơ ở các tốc độ dưới 120 vòng/phút.
- Bộ điều khiển không có khả năng tự động dò tìm thông số của đối tượng, vì
thế giá trị của các hệ số KP,KI,KD phụ thuộc vào người sử dụng nhập vào bộ
điều khiển do đó việc điều khiển đối tượng chưa thật sự chính xác.
SVTH: Lê Tiến Thanh Trang 86
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
- Chu kỳ lấy mẫu của bộ điều khiển lớn gây nên sai số cho bộ điều khiển,
vì giá trị của tín hiệu không thay đổi trong suốt chu kỳ lấy mẫu.
Vì vậy để có được bộ điều khiển số hoàn thiện hơn thì việc chọn một vi
điều khiển có tính năng mạnh hơn là cần thiết.
Xét về góc độ thực tiển, việc chế tạo bộ điều khiển số còn phải khắc phục
nhiều yếu tố và phải hiệu chỉnh cho phù hợp với đối tượng, sử dụng các
phương pháp điều khiển hiện đại như thích nghi, tuyến tính hóa để có được
chất lượng điều chỉnh tốt hơn. Khi xét đến sự thay đổi của mômen tải, mômen
quán tính động cơ.
SVTH: Lê Tiến Thanh Trang 87
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
KẾT LUẬN
Sau hơn ba tháng khảo sát, tìm hiểu, thiết kế và thi công đến nay đã
hoàn thành đề tài. Mô hình đã hoạt động ổn định, đáp ứng được yêu cầu đề ra,
giao diện giám sát dễ sử dụng và có tính thẩm mỹ cao.
Về cơ bản việc thực hiện đồ án đã đáp ứng được yêu cầu đề ra. Tuy nhiên
trong khoảng thời gian ngắn để thực hiện đề tài, cho nên việc thực hiện đề tài
vẫn còn gặp nhiều thiếu sót, em mong được sự đóng góp ý kiến của Thầy Cô
và các bạn.
Hướng phát triển đề tài:
- Thiết kế các khối mạch động lực có công suất lớn hơn để có thể điều
khiển tốc độ các động cơ DC công suất cao dùng trong công nghiệp.
- Nghiên cứu và cải tiến bộ điều khiển PID trong đề tài thành bộ điều
khiển PID-Mờ hoặc PID-Mờ thích nghi để có chất lượng điều khiển tốt hơn.
- Ngoài việc ổn định tốc độ động cơ, có thể đồng bộ tốc độ động cơ
hoặc có thể kết hợp thêm điều khiển moment đê có thể sử dụng trong các băng
chuyền cần tốc độ quay thay đổi theo đường kính cuộn. Ví dụ như: dây chuyền
cuốn xả giấy trong công nghiệp…
- Có thể xây dựng mạng CAN để quản lý xưởng, nhà máy và thu thập
dữ liệu.
SVTH: Lê Tiến Thanh Trang 88
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
TÀI LIỆU THAM KHẢO
[1]Phạm Công Ngô(2001) Lý thuyết điều khiển tự động . Nhà xuất bản
Khoa học và kỹ thuật.
[2]Bùi Quốc Khánh(2006) Điều chỉnh tự động truyền động điện. Nhà
xuất bản Khoa học và kỹ thuật.
[3] Lê Văn Doanh (1999) Điều khiển số máy điện. Nhà xuất bản Khoa
học và kỹ thuật.
[4] Nguyễn Bính (2000) Điện tử công suất. Nhà xuất bản Khoa học và kỹ
thuật.
[5] Bùi Đình Tiếu (2004) Giáo trình Truyền động điện. Nhà xuất bản
giáo dục.
[6] Các tài liệu dạng file PDF gồm: Giáo trình, Data Sheet linh kiện,…
[7] Các wedside tham khảo:
www.dientuvietnam.net
www.diendandientu.vn
www.picvietnam.com
www.alldatasheet.com
SVTH: Lê Tiến Thanh Trang 89
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
Mục lục
Chương 1............................................................................................................1
TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC16F87xA.......................................1
1.1 Giới thiệu về vi điều khiển PIC................................................................1
1.2 Tổng quan vi điều khiển PIC16F87xA.....................................................2
1.2.1 Sơ đồ chân của PIC16F87xA...........................................................2
1.2.2 Các thông số về vi điều khiển PIC16F877A....................................2
1.3 Sơ đồ khối của vi điều khiển PIC16F877A..............................................4
1.3.1 Tổ chức bộ nhớ:................................................................................5
1.3.2 Các cổng xuất nhập...........................................................................9
1.3.3 Bộ đếm Timer0...............................................................................12
1.3.4 Bộ đếm Timer1...............................................................................13
1.3.5 Bộ đếm Timer2...............................................................................14
1.3.6 Bộ chuyển tín hiệu ADC................................................................15
1.3.7 Bộ so sánh Comparator..................................................................17
1.3.8 CCP.................................................................................................19
1.3.9 Giao tiếp nối tiếp............................................................................20
Chương 2.........................................................................................................28
ĐỘNG CƠ ĐIỆN MỘT CHIỀU VÀ CÁC PHƯƠNG PHÁP ĐIỀU
CHỈNH TỐC ĐỘ............................................................................................28
2.1 Đặc tính cơ tĩnh của động cơ điện một chiều ( Động cơ DC )..............28
2.2 Các phương pháp điều chỉnh tốc độ động cơ DC..................................32
2.2.1 Điều chỉnh từ thông kích từ của động cơ.....................................32
2.2.2 Điều chỉnh theo điện áp phần ứng................................................34
2.2.3 Điều chỉnh điện trở phụ trong mạch phần ứng.............................34
2.3 Phương pháp điều chế độ rộng xung......................................................35
2.4 Sơ đồ khối của động cơ điện một chiều kích từ độc lập.............................36
2.4.1 Sơ đồ khối của động cơ điện một chiều kích từ độc lập với kích từ
định mức..................................................................................................37
2.4.2 Thực nghiệm nhận dạng đối tượng điều khiển:.............................38
2.5 Giới thiệu về Encoder sử dụng trong đồ án...............................................38
SVTH: Lê Tiến Thanh Trang 90
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
CHƯƠNG 3.....................................................................................................42
LÝ THUYẾT ĐIỀU KHIỂN PID.................................................................42
3.1 Giới thiệu chung về PID.........................................................................42
3.1.1 Phương pháp tổng hợp bộ điều khiển PID kinh điển.....................44
3.1.2 Xác định thông số cho bộ điều khiển PID theo phương pháp thực
nghiệm (phương pháp thứ hai của Zeigler - Nichols).............................45
3.1.3 Thực tế về các bộ điều chỉnh PID..................................................45
3.2 Lý thuyết điều khiển PID.......................................................................46
3.2.1 Khâu điều chỉnh tỷ lệ P (Proportional Controller)........................46
3.2.2 Khâu điều chỉnh vi phân tỷ lệ PD (Proportional Derivative
Controller)................................................................................................46
3.2.3 Khâu điều chỉnh tích phân tỷ lệ PI (Proportional Integral
Controller)................................................................................................47
3.2.4 Khâu điều chỉnh vi tích phân tỷ lệ PID (Proportional Integral
Derivative Controller)..............................................................................47
Chương 4.........................................................................................................49
THIẾT KẾ VÀ THI CÔNG MÔ HÌNH PHẦN CỨNG.............................49
4.1 Cấu trúc phần cứng của mô hình............................................................49
4.2. Các khối chức năng trên mô hình..........................................................49
4.2.1 Mạch vi điều khiển trung tâm........................................................51
4.2.2 Mạch động lực................................................................................53
4.2.3 Khối nguồn 24VDC cho mạch động lực và 5VDC cho mạch điều
khiển.........................................................................................................54
Mạch nguồn 24V cung cấp cho động cơ:................................................55
4.2.4 Mạch LED hiển thị trạng thái và reset Vi điều khiển....................55
4.2.5 Mạch bàn phím điều khiển tại chỗ.................................................56
4.2.6 Mạch LCD hiển thị các thông số....................................................57
4.2.7 Mạch giao tiếp máy vi tính.............................................................58
4.2.8 Khối động cơ, Encoder và các tải..................................................59
Chương 5.........................................................................................................61
GIẢI THUẬT CHƯƠNG TRÌNH................................................................61
SVTH: Lê Tiến Thanh Trang 91
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
5.1 Thuật điều khiển PID.............................................................................61
5.1.1 Bộ điều khiển tỷ lệ P......................................................................61
5.1.2 Bộ điều khiển tích phân I................................................................61
5.1.3 Bộ điều khiển tỷ lệ tích phân PI.....................................................63
5.1.4 Bộ điều khiển tỷ lệ vi phân PD......................................................64
5.1.5 Bộ điều khiển tỷ lệ vi tích phân PID.............................................65
5.2 Đối tượng điều khiển..............................................................................65
5.3 Cách tính tốc độ động cơ trong đề tài.....................................................66
5.4 Thuật toán quét bàn phím.......................................................................66
5.5 Cách tính toán PWM duty......................................................................67
5.6 Lưu đồ thuật toán chương trình chính:...................................................70
5.7 Chương trình viết trên Vi điều khiển và trên Visual Basic....................72
5.7.1 Chương trình chính viết trên vi điều khiển PIC16F877A.............72
5.8 Kết nối giữa máy tính với vi điều khiển qua giao diện giám sát............85
5.9 Kết quả đạt được....................................................................................85
5.9.1 Một số hình ảnh về hoạt động của hệ thống...................................90
5.9.2 Các kết quả đã đạt được.................................................................86
5.9.3 Một số điểm hạn chế.......................................................................86
KẾT LUẬN.....................................................................................................88
Hướng phát triển đề tài:...........................................................................88
SVTH: Lê Tiến Thanh Trang 92
Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu
SVTH: Lê Tiến Thanh Trang 93