Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.55 MB, 79 trang )
2.3.2.Chức năng các chân của Pic 18F4431
a. Port A (RA0 – RA5) : chân 2 –> chân 7
-
chân chức I/O năng output ,input
- Đầu vào các kênh chuyển đổi ADC
- Có tất cả 6 chân, từ RA0 -> RA5. Trong đó RA2 và RA3 dùng để tiếp nhận
điện áp so sánh Vref+ và Vref-
- RA2 ,RA3,RA4 là chân đầu vào module feedback chuyên đọc ecoder tần số
cao
- RA4 còn là ngõ vào của xung clock cho timer0. RA5 có thể làm chân chọn
slave cho port serial đồng bộ
b.Port B (RB0 – RB7) : chân 33 –> chân 40
- Các chân đầu vào ,ra input output
- chân ra cuả các modul điều xung power pwm (RB0->PWM0,
RB1-
>PWM1, RB3->PWM3, RB4->PWM5
- RB7 và RB6 chân nạp chương trình trực tiếp PGC,PGD
c.Port C (RC0 – RC7) : chân 15,16,17,18 và chân 23,24,25,26
- Là port I/O có 8 chân input,output
- RC0 dùng làm đầu vào bộ dao động xung clock cho Timer1.
- RC1 và RC2 là 2 chân của bộ CCP1 và CCP2
- RC3 là chân ngắt ngoài INT0 và đầu vào xung clock cho bộ Timer 0
- RC4 chân ngắt ngoài INT1 và còn là chân SDI serial data in của modul
truyền thông SPI
- RC5 chân ngắt ngoài INT2, và chân SCK serial clock của module truyền
thông SPI
- RC6 và RC7 là chân TX và RX của modul truyền thông USART chuẩn
RS232 ,chân SDO serial data out module SPI
d.Port D (RD0 – RD7) : chân 19.20.21.22 và chân 27,28,29,30
- Là port I/O
- RD1 đầu vào xung clock ngoài của bộ timer 5
- RD2, RD3 là các chân SDA, SCL của truyền thong I2C
- RD5, RD6,RD7 là đầu ra của modul power Pwm4,pwm6,pwm7
e.Port E (RE0 – RE2) : chân 8 –> chân 10
- Là các chân I/O
- Đầu vào các kênh ADC AN6, AN7, AN8
f.Nguồn :
- VDD : chân 32
- VSS : chân 31
- AVDD : chân 11
- AVSS : chân 12
g.Dao đông ngoài :
- chân OSC1 : chân 13
+ chân OSC2 : chân 14
Hình 10: Mạch dao động
h.Chân RESET: chân 1
2.3.3 Bộ định thời trong PIC
Pic 18f4431 có 4 bộ định thời:
a. Timer0
Có các chức năng sau:
• Bộ timer/couter 8bit hoặc 16 bit
• Có thể đọc hoặc ghi được
• Nguồn xung clock có thể lấy từ bên trong hoặc bên ngoài
• Ngắt tràn từ ffh->00 với 8 bit và từ ffffh ->0000h với chế độ 16 bit
• Chọn cạnh cho xung clock ngoài
• Thanh ghi điều khiển T0CON
• Sơ đồ thanh ghi T0CON
Bảng 02: Thanh ghi T0CON
Bit 7 : TMR0ON bit điều khiển cho phép on/off
1= cho phép timer0 hoạt động
0 = không cho phép timer0 hoạt động
Bit6 T016BIT : chọn chế độ 16 bit timer0
1 = timer0 chế độ 8 bit timer/counter
0 = timer0 chế độ 16 bit timer/counter
Bit5 T0CS : timer0 bit chọn nguồn xung clock cho timer
1 = nguồn xung clock ngoài lấy từ pin T0CKI
0 = lấy từ dao động nội (CLK0)
Bit 4 T0SE : timer0 bit chọn cạnh xung clock ngoài
1 = cạnh xung HIGH_TO_LOW trên pin T0CKI
0 = cạnh xung LOW_TO_HIGH on pin T0CKI
Bit 3 PSA : bit cho phép chia tần trước của timer0
1 = cho phép chia tần trước
0 = cho phép chia tần trước và đầu vào clock của timer0 lấy từ đầu ra prescale
Bit 2 T0PS2:T0PS0: Timer0 chọn hệ số chia tần lock cho timer
111 = 1:256 Prescale value // chia trước 256
110 = 1:128 Prescale value // chia trước 128
101 = 1:64 Prescale value
100 = 1:32 Prescale value
011 = 1:16 Prescale value
010 = 1:8 Prescale value
001 = 1:4 Prescale value
000 = 1:2 Prescale value
b. Timer1
Có các chức năng sau :
• timer/counter 16 bit
• có thể đọc ghi và xóa được
• xung clock cho timer có thể chọn bên ngoài hay bên trong
• ngắt tràn từ ffffh ->0000h
• thanh ghi điều khiển T1CON
Sơ đồ thanh ghi điều khiển khiển T1CON
REGISTER 12-1:
R/W-0
RD16
bit 7
R-0
T1CON: TIMER1 CONTROL REGISTER
R/W-0
R/W-0
R/W-0
R/W-0
T1RUN T1CKPS T1CKPS T1OSCE T1SYN
1
0
N
Thanh ghi T1CON
bit 7
RD16: 16-Bit định chế độ hoạt động 8 hay16 bit
1 = cho phép timer 1 hoạt động ở chế độ 16 bit
0 = cho phép timer 1 hoạt động ở chế độ 8 bit
bit 6
T1RUN: Timer1 Clock
1 = nguồn clock được lấy từ dao động timer1
0 = nguồn clock lấy từ nguồn khác
C
R/W-0
R/W-0
TMR1C
S
TMR1O
N
bit 0
bit 5-4
T1CKPS1:T1CKPS0: lựa chon tỉ lệ chia clock đầu vào cho timer 1
11 = 1:8 Prescale value
// chia trước 8 lần
10 = 1:4 Prescale value
01 = 1:2 Prescale value
00 = 1:1 Prescale value
bit 3
T1OSCEN: bit cho phép
dao động timer1
1 = cho phép bộ dao động Timer1
0 = khóa bộ dao động timer1
bit 2
T1SYNC: bit chọn đồng bộ ngoài xung clock của timer1
When TMR1CS = 1 (dùng dao động nội):
1 = không đồng bộ với clock ngoài ở chân input
0 = đồng bộ với clock ngoài
Sử dụng khi TMR1CS = 0 (clock nội):
Bit 1
TMR1CS : chọn nguồn xung clockcho timer 1
1 = nguồn xung clock ngoài từ chân RC0/T1OSO/T13CKI
0 = clock nội lấy từ thạch anh (FOSC/4)
c. Timer2
•
hoạt động ở chế độ 8 bit
•
Có thể đọc hoặc ghi
•
Co thể lập trình chia tần trước prescaler (1:1, 1:4, 1:16) postscaler (1:1 to 1:16)
•
Thanh ghi điều khiển T2CON
Sơ đồ thanh ghi điều khiển T2CON
REGISTER 13-1:
T2CON: TIMER2 CONTROL REGISTER
U-0
R/W-0
R/W-0
R/W-0
R/W-0
—
TOUTP
TOUTP
TOUTP
S3
S2
S1
R/W-0
R/W-0
R/W-0
TOUTP
TMR2O T2CKP
T2CKP
S0
N
S1
bit 7
Legend:
R = Readable
-n = Value at
bit
W = Writable
‘1’
bit = Bit is set
U = Unimplemented bit, read as ‘0’
‘0’ = Bit is cleared x = Bit is unknown
POR
Thanh ghi T2CON
bit 7
không sử dụng để dự trữ
bit 6-3
TOUTPS3:TOUTPS0: lựa chọn số lần timer tràn xẩy ra ngắt
0000 = 1:1 Postscale // tràn 1 lần
0001 = 1:2 Postscale // tràn 2 lần
……
1111 = 1:16 Postscale
Bit 2
TMR2ON : cho phép timer2 hoạt động
1 = Timer2 is on
0 = Timer2 is off
S0
bit 0
bit 1-0
T2CKPS1:T2CKPS0: lựa chọn tỉ lệ chia clock đầu vào timer2
00 = Prescaler is 1
// chia trước 1
01 = Prescaler is 4
// cứ 4 clock thì co 1 clock được đưa vào timer2
1x = Prescaler is 16
d. Timer 5
Có các chức năng sau:
• Hoạt động chế độ timer/counter 16 bit
• Bộ đếm có chế độ đồng bộ và không đồng bộ
• Cho phép chọn tỉ lệ chia tần
• Thanh nghi điều khiển T5CON
REGISTER 14-1:
R/W-0
T5CON: TIMER5 CONTROL REGISTER
R/W-0
R/W-0
R/W-0
R/W-0
T5SEN RESEN
T5MO
T5PS1
T5PS0 T5SYNC(
bit 7
(1)
D
2)
Thanh ghi T5CON
bit 7
T5SEN: Timer5 chế độ ngủ
1 = cho phép timer5 ở chế độ sleep
0 = không cho phép Timer5 Sleep
Bit 6
RESEN: reset bit 1 bằng sự kiện
1 = không cho phép sự kiện reset bit 1
0 = cho phép reset đặc biệt với bit 1
bit 5
R/W-0
T5MOD: bit chọn chế độ hoạt động
R/W-0
R/W-0
TMR5
TMR5O
CS
N
bit 0
1 = cho phép chế độ hoạt động không liên tục
0 = cho phép chế độ hoạt động liên tục
bit 4-3
T5PS1:T5PS0: bit chọn chia tần trước cho timer5
11 = 1:8
10 = 1:4
01 = 1:2
00 = 1:1
Bit 2
T5SYNC: chọn xung clock đồng bộ ngoài cho timer 5
Khi TMR5CS = 1:
1 = không đồng bộ với nguồn xung ngoài vào
0 = đồng bộ với nguồn xung ngoài vào
Khi TMR5CS = 0:
Timer 5 sử dụng clock từ bộ dao động thạch anh
bit 1
TMR5CS: lựa chọn nguồn xung clock cho timer 5
1 = xung đếm timer ngoài ở chân T5CKI
0 = xung clock nội từ thạch anh (TCY)
bit 0
TMR5ON: bit cho phép timer 5 hoạt động
1 = cho phép timer 5 hoạt động
0 = không cho phép timer 5 hoạt động
4.3.4 Ngắt (interrupts)
Pic18F4431 có nhiều nguồn ngắt khác nhau .có mức độ ưu tiên khác nhau ,vector
ngắt có ưu tiên cao nhất ở địa chỉ 000008h , vector ngắt có địa chỉ thấp nhất ở địa chỉ
0000018h . mổi khi có sự kiện ngắt thì vi điều khiển sẽ dừng chương trình chính để thực
hiên chương trinh ngắt.
Có 10 thanh ghi điều khiển ngắt: RCON, INTCON,INTCON2,INTCON3,
PIR1,PIR2,PIR3, PIE1,PIE2,PIE3,IPR1,IPR2,IPR3
mỗi nguồn ngắt có 3 bít điều khiển ngắt :
• Bit cờ chỉ sự kiện ngắt suất hiện
• Bit cho phép thực thi chương trình rẽ nhánh đến địa chỉ vector ngắt khi cờ ngắt đã
bật
• Bit ưu tiên để chọn mức ưu tiên cao hay thấp
Sơ đồ thanh ghi INTCON
REGISTER 9-1:
R/W-0
INTCON: INTERRUPT CONTROL REGISTER
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-x
GIE/GIE PEIE/GI
TMR0I
INT0IE
RBIE
TMR0I
INT0IF
RBIF(1
H
bit 7
EL
E
F
)
bit 0
Thanh ghi INTCON
2.4. Các modul cơ bản của PIC18F4431
2.4.1 Power control PWM modul
- Power control PWM modul đơn giản là tạo ra nhiều xung động bộ có độ rộng xung thay
đổi được( PWM: pulse Width Modulation). Các ngõ ra của PWM ứng dụng trong điều
khiển động cơ và các ứng dụng điều khiển công suất. Modul PWM này hỗ trợ điều khiển
các ứng dụng sau:
+ Động cơ KĐB 1 pha và 3 pha
+ Swithched Reluctance Motor
+ Động cơ DC không chổi than
+ UPS ( Uninterruptible Power Suppliers)
+ Mutiple DC Brush motor
• Các thông số cơ bản của PWM
+ Có 8 ngõ I/O PWM với 4 duty cycle khác nhau
+ Độ phân giải 14 bit dựa trên periode
+ Thời gian dead time có thể lập trình ( ứng dụng trong trường hợp PWM
đối nghịch -> chống trùng dẫn)
+ Ngắt hỗ trợ update không đối ( asymmertrical update) xứng trong chế độ
canh giữa
Trong modul PWM có 4 bộ tạo duty cycle riêng biệt, chúng được đánh số từ 0 ->3,
Modul này có 8 ngõ ra, được đánh số từ 0->7. Trong chế độ đối nghịch các pin chẵn –pin
lẻ là 1 cặp. VD: PWM0 đối nghịch với PWM1 ; PWM2 đối nghịch với PWM3….
Bộ tạo dead time sẽ chèn 1 khoản “off”giữa lúc xung PWM của xung pin này đang
cạnh xuống và xung PWM của chân đối nghịch đang ở cạnh lên ( trong 1 cặp chân đối
nghịch). Điều này ngăn chặn trùng dẫn -> các khoá công suất được bảo vệ.
3. Một số giải thuật phương án lập trình.
Với đề thi năm nay chúng ta có thể sử dụng một số giải thuật sau:
+ Giải thuật dò đường:
- Bám vạch
- Đếm số vạch ngang
- Tăng tốc trên những đoạn đường thẳng để Rôbôt đạt tốc độ cao nhất
- ….
+ Ngắt ngoài sử dụng cho encoder
Đối với mỗi con robot cụ thể chúng ta sẽ áp dụng giải thuật một cách linh hoạt. Điều này
sẽ được thể hiện rõ trong từng phần lập trình cho mỗi