Chương 1: Tổng quan EBOOKBKMT.COM Trang 5 -PortC: PortC( RCO -ỉ- RC7) có số chân từ chân số 15 đến chân số 18 và chân số 23 đến chân số 26. -PortC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ Timerl, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART PortD: PortD( RDO -T- RD7) có số chân từ chân số 33 đến chân số 40.
-PortD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD. -PortD còn là cồng xuấl dừ liệu cùa chuẩn giao tiếp PSP (Parallel Slave Fort). -PortE: PortE( REO -8- RE2) CÓ so chân lừ chân so 19 đến chân so 22 và chân số 27 đến chân 30. -PortE (RPE) gồm 3 chân I/O.
Thanh ghi điều khiển xuất nhập tương ứng là TRISE. Các chân cùa PORTE có ngõ vào analog. Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP Chân 11,12,31,32 là các chân cung cấp nguồn cho vi điều khiển. -Chân 13,14 là chân được đấu nối thạch anh với bộ dao động xung clock bên ngoài cung cấp xung clock cho chip hoạt động.
-Chân 1 là chân RET: Là tín hiệu cho phép thiết lập lại trạng thái ban đâu cho hệ thống, và là tín hiệu nhập là mức tích cục cao.3 Sơ dồ khối Hình 2.3 Sơ đồ khối vi điều khiển 16F887 Chương 1: Tổng quan EBOOKBKMT.4 Tổ chức các bộ nhớ. Cấu trúc cùa bộ nhớ vi điều khiển PIC16F887 bao gồm 2 bộ nhớ: + Bộ nhớ chương trình (Programmemory). + Bộ nhớ dữ liệu (Data memory) a. Bộ nhớ chương trình (Programmemory).
Bộ nhớ chương trình cùa vi điều khiển PIC16F887 là bộ nhớ Flash dung lượng bộ nhớ 8K được phân chia thành nhiều lrang(lừ 0-T- 3). Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024=8192 câu lệnh. Để mà hóa được địa chỉ của 8K bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13bit. Khi vi điều khiển được Reset, bộ đếm chương trình chi đến địa chì 0004h(Interrupt vector).
Bộ nhớ chương Irình không bao gôm bộ nhớ slach và không được địa chi hóa bởi bộ đếm chương trình. Bàng bộ nhớ chương trình và các ngăn xếp Hình 2.3 Bộ nhớ chương trình 16F8887 b. Bộ nhớ dữ liệu (Data memory). Bộ nhớ dữ liệu cùa PIC là bộ nhớ EEPROM được chia thành nhiều bank.
Đối với PIC16F887 chia thành 4 bank. Mỗi bank có dung lượng chứa 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Spencial Function Register) nam ở các vùng địa chi chấp và các thanh ghi mục đích chung GPR(General Purpose Register) nằm ờ các vùng địa chi còn lại trong back. Các thanh ghi SFG thường xuyên được sử dụng sè được đặt ờ (ất cà các bank cùa bộ nhớ dừ liệu giúp truy suất và làm giàm bớt lệnh cúa chương trình. Chương 1: Tổng quan EBOOKBKMT.COM Trang 7 -Bộ nhớ dữ liệu cùa PIC 16F887: Hình 2.4: Tổ chức file thanh ghi c.
Các cống xuất nhập của PIC( I/O) PIC16F887 tắl cà có 35 chân I/O mục đích thông thường (GPIO: General Purpose Input Ouput) có thể được sù dụng. Tùy theo những thiết bi ngoại vi được chọn mà một vài chân không thể sú dụng ờ chức năng GPỈO. Thông thường, khi một thiêt bị ngoai vi được chọn, những chân liên quan cùa thiết bị ngoại vi không được sù dụng ờ chức năng GPI0.35 chân được chia thành 5 port: + PortA chia làm 8 chân. + PortB chia làm 8 chân.
+ PortC chia làm 8 chân. + PortD chia làm 8 chân. + PortE chia làm 3 chân. Chương 1: Tổng quan EBOOKBKMT.COM Trang 8 Mỗi port được điều khiển bời 2 thanh ghi 8-bit, thanh ghi Port và thanh ghi Tris.
Thanh ghi Tris được sử dụng đê điều khiến port nhập hay xuất. Mỗi bit cùa Tris sẽ điều khiển mỗi chân cùa port đó, nếu giá trị bit là 1 thỉ chân liên quan là nhập, ngược lại nếu giá trị bit là 0 thì chân liên quan là xuất. Thanh ghi Port được suvve\r dụng đê chứa các giá trị cùa porl liên quan. Mỗi bit của ỉhanh ghi Port chứa giá trị của chân liên quan.
Cấu trúc cùa GPIO; Hình 2.5: Cấu trúc của GPIO d. Các bộ định thời của chip để tính toán thời gian trong mạch Bộ vi điều khiển PIC16F887 có 3 bộ định thời Timer đó là TmerO, Timer 1, Timer2 Bộ Timer0 Đây là một trong 3 bộ đếm hoặc bộ định thời cùa vi điều khiên PIC16F887. TimerO là bộ đếm 8 bit được kết nối với bộ chia tần 8bit. cấu trúc cùa TimeO cho phép ía lựa chọn xung clock tác động và cạnh tích cực cùa xung clock.
Ngắt TimerO sẽ xuất hiện khi TimerO bị tràn. Bit TMROIE (INTCON<5>) là bit điều khiên cùa TimerO. TMROIE=l cho phép ngai TimerO tác động, Chương 1: Tổng quan EBOOKBKMT.COM Trang 9 Hình 2.6 Sơ đồ khối của Timer0 Bộ Time1 Bộ Timer1 là bộ định thời 16 bit, giá trị cùa Timerl sê được lưu trong thanh ghi (TMR1H:TMR1L). Cờ ngắt cùa Timrerl là bit TMR1IF.
Bit điều khiển cùa Timerl là TMR1IE Tương lự như TimerO, Timerl cung có 2 chế độ hoạt động: chế độ định thời và chế độ xung kích là xung clock cùa osciled ma trậnator ( tần số Timer bằng 4 tần số cùa osciled ma trặnator 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 RCO/TIOSO/TICKI (cạnh tác động là cạnh bên). Việc lựa chọn chế độ hoại động của Timer được điều khiển bời bit TiMRlCS. Chương 1: Tổng quan EBOOKBKMT.COM Trang 10 Hình 2.7 Sơ đồ khối của Timerl Bộ Timer2 Bộ Timer2 là bộ định Ihời 8 bit và được hỗ trợ hai bộ chia tần prescaler và postscaler. Thanh ghi chứa giá tị đếm của Timer2 là TMR2.
Bit cho phép ngắt Timer2 lác động là TMR20N. Cờ ngắt cùa Timer2 là bit TMR2IF. Xung ngõ vào được đưa qua bộ chia tần số prescaler 4 bil(với các li số chia tần 1:1, 1:4 hoặc 1:6) và được điều khiển bời các bit T2CKPS1 :T2CKPS0 Hình 2.8 Sơ đồ khối của Timer2 Bộ biến đồi ADC ADC (Analog to Digital Converter) là bộ chuyên đôi tín hiệu giữa hai dạng tương lự và SO.PIC16F887 có 14 ngõ vào analog (RA5:RA0, RE2:RE0và RB5:RB0). Hiệu điện thế chuẩn VRKF có thể được chọn là vdd, hay hiệu điện thế chuần được xác lập trên 2 chân RA2 và RA3.
Ket quá chuyển đôi từ tin hiệu tương lự sang tín hiệu số là lObit lương ứng và được lưu Irong hai thanh ghi ADRESH:ADRESL. Khi không sir dụng bộ chuyển đồi ADC các thanh ghi này có (hê sử dụng các (hanh ghi thông llurờng khác. Khi quá trình chuyển đôi hoàn tắt, kếl quà sè được lưu vào 2 thanh ghi ADRESH:ADRESL. Chương 1: Tổng quan EBOOKBKMT.COM Trang 11 Hình 2.9 Sơ đồ khối bộ chuyên đôi Analog 2.5 Chức năng điều chế độ rộng xung PWM để sử dụng cho việc điều khiển động cơ a) Nguyên lý điều chế độ rộng xung PWM Nguyên lý điều chế độ rộng xung là mạch tạo ra xung vuông có chu kỳ là hằng số nhưng hệ số công tác (còn gọi là hệ số chu kỳ - duty cycle) có thể thay đổi được.
Sự thay đổi của hệ số chu kỳ làm thay đổi điện áp trung bình hoặc dòng điện trung bình. Sự thay đổi điện áp hoặc dòng trung bình dùng để điều khiển các tải như động cơ DC thì làm thay đổi tốc độ động cơ, điều khiển bóng đèn thì làm thay đổi cường độ sáng của bóng đèn, … Các đạng sóng điều chế độ rộng xung với các hệ số chu kỳ khác nhau như hình 2. Chương 1: Tổng quan EBOOKBKMT.COM Trang 12 Hình 2.10: Dạng sóng điều chế độ rộng xung. -Cho chu kỳ 10ms, ở cấp tốc độ 0 thì tín hiệu bằng 0.
Điện áp hay dòng trung bình sẽ bằng 0, nếu tín hiệu này điều khiển đèn led thì đèn led sẽ tắt. -Ở cấp tốc độ 1 thì tín hiệu điều khiển ở mức 1 chỉ có 1ms, ở mức 0 là 9ms. Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*1)/10 = 1mA. Led sáng mờ với dòng là 1mA.
-Ở cấp tốc độ 2 thì tín hiệu điều khiển ở mức 1 chỉ có 2ms, ở mức 0 là 8ms. Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*2)/10 = 2mA. Led sáng hơn với dòng là 2mA. -Ở cấp tốc độ 5 thì tín hiệu điều khiển ở mức 1 chỉ có 5ms, ở mức 0 là 5ms.
Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*5)/10 = 5mA. -Ở cấp tốc độ 10 thì tín hiệu điều khiển ở mức 1 là 10ms, ở mức 0 là 0ms. Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*10)/10 = 10mA. Led sáng cực đại với dòng là 10mA.
-Khi thay đổi hệ số chu kỳ thì chỉ thay đổi thời gian xung ở mức 1, còn chu kỳ thì không đổi. b) Cấu trúc khối điều chế độ rộng xung PWM PWM của PIC16F887 có sơ đồ khối như hình 2.11: Chương 1: Tổng quan EBOOKBKMT.COM Trang 13 Hình 2.11: Sơ đồ khối của PWM PIC 16F887. Khối PWM gồm có 2 mạch so sánh: mạch so sánh 2 dữ liệu 8 bit nằm bên dưới và mạch so sánh 2 dữ liệu 10 bit nằm bên trên. Mạch so sánh 8 bit sẽ so sánh giá trị đếm của Timer2 với giá trị của thanh ghi PR2 (Period Register), giá trị trong Timer2 tăng từ giá trị đặt trước cho đến khi bằng giá trị của PR2 thì mạch so sánh sẽ kích flip flop RS làm ngõ ra RC2/CCP1 lên mức 1.
Đồng thời nạp giá trị 10 bit từ thanh ghi CCPR1L sang thanh ghi CCPR1H. Timer2 bị reset và bắt đầu đếm lại cho đến khi giá trị của Timer2 bằng giá trị của CCPR2H thì mạch so sánh sẽ reset flip flop RS làm ngõ ra RC2/CCP1 về mức 0. Quá trình này lặp lại lien tục để tạo ra dạng sóng PWM lien tục. Dạng sóng điều chế PWM như hình 2.12: Chương 1: Tổng quan EBOOKBKMT.COM Trang 15 Hình 2.12: Dạng sóng PWM.
-Chu kỳ không thay đổi, muốn thay đổi thời gian xung ở mức 1 thì ta thay đổi hệ số chu kỳ (Duty Cycle). Khi hệ số chu kỳ thay đổi thì điện áp hay dòng trung bình thay đổi. -Hệ số chu kỳ càng lớn thì dòng trung bình càng lớn, nếu điều khiển động cơ sẽ làm thay đổi tốc độ. c) Tính chu kỳ xung PWM -Chu kỳ PWM của PIC16F887 được tính theo công thức: PERIODPWM = [(PR2) +1]* 4*TOSC * PVTMR2 (2.