131
Đồ á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). SVTH: Lê Tiến Thanh Trang 1

ĐA Tôt Nghiệp-Lê Thanh

Embed Size (px)

Citation preview

Page 1: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 2: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 3: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 4: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 5: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 6: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 7: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 8: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 9: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 10: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 11: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 12: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 13: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 14: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 15: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 16: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 17: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 18: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 19: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 20: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 21: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 22: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 23: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 24: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 25: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 26: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 27: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 28: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 29: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 30: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 31: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 32: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 33: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 34: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 35: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 36: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 37: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 38: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 39: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 40: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 41: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 42: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 43: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 44: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 45: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

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

Page 46: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 47: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 48: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 49: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 50: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 51: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 52: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 53: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 54: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 55: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 56: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 57: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 58: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 59: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 60: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 61: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 62: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 63: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 64: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 65: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 66: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 67: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 68: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 69: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 70: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 71: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 72: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 73: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 74: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 75: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 76: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 77: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 78: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 79: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 80: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 81: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 82: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 83: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 84: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 85: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 86: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 87: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 88: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 89: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 90: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 91: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 92: ĐA Tôt Nghiệp-Lê Thanh

Đồ á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

Page 93: ĐA Tôt Nghiệp-Lê Thanh

Đồ án tốt nghiệp GVHD: ThS. Trần Thái Anh Âu

SVTH: Lê Tiến Thanh Trang 93