178
GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA PHẦN I GIỚI THIỆU TỔNG QUAN 1.1. Giới thiệu về Robot 1.1.1. Giới thiệu Robot là một thuật ngữ được sinh ra từ sân khấu chứ không phải từ sản xuất. Nó chỉ người lao công trong hệ ngôn ngữ X-la-vơ. Robot là từ viết tắt của từ Robota có nghĩa là lao động, công việc. Từ khoảng năm 1920, nhà viết khịch người Séc Karl Capek đã viết vở kich mang tên Rossum’s Universal Robots, trong đó từ Robot là tên của một loại máy tự động đã tiêu diệt ông chủ và chiếm lĩnh thế giới. Cho nên thời điểm đó được xem là mốc ra đười của thuật ngữ Robot, mà về sau trở thành phổ biến trên khấp thế giới. Hình 1.1 là cảnh trong vở kịch Rossum’s Universal Robots của Séc Karl Capek. SVTH: Ngô Kế Sang Trang 1

Bao Cao Robot

Embed Size (px)

Citation preview

Page 1: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

PHẦN I GIỚI THIỆU TỔNG QUAN

1.1. Giới thiệu về Robot1.1.1. Giới thiệu

Robot là một thuật ngữ được sinh ra từ sân khấu chứ không phải từ sản xuất. Nó chỉ người lao công trong hệ ngôn ngữ X-la-vơ. Robot là từ viết tắt của từ Robota có nghĩa là lao động, công việc. Từ khoảng năm 1920, nhà viết khịch người Séc Karl Capek đã viết vở kich mang tên Rossum’s Universal Robots, trong đó từ Robot là tên của một loại máy tự động đã tiêu diệt ông chủ và chiếm lĩnh thế giới. Cho nên thời điểm đó được xem là mốc ra đười của thuật ngữ Robot, mà về sau trở thành phổ biến trên khấp thế giới. Hình 1.1 là cảnh trong vở kịch Rossum’s Universal Robots của Séc Karl Capek.

Hình 1.1 Cảnh trong vở kich Rossum’s Universal Robots

SVTH: Ngô Kế Sang Trang 1

Page 2: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Năm 1926, thuật ngữ Robot lần đầu tiên lên phim ảnh tại Đức, bộ phim mang tên Metropolis. Năm 1939, Robot đi bộ Elutoo và chú chó Sporko đã được triển lãm tại một hội chợ tại New York, Mỹ, thu hút được nhiều sự quan tâm của công chúng. Cụm từ “Robotics” có liên quan đến nghiên cứu và ứng dụng Robot. Được được sử dụng lần đầu tiên bởi Isaac Asimov (1920 – 1992). Cụm từ “Robotics” do Isaac Asimov đưa ra trong tác phẩm “Liar!” năm 1941, Runaround, 1942. Asimov cũng đề xuất ra ba điều luật về robot “Laws of Robotics” và sau đó đã bổ xung thêm luật Zero “Zeroth law”.

Năm 1948, trước nhu cầu tự động hóa ngày một lớn của các dây truyền sản xuất và lấp ráp công nghiệp, một số loại tay máy đã được nghiên cứu và chế tạo thử nghiệm tại các phòng thí nghiệm ở Mỹ, Châu Âu và một số nước khác. Các kỷ thuật điều khiển động cơ điện, truyền thông, điều khiển từ xa, công nghệ máy tính, các bộ vi điều khiển. Cùng với sự phát triển nhanh trống của cơ khí và điện tử. Vào năm 1952 chiếc máy CNC đầu tiên trên thế giới đã ra đời tại viện công nghệ massachusetts, Mỹ, theo nguyên tắt điều khiển số hoạt động theo chương trình máy tính. Đây là cơ sở cho sự phát triển các bộ điều khiển robot hiện đại ngày nay.

Cho đến nay đã có một số định nghĩa về robot . McKerrow (1986) định nghĩa robot là một loại máy móc cơ khí có thể lập trình để thực hiện một số công việc nào đó. Như vậy theo McKerrow thì robot là một đối trượng bao gồm tất cả các loại máy móc bao gồm cả máy công cụ NC, CNC, cá thiết bị đo lường kiểm tra lấy mẫu,...

Theo schlussel (1985) lại định nghĩa Robot là một tay máy đa chức năng có thể lập trình và tái lập trình.

Như vậy từ các định nghĩa trên thì Robot là một đối tượng máy móc có thể lập trình điều khiển được,có thể tái lập trình, có thể điều khiển tự động hoặc điều khiển bằng tay...

1.1.2 Phân loại Robot1.1.2.1 Theo môi trường

- Robot di chuyển trên mặt đất: Robot có thể di chuyển bằng bánh xe, bánh xích, chân,… mà điển hình nhất

là Robot di chuyển bằng bánh xe đang được nghiên cứu và ứng dụng rất nhiều trong các ngành thám hiểm và giải trí

+ Robot loại di động nhỏ tích hợp 2 camera cảm biến hồng ngoại ở trước, sau, hai bên, truyền dữ liệu qua sóng vô tuyến.

SVTH: Ngô Kế Sang Trang 2

Page 3: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.2 Robot F.A.A.K. di động nhỏ loại bánh xe+ Robot 10009 sử dụng 4 bánh xe Mecanum như trên hình 1.3 loại bánh xe

nay có thể di chuyển theo nhiều hướng khác nhau. Sử dụng 4 động cơ DC12V có encoder ở đuôi, sử dụng vi điểu khiển Atmega328. Tích hợp Bluetooth và đọc thẻ SD.

Hình 1.3 Robot 10009 sử dụng bánh Mecanum+ Robot di động 6 bánh xe kiểu mới ADP. Loại Robot này dùng để vận

chuyển quân trang quân khí đến các vị trí chiến đấu, có thể đi lại trong những địa

SVTH: Ngô Kế Sang Trang 3

Page 4: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

hình phức tạp, leo lên các độ dốc rất cao, có thể đến 600 và quay tròn tại chỗ theo mọi hướng. ADP có thể chuyển động với tốc độ tới 80 km/giờ. Những thiết bị cảm biến (sensor) bố trí trên xe có thể phát hiện các chướng ngại vật dù nhỏ. ADP nặng 9,6 tấn, dài 4,6 mét. Mỗi bánh xe của robot được trang bị các động cơ điện, do ăcquy ion Liti cung cấp.

Hình 1.4 Robot di động kiểu xe tăng

- Robot di chuyển dưới nước:+ Robot AQUA2 có 6 tay chèo giúp di chuyển dẽ dàng trong môi trường

nước phía trước có Camera và có thể di chuyển trên mặt đất.

Hình 1.5 Robot AQUA2

SVTH: Ngô Kế Sang Trang 4

Page 5: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

+ Robot di chuyển dưới nước (AUV): Một ví dụ điển hình là Robot di chuyển dưới nước sử dụng năng lượng mặt trời (SAUV) do giáo sư Arthur C. Sanderson nghiên cứu thiết kế. Một SAUV nặng 167kg, có thể di chuyển với vận tốc 3,2 km/giờ và được thiết kế có thể lặn xuống độ sâu 500m. Các thiết bị này có thể sẽ được lực lượng hải quân Mỹ ứng dụng vào việc giám sát vùng bờ biển.

Hình 1.6 SAUV sử dụng năng lượng mặt trời để di chuyển trên mặt nước

- Robot di chuyển trên không:Robot di chuyển trên không: như các máy bay không người lái (UAVs).

NASA Helios là một dạng robot sử dụng năng lượng mặt trời để bay ở độ cao lớn và trong thời gian dài.

Hình 1.7 Robot NASA Helios sử dụng năng lượng mặt trời

Một số robot bay Khác

SVTH: Ngô Kế Sang Trang 5

Page 6: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.8 Máy bay giám sát không người lái

Hình 1.9 Micro Robot dạng bay

SVTH: Ngô Kế Sang Trang 6

Page 7: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.1.2.2. Robot còn có thể phân loại dựa trên cách nó di chuyển: Bằng chân, bánh xe, bằng bánh xích… Một ví dụ về Mobile Robot di

chuyển bằng chân là người máy ASIMO của HonDa có thể đi lại, nhảy múa, leo cầu thang và biểu lộ các cảm xúc như khóc, tức giận, vui mừng…

Hình 1.10 Robot ASIMO của HONDA

- Robot bánh xe: Bánh xe duy chuyển linh hoạt theo nhiều hướng khác nhau nhờ vào cấu tạo

bánh Omni gồm nhiều bánh nhỏ đặt song song với nghiên 1 gốc 45º so với mặt ngoài bánh như robot của công ty Robot KUKA trên có tay gấp.

Hình 1.11 Robot KUKA

SVTH: Ngô Kế Sang Trang 7

Page 8: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

- Robot duy chuyển bằng chân

Hình 1.12 Robot kiểu 4 chân dùng vận chuyển đồ trong quan đội Mỹ1.1.2.3. Phân loại theo ứng dụng

- Robot thám hiểm: Nasa thường phóng những robot thám hiểm đến những nơi mà con

người không thể tới được. khi phóng một robot thay cho con người thì rẽ hơn rất nhiều con người đồi hỏi một hệ thống khổng lồ để duy trì các chức năng: không khí để thở,thực phẩm, nhiệt lượng để sống sót trong suốt cuộc hành trình và trở về trái đất an toàn.

Tàu thăm dò Wiking được gửi tới sao Hỏa để tìm kiếm sự sống. Nasa có chương trình điều khiển tiến bộ nhất thế giới hoạt động dưới sự lảnh đạo của văn phòng phát triển không gian và kỹ thuật (OSAT).

SVTH: Ngô Kế Sang Trang 8

Page 9: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.13 Robot thăm dò Sojourner- Robot công nhiệp

+ Tay máy dùng trong dây truyền sản xuất xe ôtô

Hình 1.14 Robot hàn khung xe

SVTH: Ngô Kế Sang Trang 9

Page 10: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

+ Cánh tay Robot công nghiệp

Hình 1.15 Robot KUKA tải trọng đến 1000kg

Hình 1.16 Robot KUKA KR5 HW tải trọng 5kg KR16 ARC HW tải trọng 15kg

SVTH: Ngô Kế Sang Trang 10

Page 11: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

- Trong thiết kế và tạo mẫu: Nó là những robot được sử dụng rộng rãi hơn. Nó không chỉ làm các

công việc lập đi lập lại mà có thể kết hợp với những máy tính hổ trợ CAD-CAM để tự động trong quá trình sản xuất, cụ thể là các máy CNC giúp chết tạo các chi tiết máy phức tạp được thết kế trên CAD.

Hình 1.17 Máy CNC dùng trong công nghiệp- Robot thực hiện các nhiệm vụ nguy hiểm, độc hại:

Robot có thể thay thế con người trong một số công việc nguy hiểm. Ví dụ như robot gỡ bom những robot này nhỏ và vỏ ngoài bọc thép.

SVTH: Ngô Kế Sang Trang 11

Page 12: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.18 Robot gỡ bom- Robot trong sinh hoạt và giải trí:

Như cuộc thi Robot đá bóng, robot có thể hát nhảy múa.

Hình 1.19 Robot đá bóng tại cuộc thi Robocup 2011

SVTH: Ngô Kế Sang Trang 12

Page 13: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.2. Cấu trúc phần cứng của dòng PIC18F44311.2.1. Những đặc điểm nổi bậc PIC18F4431: �

- Module PWM 14 bit+ Có đến 4 kênh ( mỗi kênh gồm 1 cặp xung đối nghịch) + Thời gian dead time linh hoạt + update từng duty cycle => ngõ ra PWM đáp ứng nhanh

- Motion Feedback Module: Có 3 kênh capture độc lập: + Các chế độ hoạt động linh hoạt cho việc đo đạc độ rộng xung + Module hỗ trợ Hall Sensor + Special event trigger cho các module khác

- QEI (Quadrature Encorder interface:)+ 2 pha vào và 1 ngõ vào index từ encorder + Hỗ trợ đo đạc vận tốc

- High speed, 200Ksps 10-bit A/D Converter: + Có 9 kênh A/D + 2 kênh lấy mẫu tức thời + Lấy mẫu liên tục:1 ; 2 hay 4 kênh được lựa chọn + …….

- Cấu trúc bộ dao động linh hoạt (Flexible Oscillator Structure) + 4 chế độ thạch anh ( hỗ trợ đến 40 MHz) + 2 nguồn xung lock ngoài lên đến 40 MHz + Chế độ thạch anh nội :+ Có 8 tần số người dùng có thể lựa chọn : từ 31Khz -> 8 MHz + OSCTUNE có thể bù cho sự lệch tần số + …..

- Thiết bị ngoại vi nổi bật: (Peripheral Highlights): + IO chịu dòng cao : sink/source ( 25mA/25mA) + 3 nguồn ngắt ngoài + 2 module Capture / Compare / PWM (CCP)

Capture 16 bit, độ phân giải tối đa 6.25 ns ( T CY /6) Compare 16 bit, độ phân giải tối đa 100 ns ( T CY ) PWM output: độ phân giải từ 1 -> 10 bít

- Module USART: + Hỗ trợ RS-485, RS-232 và LIN1.2 + Auto weak-up on start bit + Auto-Bound detect

SVTH: Ngô Kế Sang Trang 13

Page 14: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

+ RS-232 sử dụng khối dao động nội ( không cần thạch anh ngoài)

- Những đặc điểm chính:+ Là CPU sử dụng tập lệnh RISC và có tốc độ xử lý cao , công suất thấp nhờ sử dụng công nghệ CMOS FLASH/EEPROM. + Tập lệnh có 75 lệnh . + Một chu kỳ lệnh bằng 4 chu kỳ xung . Sử dụng bộ dao động 40 Mhz thì chu kỳ lệnh là 0,1 us. + Tần số bộ dao động cho phép tới 40Mhz. + 8K x 14 word bộ nhớ FLASH lập trình. + 768 byte bộ nhớ RAM , trong đó bộ nhớ EEPROM lên đến 256 byte. + Trang bị tới 34 ngắt với 8 cấp độ ngắt + 5 port I / O. + Trang bị 3 bộ định thời: 2 bộ 8 bit,1 bộ 16 bit. + 2 module Capture/Compare/PWM. + Bộ chuyển đổi 10 bit ADC với tốc độ 5-10us. + Cổng serial đồng bộ với chế độ SPI(Master) và I2C (Master/Slave) thực hiện bằng phần cứng . + Chế độ chuyển nhận đồng bộ/bất đồng bộ với 9 bit địa chỉ kiểm tra. + Cổng song song (PSP) 8bit . + Các chế độ định địa chỉ:trực tiếp , gián tiếp , và tương đối. + Cho phép đọc/ghi bộ nhớ chương trình . + Có chế độ bảo vệ mã lập trình . + Chế độ SLEEP (tạm nghỉ) để tiết kiệm điện năng . + Cho phép chọn lựa chế độ dao động ( nội , ngoại ). + 2 chân cho phép gỡ rối hoạt động của vi điều khiển. + Lập trình thông qua cổng serial với điện thế chỉ 5 V. + Tầm điện thế hoạt động rộng: từ 2 đến 5.5V. Dòng cấp khoảng 25mA.+ Được sản xuất với nhiều loại khác nhau cho cùng 1 mã vi điều khiển , tuỳ thuộc vào số tính năng được trang bị thêm.

- Các kiểu chân : PDIP(40 chân), PLCC và QFP (cùng 44 chân).

SVTH: Ngô Kế Sang Trang 14

Page 15: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.2.2 Cấu trúc của PIC18F4431 1.2.2.1 Sơ đồ khối của PIC18F4431

Hình 1.20 Sơ đồ khối của PIC18F4431

SVTH: Ngô Kế Sang Trang 15

Page 16: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Các giá trị tụ điện tiêu biểu mà nhà sản xuất đưa ra cho các tần số khác nhau

Loại dao

động

Tần số thạch anh

Giá trị tụ điện tiêu biểu đã được thử nghiệm

C1 C2

LP32Khz 33 pF 33 pF

200Khz 15 pF 15 pF

XT1Mhz 33 pF 33 pF

4Mhz 27 pF 27 pF

HS

4Mhz 27 pF 27 pF

8Mhz 22 pF 22 pF

20Mhz 15 pF 15 pF

Bảng 1.1 Giá trị tụ điện tiêu biểu cho từ giá trị tần số

1.2.2.2 Sơ đồ khối bên trong của bộ giao động

Hình 1.21 Sơ đồ khối bộ giao động của PIC18F4431

SVTH: Ngô Kế Sang Trang 16

Page 17: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi OSCCON

Hình 1.22 Thanh ghi OSCCON

SVTH: Ngô Kế Sang Trang 17

Page 18: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.2.2.3 ResetSơ đồ khối của mạch reset trên chip

Hình 1.23 Sơ đồ khối của mạch reset trên chip

SVTH: Ngô Kế Sang Trang 18

Page 19: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Mạch reset bên ngoài và các khuyến cáo của nhà sản xuất

Hình 1.24 Mạch reset bên ngoài

1.2.2.4 Port vào ra:- Thanh ghi TRIS (thanh ghi điều khiển hướng vào ra)- Thanh ghi PORT (đọc các cấp trên chân của thiết bị)- Thanh ghi LAT (thanh ghi chố ngõ ra)

SVTH: Ngô Kế Sang Trang 19

Page 20: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sơ đồ khối của port vào ra

Hình 1.25 Sơ đồ khối của port vào ra

- Port A: Là một thanh ghi 8 bit làm nhiệm vụ xuất nhập và thanh ghi điều khiển chiều

TRIS = 0 là ngõ ra TRIS = 1 là ngõ vào ngoài ra Port A còn tích hợp chân đọc ADC và Encoder. Các chân của PORTA được ghép với ngõ vào analog, Ngõ vào Analog VREF + VREF - đầu vào và điện áp ngõ ra tham chiếu. Các hoạt động của chân RA3: RA0 và A5 như đầu vào chuyển đổi A/D được chọn bằng cách xóa/thiết lập các bit kiểm soát trong các thanh ghi ANSEL0 ANSEL1. Tích hợp chân độ tính hiệu Encoder của module QEI là chân RA2, RA3, RA4 và hai chân nhận tín hiệu xung clock của bộ dao động ngoài là chân RA6, RA7.

SVTH: Ngô Kế Sang Trang 20

Page 21: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sơ đồ khối của chân RA0, RA1

Hình 1.26 Sơ đồ khối của chân RA0, RA1

Sơ đồ khối của chân RA2, RA3

Hình 1.27 Sơ đồ khối của chân RA2, RA3Sơ đồ khối của chân RA4

SVTH: Ngô Kế Sang Trang 21

Page 22: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.28 Sơ đồ khối của chân RA4Sơ đồ khối của chân RA5, RA7

Hình 1.29 Sơ đồ khối của chân RA5, RA7Sơ đồ khối của chân RA6

SVTH: Ngô Kế Sang Trang 22

Page 23: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.30 Sơ đồ khối của chân RA6

Chức năng port A

Hình 1.31 Chức năng port A

Tóm lược các thanh ghi có kiên quan đến port A

SVTH: Ngô Kế Sang Trang 23

Page 24: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.32 Tóm lược các thanh ghi có kiên quan đến port A- Port B:

Là thanh ghi 8 bit được sử dụng như các chân vào ra và thanh ghi điều khiển chiều TRIS = 0 là ngõ ra TRIS = 1 là ngõ vào ngoài ra Port B còn thích hợp chân phát xung PWM ở chân RB0, RB1, RB2, RB3, RB4, RB5 và tích hợp chân nạp chíp theo chuẩn ICSP ở chân RB5(PGM), RB6 (PGC), RB7 (PGD). Cho phép lập trình ngõ ra kéo lên (weak pull-up) chỉ có ở port B. Thanh ghi chốt dữ liệu (LATB) là bộ nhớ ánh xạ. Đọc-chỉnh sửa-ghi hoạt động trên các thanh ghi LATB đọc và ghi giá trị đầu ra được chốt cho PORTB. Tích hợp chân PWM

Sơ đồ khối chân RB3, RB0

Hình 1.33 Sơ đồ khối chân RB3, RB0

Sơ đồ khối chân RB4

SVTH: Ngô Kế Sang Trang 24

Page 25: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.34 Sơ đồ khối chân RB4

Sơ đồ khối chân RB5

SVTH: Ngô Kế Sang Trang 25

Page 26: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.35 Sơ đồ khối chân RB5

Sơ đồ khối chân RB6, RB7

SVTH: Ngô Kế Sang Trang 26

Page 27: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.36 Sơ đồ khối chân RB6, RB7

Bảng tóm tắt chức năng port B

SVTH: Ngô Kế Sang Trang 27

Page 28: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.37 Bảng tóm tắt chức năng port BBảng tóm tắt các thanh ghi liên quan đến port B

Hình 1.38 Bảng tóm tắt các thanh ghi liên quan đến port B

- Port C: Là thanh ghi 8 bit được sử dụng như các chân vào ra và thanh ghi điều khiển

chiều TRIS = 0 là ngõ ra TRIS = 1 là ngõ vào. Thanh ghi chốt dữ liệu (LATC) là bộ nhớ ánh xạ. Đọc-chỉnh sửa-ghi hoạt động trên các thanh ghi LATC đọc và ghi giá trị đầu ra được chốt cho PORTC. Ngoài ra còn tich hợp chân vào và ra của Tmer1 ngõ vào Capture2 / ngõ ra Compare2 t/PWM ngõ vào FLTA chân RC0, RC1. Tích hợp ngõ vào Capture1/ngõ ra Compare1 /ngõ ra PWM1 ngõ vào FLTB ở chân RC2, Tich hợp Timer1 và Timer5 hoặt là ngắt ngoài 0 (INT0) ở chân RC3 ngăt ngoài 1(INT1)ngắt ngoài2 (INT2) ở chân RC4, RC5, tích hộp chân truyền thông SPI và I2C ở chân RC4, RC5, RC6, RC7.

SVTH: Ngô Kế Sang Trang 28

Page 29: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sơ đồ khối chân RC0

Hình 1.39 Sơ đồ khối chân RC0Sơ đồ khối chân RC1

Hình 1.40 Sơ đồ khối chân RC1

Sơ đồ khối chân RC2

SVTH: Ngô Kế Sang Trang 29

Page 30: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.41 Sơ đồ khối chân RC2Sơ đồ khối chân RC3

Hình 1.42 Sơ đồ khối chân RC3

Sơ đồ khối chân RC4

SVTH: Ngô Kế Sang Trang 30

Page 31: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.43 Sơ đồ khối chân RC4Sơ đồ khối chân RC5

Hình 1.44 Sơ đồ khối chân RC5Sơ đồ khối chân RC6

SVTH: Ngô Kế Sang Trang 31

Page 32: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.45 Sơ đồ khối chân RC6

Sơ đồ khối chân RC7

SVTH: Ngô Kế Sang Trang 32

Page 33: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.46 Sơ đồ khối chân RC7Bảng tóm tắt chức năng port C

Hình 1.47 Bảng tóm tắt chức năng port C

Bảng tóm tắt các thanh ghi liên quan đến port B

SVTH: Ngô Kế Sang Trang 33

Page 34: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.48 Bảng tóm tắt các thanh ghi liên quan đến port B

- Port D: Là thanh ghi 8 bit được sử dụng như các chân vào ra và thanh ghi điều

khiển chiều TRIS = 0 là ngõ ra TRIS = 1 là ngõ vào. Thanh ghi chốt dữ liệu (LATD) là bộ nhớ ánh xạ. Đọc-chỉnh sửa-ghi hoạt động trên các thanh ghi LATB đọc và ghi giá trị đầu ra được chốt cho PORTD. Ngoài ra Port B còn thích hợp chân của ngõ vào hoặt ra Timer0 và Timer5, chân modul truyền thông SPI và I2C ngõ vàoFLTA và 3 kênh PWM.

Sơ đồ khối chân RD7, RD6

Hình 1.49 Sơ đồ khối chân RD7, RD6

Sơ đồ khối chân RD5

SVTH: Ngô Kế Sang Trang 34

Page 35: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.50 Sơ đồ khối chân RD5Sơ đồ khối chân RD4

Hình 1.51 Sơ đồ khối chân RD4Sơ đồ khối chân RD3

SVTH: Ngô Kế Sang Trang 35

Page 36: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.52 Sơ đồ khối chân RD3Sơ đồ khối chân RD2

Hình 1.53 Sơ đồ khối chân RD2Sơ đồ khối chân RD1

SVTH: Ngô Kế Sang Trang 36

Page 37: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.54 Sơ đồ khối chân RD1Sơ đồ khối chân RD0

Hình 1.55 Sơ đồ khối chân RD0

Bảng tóm tắt chức năng port D

SVTH: Ngô Kế Sang Trang 37

Page 38: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.56 Bảng tóm tắt chức năng port DBảng tóm tắt các thanh ghi liên quan đến port D

Hình 1.57 Bảng tóm tắt các thanh ghi liên quan đến port D

- Port E: Là thanh ghi 4 bit và được sử dụng như các chân vào ra và thanh ghi điều

khiển chiều TRIS = 0 là ngõ ra TRIS = 1 là ngõ vào. Thanh ghi chốt dữ liệu (LATE) là bộ nhớ ánh xạ. Đọc-chỉnh sửa-ghi hoạt động trên các thanh ghi LATB đọc và ghi giá trị đầu ra được chốt cho PORTE. Ngoài ra cò tích hợp chân của bộ ADC ở chân RE0, RE1, RE2, cò chân RE3 được sử dụng làm chân Reset MCLR .

Sơ đồ khối chân RE0, RE1, RE2

SVTH: Ngô Kế Sang Trang 38

Page 39: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.58 Sơ đồ khối chân RE0, RE1, RE2Sơ đồ khối chân RE3

Hình 1.59 Sơ đồ khối chân RE3Bảng tóm tắt chức năng port E

SVTH: Ngô Kế Sang Trang 39

Page 40: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.60 Bảng tóm tắt chức năng port EBảng tóm tắt các thanh ghi liên quan đến port E

Hình 1.61 Bảng tóm tắt các thanh ghi liên quan đến port E1.2.2.5 Timer

- Timer 0: Timer0 có 2 chế độ phần 8bit hoặc 16 bit timer/counter được chọn bằng

mềm. Có thể đọc được và có thể ghi. phần mềm lập trình chuyên dụng 8-bit prescaler. Lựa chọn nguồn xung clock là bên ngoài hay bên trong. Ngắt tràn từ FFh đến 00h trong chê độ bit-8 chế độ và FFFFh đến 0000h ở chế độ 16-bit. Chọn cạnh cho xung clock bên ngoài.

Thanh ghi điều khiển Timer 0 (T0CON)

SVTH: Ngô Kế Sang Trang 40

Page 41: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.62 Thanh ghi điều khiển Timer 0 (T0CON)

Sơ đồ khối timer ở chế độ 8 bit

SVTH: Ngô Kế Sang Trang 41

Page 42: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.63 Sơ đồ khối timer ở chế độ 8 bitSơ đồ khối timer ở chế độ 16 bit

Hình 1.64 Sơ đồ khối timer ở chế độ 16 bitCác thanh ghi có liên quan đến Timer0

Hình 1.65 Các thanh ghi có liên quan đến Timer 0Timer 1: Là thanh ghi 16 bit gồm 2 thanh 8 bit TMR1H và TMR1L. có thể đọc và

ghi cả 2 thanh ghi. Chọn xung (clock) bên trong hoặc bên ngoài . Ngắt tràn từ FFFFh đến 0000h. Thiết lập lại module CCP bằng xung trigger. Xung clock đồng bộ với hệ thống.

SVTH: Ngô Kế Sang Trang 42

Page 43: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi điều khiển Timer 1 (T1CON)

Hình 1.66 Thanh ghi điều khiển Timer1 (T1CON)

Các thanh ghi có liên quan đến Timer1

SVTH: Ngô Kế Sang Trang 43

Page 44: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.67 Các thanh ghi có liên quan đến Timer1Sơ đồ khối Timer1

Hình 1.68 Sơ đồ khối Timer1

Sơ đồ khối Timer1 đọc ghi 16 bit

SVTH: Ngô Kế Sang Trang 44

Page 45: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.69 Sơ đồ khối Timer 1 đọc ghi 16 bit- Timer 2:

Là timer 8-bit (TMR2 register) và thanh ghi period 8-bit (PR2) cả hai thanh ghi điều có thể đọc và ghi. Định tỉ lệ chia bằng phần mềm (1:1, 1:4, 1:16). Định tỉ lệ chia bằng phần mềm(1:1 đến 1:16). Ngắt trên TMR2 phù hợp với PR2. Sử dụng tùy chỉnh module SSP cho ngõ ra TMR2 để tạo sự thay đổi xung.

Thanh ghi điều khiển Timer2 (T1CON)

SVTH: Ngô Kế Sang Trang 45

Page 46: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.70 Thanh ghi điều khiển Timer2 (T1CON)ModuleTimer2 có một thanh ghi period 8-bit, PR2. Timer2 tăng từ 00h cho

đến khi nó bằng với PR2 và sau đó reset 00h trên chu kỳ tăng tiếp theo. Thanh ghi PR2 có thể đọc và ghi. Thanh ghi PR2 được khởi tạo về FFH khi reset.

Sơ đồ khối Timer2

SVTH: Ngô Kế Sang Trang 46

Page 47: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.71 Sơ đồ khối Timer2Các thanh ghi có liên quan đến Timer2

Hình 1.72 Các thanh ghi có liên quan đến Timer2

Timer5: Là timer 16 bit cho phép đếm đồng bộ và không đồng bộ, chết độ hoạt động

liên tục hoặt gián đoạn có thể lập trình được ở 4 chế độ chia (1:1 to 1:8). Ngắt được tạo ra với thời gian phù hợp. Reset timer bằng xung trigger riêng biệt.

Thanh ghi điều khiển Timer 5

SVTH: Ngô Kế Sang Trang 47

Page 48: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.73 Thanh ghi điều khiển Timer5

Sơ đồ khối đọc ghi 16 bit Timer 5

SVTH: Ngô Kế Sang Trang 48

Page 49: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.74 Sơ đồ khối đọc ghi 16 bit Timer5Các thanh ghi có liên quan đến Timer 5

Hình 1.75 Các thanh ghi có liên quan đến Timer 51.2.2.6 Module PWM

SVTH: Ngô Kế Sang Trang 49

Page 50: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sử dụng 3 phase hoặc 1 phase điều khiển động cơ AC không đồng bộ, điều khiển động cơ từ trở (Switched Reluctance Motors), động cơ DC không chổi quét (Brushless DC (BLDC) Motors) điều khiển trong nguồn UPS. Là module 14 bit

Sơ đồ khối Mudule PWM

Hình 1.76 Sơ đồ khối Mudule PWM

SVTH: Ngô Kế Sang Trang 50

Page 51: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sơ đồ khối 1 ngõ ra đối ngược(COMPLEMENTARY) của Module PWM

Hình 1.77 Sơ đồ khối 1 ngõ ra đối ngược(COMPLEMENTARY) của Module PWM

Sơ đồ khối 1 ngõ ra độc lập (INDEPENDENT) của Module PWM

Hình 1.78 Sơ đồ khối 1 ngõ ra độc lập (INDEPENDENT) của Module PWM

SVTH: Ngô Kế Sang Trang 51

Page 52: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Các thanh ghi điều khiểnThanh ghi 0 điều khiển timer PWM (PTCON0)Thanh ghi 1 điều khiển timer PWM (PTCON1)Thanh ghi 0 điều khiển PWM (PWMCON0)Thanh ghi 1 điều khiển PWM (PWMCON1)Thanh ghi điều khiển Dead Time (DTCON)Thanh ghi khống chế ngõ ra (Override) (OVDCOND)Thanh chi trạng thái ngõ ra (OVDCONS)Thanh ghi cấu hình sủa lỗi (FLTCONFIG)Thanh ghi time Base (PTMRH and PTMRL)Thanh ghi Period (PTPERH and PTPERL)Thanh ghi Period (PTPERH and PTPERL)Thanh ghi Special Event Compare (SEVTCMPH and SEVTCMPL)Thanh chi Duty Cycle #0 (PDC0H and PDC0L)Thanh chi Duty Cycle #1 (PDC1H and PDC1L)Thanh chi Duty Cycle #2 (PDC2H and PDC2L)Thanh chi Duty Cycle #3 (PDC3H and PDC3L)

SVTH: Ngô Kế Sang Trang 52

Page 53: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sơ đồ khối Time Base

Hình 1.79 Sơ đồ khối Time Base

SVTH: Ngô Kế Sang Trang 53

Page 54: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi 0 điều khiển timer

Hình 1.80 Thanh ghi 0 điều khiển timerThanh ghi 1 điều khiển timer

Hình 1.81 Thanh ghi 1 điều khiển timer

SVTH: Ngô Kế Sang Trang 54

Page 55: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi 0 điều khiển PWM

Hình 1.82 Thanh ghi 0 điều khiển PWM

SVTH: Ngô Kế Sang Trang 55

Page 56: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi 0 điều khiển PWM

Hình 1.83 Thanh ghi 1 điều khiển PWM1.2.2.7. Bộ QEI trên PIC18F4431: sơ đồ khối của bộ QEI

Hình 1.84 Sơ đồ khối bộ QEI

SVTH: Ngô Kế Sang Trang 56

Page 57: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

- Thanh ghi điều khiển bộ QEI: QEICON:

Hình 1.85 Thanh ghi điều khiển QEICON

SVTH: Ngô Kế Sang Trang 57

Page 58: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.2.2.8. Module ADC Modul adc 9 kênh 10bit tốc độ cao .Len đến 200K mẫu cho mỗi giây tương đương với tần số lấy mẫu 200Khz Hai mẩu và giữ ở ngõ vào cho 2 kênh lấy mẫu cùng lúc Chọn chế độ lấy mẫu tức thời hoặc liên tục Bộ điệm 4-word cho kết quả A/D • Thanh ghi kết quả A/D High (ADRESH)• Thanh ghi kết quả A/D Low (ADRESL)• Thanh ghi 0 điều kiển A/D 0 (ADCON0)• Thanh ghi 1 điều kiển A/D 1 (ADCON1)• Thanh ghi 2 điều kiển A/D 2 (ADCON2)• Thanh ghi 3 điều kiển A/D 3 (ADCON3)• Thanh ghi chọn kênh A/D (ADCHS)• Thanh ghi 0 chọn I/O Analog (ANSEL0)• Thanh ghi 1 chọn I/O Analog (ANSEL1)

SVTH: Ngô Kế Sang Trang 58

Page 59: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi 0 điều khiển AD

Hình 1.86 Thanh ghi 0 điều khiển AD

SVTH: Ngô Kế Sang Trang 59

Page 60: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thanh ghi 1 điều khiển AD

Hình 1.87 Thanh ghi 1 điều khiển AD

Thanh ghi 2 điều khiển AD

SVTH: Ngô Kế Sang Trang 60

Page 61: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.88 Thanh ghi 2 điều khiển AD

Thanh ghi 3 điều khiển AD

SVTH: Ngô Kế Sang Trang 61

Page 62: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.89 Thanh ghi 3 điều khiển AD

Thanh ghi chọn kênh AD

SVTH: Ngô Kế Sang Trang 62

Page 63: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.90 Thanh ghi chọn kênh AD

Thanh ghi 0 chọn Analog

SVTH: Ngô Kế Sang Trang 63

Page 64: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.91 Thanh ghi 0 chọn AnalogThanh ghi 1 chọn Analog

Hình 1.92 Thanh ghi 1 chọn Analog

Sơ đồ khối AD

SVTH: Ngô Kế Sang Trang 64

Page 65: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.93 Sơ đồ khối AD

Chế độ ngõ vào Analog

SVTH: Ngô Kế Sang Trang 65

Page 66: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 1.94 Chế độ ngõ vào Analog

Bảng tần số hoạt động

Hình 1.95 Bảng tần số hoạt động

1.3 Giới thiệu CCS V 4.130

SVTH: Ngô Kế Sang Trang 66

Page 67: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

1.3.1 Tổng quan Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm

ứng dụng cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assmebly. Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời củangôn ngữ C ra đời, nhu cầu dùng ngôn ngữ C đề thay cho ASM trong việc mô tả các lệnh nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil

C, HT‐PIC, MikroC,CCS… Tôi chọn CCS cho bài giới thiệu này vì CCS là một công cụ lập trình C

mạnh cho Vi điều khiển PIC. Cộng đồng sử dụng nhiều .

1.3.2. Giới thiệu về CCS CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của

hãng Microchip.Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:

‐ PCB cho dòng PIC 12‐bit opcodes

‐ PCM cho dòng PIC 14‐bit opcodes

‐ PCH cho dòng PIC 16 và 18‐bit Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình

bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler Ver 4.130

Giống như nhiều trình biên dich C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lạp trình cấp cao – Ngôn ngữ C.Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xủa lý, cấu trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng…

1.3.2.1 Chỉ thị tiền sử lý:- #ASM và #ENDASM :

SVTH: Ngô Kế Sang Trang 67

Page 68: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Cho phép đặt 1 đoạn mã ASM giữa 2 chỉ thị này, Chỉ đặt trong hàm . CCS định nghĩa sẵn 1 biến 8 bit _RETURN_ để bạn gán giá trị trả về cho hàm từ đoạn mã Assembly C đủ mạnh để thay thế Assmemly.

Vì vậy nên hạn chế lồng mã Assembly vào vì thường gây ra xáo trộn dẫn đến sau khi biên dịch mã chạy sai , trừ phi bạn nắm rõ Assembly và đọc hiểu mã Assembly sinh ra thông qua mục C/Asm list.

+ Khi sử dụng các biến không ở bank hiện tại , CCS sinh thêm mã chuyển bank tự động cho các biến đó . Nếu sử dụng #ASM ASIS thì CCS không sinh thêm mã chuyển bank tự động , bạn phải tự thêm vào trong mã ASM .

- #INCLUDE : + Cúpháp: #include<filename> Hay# include“filename” Filename : tên file cho thiết bị *.h , *.c . Nếu chỉ định file ở đường dẫn khác thì thêm đường dẫn vào . Luôn phải có để khai báo chương trình viết cho VĐK nào , và luôn đặt ở dòng đầu tiên .

- #BIT , #BYTE , #LOCATE và # DEFINE: Khai báo #BIT

+ Cú pháp #BITid=x.y Với id: tên biến x : biến C ( 8,16,32,…bit) hay hằng số địa chỉ thanh ghi.y: vị trí bit trong x=> tạo biến 1 bit đặt ở byte x vị trí bit y, tiện dùng kiểm tra hay gán trị cho bit thanh ghi . Điểm khác biệt so với dùng biến 1 bit từ khai báo int1 là : int1 tốn 1 bit bộ nhớ , đặt ở thanh ghi đa mục đích nào đó do CCS tự chọn , còn #BIT thì không tốn thêm bộ nhớ do id chỉ là danh định đại diện cho bit chỉ định ở biến x , thay đổi giá trị id ( 0 / 1 ) sẽ thay đổi giá trị bit tương ứng y -> thay đổi trịx.Khai báo #BYTECú pháp: #BYTE id=x.y: địa chỉ id: tên biến Chức năng:

Gán tên biến id cho địa chỉ (thanh ghi ) x , sau đó muốn gán hay kiểm tra địa chỉ x chỉ cần dùng id. Không tốn thêm bộ nhớ , tên id thường dùng tên gợi nhớ chức năng thanh ghi ở địa chỉ đó .

Lưu ý rằng giá trị thanh ghi có thể thay đổi bất kỳ lúc nào do hoạt động chương trình nên giá trị id cũng tự thay đổi theo giá trị thanh ghi đó . Không nên dùng id cho thanh ghi đa mục đích như 1 cách dùng biến int8 vì CCS có thể dùng các thanh ghi này bất kỳ lúc nào cho chương trình , nếu muốn dùng riêng , hãy dùng #LOCATE.Khai báo #LOCATE+ Cú pháp: #LOCATE id = x Chức năng:

SVTH: Ngô Kế Sang Trang 68

Page 69: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Làm việc như #byte nhưng có thêm chức năng bảo vệ không cho CCS sử dụng địa chỉ đó vào mục đích khác.Khai báo #LOCATE #DEVICE chip option chip : tên VĐK sử dụng , không dùng tham số này nếu đã khai báo tên chip ở #include .option : toán tử tiêu chuẩn theo từng chip:* = 5 dùng pointer 5 bit ( tất cả PIC )* = 8 dùng pointer 8 bit ( PIC14 và PIC18 )* = 16 dùng pointer 16 bit (PIC14 ,PIC 18)ADC = x sử dụng ADC x bit ( 8 , 10 , . . . bit tuỳ chip ) , khidùng hàm read_adc ( ) , sẽ trả về giá trị x bit.#USE fast_i (port)Port: là tên port: từ A-G (tuỳ chip) + Dùng cái này thì trong chương trình khi dùng các lệnh io như output_low() , . . . Nó sẽ set chỉ với 1 lệnh, nhanh hơn so với khi không dùng chỉ thị này.

+ Trong hàm main( ) bạn phải dùng hàm set_tris_x( ) để chỉ rõ chân vào ra thì chỉ thị trên mới có hiệu lực, không thì chương trình sẽ chạy sai .

+Không cần dùng nếu không có yêu cầu gì đặc biệt .#USEfast_io (port) Port:là tên port :từ A-G ( tuỳ chip )+ Dùng cái này thì trong chương trình khi dùng các lệnh io như output_low() , . . . nó sẽ set chỉ với 1 lệnh , nhanh hơn so với khi không dùng chỉ thị này.+ Trong hàm main( ) bạn phải dùng hàm set_tris_x( ) để chỉ rõ chân vào ra thì chỉ thị trên mới có hiệu lực , không thì chương trình sẽ chạy sai .+ Không cần dùng nếu không có yêu cầu gì đặc biệt .

1.3.2.2 Khai báo biến và hằng Khai báo biến , hằng, mảng :+ Các loại biến sau được hỗ trợ:

int1 số 1 bit = true hay false ( 0 hay 1)int8 số nguyên 1 byte ( 8 bit) int16 sốnguyên 16 bitint32 số nguyên 32 bitChar ký tự 8 bitfloat số thực 32 bit shortmặc định như kiểu int1byte mặc định như kiểu int8int mặc định như kiểu int8

SVTH: Ngô Kế Sang Trang 69

Page 70: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

long mặc định như kiểu int16+ Thêm signed hoặc unsigned phía trước để chỉ đó là số có dấu hay không dấu. Khai báo như trên mặc định là không dấu. 4 khai báo cuối không nên dùng vì dễ nhầm lẫn. Thay vào đó nên dùng 4 khai báo đầu.+ Phạm vi biến: Int8 :0 , 255 signed int8: -128 , 127Int16 : 0 ,2^15-1signedint16 : -2^15 , 2^15-1Int32 : 0 , 2^32-1 signed int32 : -2^31 , 2^31-1Khai báo hằng :

Cú pháp: <kiểu dữ liệu> const <tên hằng> =<hằng số>VD: Int8 const a=231;

Khai báo 1 mảng hằng số:Cú pháp: <kiểu dữ liệu> const <tên mảng>[số phần tử]={ giá trị các phần tử}VD:Int8 const a[5] = { 3,5,6,8,6 } ; //5 phần tử , chỉ số mảng bắt đầu từ 0 :

a[0]=3Một mảng hằng số có kích thước tối đa tuỳ thuộc loại VĐK:

NếuVĐK là PIC 14 ( VD :16F877 ) : bạn chỉ được khai báo 1 mảng hằng số có kích thước tối đa là 256 byte. Các khai báo sau là hợp lệ :

Int8 const a[5]={ . . .}; // sử dụng 5 byte, dấu... để bạn điền số vào Int8 const a[256]={ . . .}; // 256 phần tử x 1 byte = 256 byte Int16 const a[12] = { . . . }; // 12 x 2= 24 byte Int16 const a[128] = { . . . }; // 128 x 2= 256 byte không hợp lệ:Int16 const a[200] = { . . . }; // 200 x 2 =400 byteNếu VĐK là PIC 18 : khai báomảng hằng số thoải mái , không giới hạn

kích thước.Lưu ý : nếu đánh không đủ số phần tử vào trong ngoặc kép như đã khai báo , các phần tử còn lại sẽ là 0. Truy xuất giá trị vượt quá chỉ số mảng khai báo sẽ làm chương trình chạy vô tận . Khai báo 1 biến mảng : kích thước tuỳ thuộc khai báo con trỏ trong #device và loại VDK:

PIC 14 : Nếu bạn khai báo con trỏ 8 bit : VD: # device *=8: không gian bộ nhớ chỉ có 256 byte cho tất cả các biến chương trình bất chấp VĐK của bạn có hơn 256 byte RAM (Vd : 368 , . . .) và biến mảng có kích thước tối đa tuỳ thuộc độ phân mảnh bộ nhớ, với 16F877 có 368 byte ram , thường thì kích thước không

SVTH: Ngô Kế Sang Trang 70

Page 71: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

quá 60 byte ,có khi dưới 40 byte , nếu khai báo lớn hơn sẽ gặp lỗi vô duyên : "not enough ram for all variable" trong khi thực sự VDK còn rất nhiều RAM . Nếu khai báo con trỏ 16 bit :

VD : #device *=16 , không gian bộ nhớ là đầy đủ ( trừ đi 1 ít RAM do CCS chiếm làm biến tạm ) .

VD : với 16F877 bạn dùng đủ 368 byte RAM . Nhưng kích thước mảng cũng không quá 60 byte.

PIC 18 : kích thước mảng không giới hạn, xài hết RAM thì thôi . Với khai báo con trỏ 8 bit , bạn chỉ được xài tối đa 256 byte RAM , nếu khai báo con trỏ 16 bit, bạn xài trọn bộ nhớ RAM thực sự .

VD: Khai báo biến mảng : int16 a[125] ; // biến mảng 126 phần tử , kích thước 252 byte ram .1.3.2.3 Các Hàm Delay : + Để sử dụng các hàm delay , cần có khai báo tiền xử lý ở đầu file , VD : sử dụng OSC 20 Mhz , bạn cần khai báo : #use delay ( clock = 20000000 )+ Hàm delay không sử dụng bất kỳ timer nào . Chúng thực ra là 1 nhóm lệnh ASM để khi thực thi từ đầu tới cuối thì xong khoảng thời gian mà bạn quy định . Tuỳ thời gian delay yêu cầu dài ngắn mà CCS sinh mã phù hợp . có khi là vài lệnh NOP cho thời gian rất nhỏ . Hay 1 vòng lặp NOP . Hoặc gọi tới 1 hàm phức tạp trong trường hợp delay dài . Các lệnh nói chung là vớ vẩn sao cho đủ thời gian quy định là được . Nếu trong trong thời gian delay lại xảy ra ngắt thì thời gian thực thi ngắt không tính vào thời gian delay , xong ngắt nó quay về chạy tiếp các dòng mã cho tới khi xong hàm delay . Do đó thời gian delay sẽ không đúng .Delay_us ( time )

+ Time : là biến số thì = 0 – 255 , time là 1 hằng số thì = 0 -65535 .+ Hàm không trả về trị .+ Hàm này cho phép delay khoảng thời gian dài hơn theo đơn vị us .+ Quan sát trong C / asm list bạn sẽ thấy với time dài ngắn khác nhau , CSS sinh mã khác nhau .

Delay_ms (time ) + Time = 0-255 nếu là biến số hay = 0-65535 nếu là hằng số .+ Hàm không trả về trị .+ Hàm này cho phép delay dài hơn nữa .

Delay_cycles (count ) + Count : hằng số từ 0 – 255 , là số chu kỳ lệnh .1 chu kỳ lệnh bằng 4 chu kỳ máy. Hàm không trả về trị. Hàm dùng delay 1 số chu kỳ lệnh cho trướ delaydelay_us ( time ).

SVTH: Ngô Kế Sang Trang 71

Page 72: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

+ Time : là biến số thì = 0 – 255 , time là 1 hằng số thì = 0 -65535+ Hàm không trả về trị.+ Hàm này cho phép delay khoảng thời gian dài hơn theo đơn vị us .+ Quan sát trong C / asm list bạn sẽ thấy với time dài ngắn khác nhau, CSS sinh mã khác nhau .

1.3.2.4 Các cấu trúc lệnh điều kiện và vòng lậpGồm các lệnh if, while, do, for, switch, ...

Hình 1.96 Các cấu trúc lệnhLưu ý : các mục trong [ ] là có thể có hoặc không .

+ While (expr) stmt : xét điều kiện trước rồi thực thi biểu thức sau . + Do stmt while (expr) : thực thi biểu thức rồi mới xét điều kiện sau . + Return : dùng cho hàm có trả về trị , hoặc không trả về trị cũng được , khi đó chỉ cần dùng: return ; ( nghĩa là thoát khỏi hàm tại đó ) . + Break : ngắt ngang ( thoát khỏi ) vòng lặp while. _Continue : quay trở về đầu vòng lặp while .

1.3.2.5 Các Hàm Xử Lý Số: + Bao gồm các hàm:Sin() cos() tan() Asin() acos() atan()

Abs(): lấy trị tuyệt đốiCeil( ): làm tròn theo hướng tăng

Floor ( ): làm tròn theo hướng giảm

SVTH: Ngô Kế Sang Trang 72

Page 73: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Exp ( ): tính e^xLog ( ): tính logLog10 ( ): log10Pow ( ): tính luỹ thừaSqrt ( ): căn thức

+ Các hàm này chạy rất chậm trên các VDK không có bộ nhân phần cứng ( PIC 14 ,12 ) vì chủ yếu tính toán với số thực và trả về cũng số thực ( 32 bit ) và bằng phần mềm.

VD: hàm sin mất 3.5 ms ( thạch anh = 20Mhz )để cho KQ . Do đó nếu không đòi hỏi tốc độ thì dùng các hàm này cho đơn giản , như là dùng hàm sin thì khỏi phải lập bảng tra.1.3.2.6 Các Hàm Xử Lý Bit Và Các Phép Toán :

+ Bao gồm các hàmsau :Shift_right() shift_left() Rotate_right() rotate_left() Bit_clear() bit_set()

bit_test() Swap() Make8() make16() make32(). Shift_right ( address , byte , value ) Shift_left ( address , byte , value )+ Dịch phải (trái ) 1 bit vào 1 mảng hay 1 cấu trúc . Địa chỉ có thể là địa chỉmảng hay địa chỉ trỏ tớicấu trúc ( kiểu như &data) . Bit 0 byte thấp nhất là LSB .Rotate_right () , rotate_left ()

+ Nói chung 4 hàm này ít sử dụng .3 / Bit_clear ( var , bit )it_set ( var , bit ) + Bit_clear ( ) dùng xóa ( set = 0 ) bit được chỉ định bởi vị trí bit trong biến var .+Bit_set ( ) dùng set=1 bit được chỉ định bởi vị trí bit trong biến var .+ var : biến 8 , 16 , 32 bit bất kỳ .+ bit : vị trí clear ( set ) : từ 0-7 ( biến 8 bit) , 0-15 ( biến 16 bit ) , 0-31 (biến 32 bit ) .+ Hàm không trả về trị .

VD : Int x; X=11 ; //x=1011 Bit_clear ( x ,1 ); // x=1001b = 9 Bit_test ( var , bit ) :

+ Dùng kiểm tra vị trí bit trong biến var .+ Hàm trả về 0 hay 1 là giá trị bit đó trong var .+ Var : biến 8, 16 ,32 bit .+ Bit : vị trí bit trong var .+ Giả sử bạn có biến x 32 bit đếm từ 0 lên và muốn kiểm tra xem nó có lớn hơn 4096 không ( 4096= 2^12 =1000000000000b) :If ( x >= 4096) . . . // phép kiểm tra này mất ~5 us Trong 1 vòng lặp , việc kiểm tra thường xuyên như vậy sẽ làm mất 1 thời gian đáng kể . Để tối ưu , chỉ cần dùng : if ( bit_test ( x, 12 ) Ỉ chỉ mất ~ 0.4 us . ( 20 Mhz thạch anh ) .+ Kiểm tra đếm lên tới những giá trị đặc biệt ( 2^ i) thì dùng hàm này rất tiện lợi.

Swap ( var ) : + var : biến 1 byte+ Hàm này tráo vị trí 4 bit trên với 4 bit dưới của var , tương đương var =(var>>4) | ( var << 4 )+ Hàm không trả về trị .

SVTH: Ngô Kế Sang Trang 73

Page 74: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

VD : X= 5 ; //x=00000101b Swap ( x) ; //x = 01010000b = 80

Make8 ( var , offset ) : +Hàm này trích 1 byte từ biến var .+ var : biến 8,16,32 bit. offset là vị trí của byte cần trích ( 0,1,2,3) . +Hàm trả về giá trị byte cần trích .

VD : Int16 x = 1453 ; // x=0x5AD Y = Make(x, 1) ; //Y= 5 = 0x05

Make16 ( varhigh , varlow ) : +Trả về giá trị 16 bit kết hợp từ 2 biến 8 bit varhigh và varlow. Byte cao là

varhigh , thấp là varlow .Make32 ( var1 , var2 , var3 , var4 ) :

+ Trả về giá trị 32 bit kết hợp từ các giá trị 8 bit hay 16 bit từ var1 tới var4 . Trong đó var2 đến var4 có thể có hoặc không . Giá trị var1 sẽ là MSB , kế tiếp là var2 ,...Nếu tổng số bit kết hợp ít hơn 32 bit thì 0 được thêm vào MSB cho đủ 32bit.1.3.2.7 Xử lý adc:

+ PIC có nhiều chân phục vụ xử lý ADC với nhiều cách thức khác nhau . Để dùng ADC , bạn phải có khai báo #DEVICE cho biết dùng ADC mấy bit ( tuỳ chip hỗ trợ , thường là 8 hay 10 bit hoặc hơn) . Bạn cần lưu ý là: 1 VDK hỗ trợ ADC 10 bit thì giá trị vào luôn là 10 bit , nhưng chia cho 4 thì còn 8 bit . Do đó 1 biến trở chiết áp cấp cho ngõ vào ADC mà bạn chọn chế độ 10 bit thì sẽ rất nhạy so với chế độ 8 bit ( vì 2 bit cuối có thay đổi cũng không ảnh hưởng giá trị 8 bit cao và do đó kết quả 8 bit ADC ít thay đổi ) , nếu chương trình có chế độ kiểm tra ADC để cập nhật tính toán , hay dùng ngắt ADC , thì nó sẽ chạy hoài thôi . Dùng ADC 8 bit sẽ hạn chế điều này . Do đó mà CCS cung cấp chọn lựa ADC 8 hay 10 bit tùy mục đích sử dụng .Cấu hình bộ ADC :

+ Thông dụng nhất khi dùng ADC là sử dụng 1 biến trở , điều chỉnh bởi 1 nút vặn , qua đó thu được 1 điện áp nhỏ hơn điện áp tham chiếu ( Vref – áp max ), đưa vào chân biến đổi ADC, kết quả cho 1 giá trị số ADC 8 bit ( 0-255 ) hay ADC 10 bit (0-1023 ). Thường thì áp Vref lấy bằng Vdd ( 5V ).

+ Trên các PIC có ngõ AVdd và AVss ( PIC 18 ), thường thì bạn luôn nối AVdd tới Vdd , AVss tới Vss để đảm bảo họat động cho lập trình qua ICD 2 . Các hàm sau phục vụ ADC : Setup_ADC ( mode ) :

+ Không trả về trị .

SVTH: Ngô Kế Sang Trang 74

Page 75: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Dùng xác định cách thức hoạt động bộ biến đổi ADC . Tham số mode tuỳ thuộc file thiết bị *.h có tên tương ứng tên chip bạn đang dùng , nằm trong thư mục DEVICES của CCS . Muốn biết có bao nhiêu tham số có thể dùng cho chip đó , bạn mở file tương ứng đọc , tìm tới chỗ các định nghĩa cho chức năng ADC dùng cho chip đó tương ứng với hàm này.

Sau đây là các giá trị mode của PI18F4431SETUP_ADC ()ADC_OFF: tắt ADCADC_CLOCK_INTERNAL chu kỳ lấy mẫu 2-6usADC_CLOCK_DIV_2ADC_CLOCK_DIV_4ADC_CLOCK_DIV_4 ADC_CLOCK_DIV_8 ADC_CLOCK_DIV_16 ADC_CLOCK_DIV_32 ADC_CLOCK_DIV_64

Setup_ADC_ports ( value ) + Xác định chân lấy tín hiệu analog và điện thế chuẩn sử dụng . Tùy thuộc bố

trí chân trên chip , số chân và chân nào dùng cho ADC và số chức năng ADC mỗi chip mà value có thể có những giá trị khác nhau. Xem file tương ứng trong thư mục DEVICES để biết số chức năng tương ứng chip đó . Để tương thích chương trình viết cho phiên bản cũ , 1 số tham số có 2 tên khác nhau ( nhưng cùng chức năng do định nghĩa cùng địa chỉ ) , ở đây dùng phiên bản 4.130

SETUP_ADC ()sAN0 //| A0sAN1 //| A1sAN2 //| A2sAN3 //| A3sAN4 //| A4sAN5 //| A5 sAN6 //| E0 sAN7 //| E1 sAN8 //| E2 NO_ANALOGS // NoneALL_ANALOG // Sử dụng tất cả A0 A1 A2 A3 A4 A5 E0 E1 E2VSS_VDD //| 0-VddVREF_VREF //| VrefL-VrefHVSS_VREF //| 0-VrefH

SVTH: Ngô Kế Sang Trang 75

Page 76: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

VREF_VDD //| VrefL-VddSet_ADC_channel ( channel ) :

Cú pháp: set_adc_channel (value)+ Chọn chân để đọc vào giá trị analog bằng lệnh Read_ADC ( ) . Giá trị

channel tuỳ số chân chức năng ADC mỗi chip.+ Hàm không trả về trị. Hàm chỉ hoạt động với A /D phần cứng trên chip.

Read_ADC ( mode ) : Cú pháp: READ_ADC (chế độ)Các chế độ: ADC_START_AND_READ giá trị mặc định ADC_START_ONLY bắt đầu chuyển đổi và trả về ADC_READ_ONLY đọc kết quả chuyển đổi lần cuối

+ Dùng đọc giá trị ADC từ thanh ghi (cặp thanh ghi ) chứa kết quả biến đổi ADC. Lưu ý: hàm này sẽ hỏi vòng cờ cho tới khi cờ này báo đã hoàn thành biến đổi

ADC ( sẽ mất vài us ) thì xong hàm .+ Nếu giá trị ADC là 8 bit như khai báo trong chỉ thị #DEVICE , giá trị trả về

của hàm là 8 bit , ngược lại là 16 bit nếu khai báo #DEVICE sử dụng ADC 10 bit trở lên .

+ Khi dùng hàm này, nó sẽ lấy ADC từ chân bạn chọn trong hàm Set_ADC_channel( ) trước đó. Nghĩa là mỗi lần chỉ đọc 1 kênh Muốn đổi sang đọc chân nào, dùng hàm set_ADC_channel( ) lấy chân đó. Nếu không có đổi chân, dùng read_ADC( ) bao nhiêu lần cũng được .

+ mode có thể có hoặc không , gồm có :ADC_START_AND_READ : giá trị mặc định ADC_START_ONLY: bắt đầu chuyển đổi và trả về

#DEVCE 8 bit 10 bit 11 bit 16 bit ADC=8 0-255 0-255 00-255 00-255 ADC=10 x 0-1023 x x ADC=11 x x 0-2047 x ADC=16 0-65280 0-65472 0-65504 0-65535

+ PIC18F4431 chỉ hỗ trợ ADC 8 và 10 bit . + Lưu ý : trên PIC 18 , cấu trúc ADC tương đối phức tạp , đa năng hơn như là

cho phép lấy 2 mẫu cùng lúc , . . . cũng sử dụng với các hàm trên , có nhiều thông số trong file *.h.

1.3.2.8 Các hàm vào ra trong c : + Bao gồm các hàm sau : Output_low() Output_high() Output_float() Output_bit()

SVTH: Ngô Kế Sang Trang 76

Page 77: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Input() Ouput_X() Input_X() port_b_pullups() Set_tris_X()

Output_low ( pin ) , Output_high (pin ) : + Dùng thiết lập mức 0 ( low, 0V ) hay mứ c 1 ( high , 5V ) cho chân IC , pin

chỉ vị trí chân . + Hàm này sẽ đặt pin làm ngõ ra , xem mã asm để biết cụ thể . + Hàm này dài 2 - 4 chu kỳ máy . Cũng có thể xuất xung dùng set_tris_X() và

#use fast_io. Output_bit ( pin , value ) :

+ pin : tên chân value : giá trị 0 hay 1 + Hàm này cũng xuất giá trị 0 / 1 trên pin , tương tự 2 hàm trên . Thường dùng

nó khi giá trị ra tuỳ thuộc giá trị biến 1 bit nào đó , hay muốn xuất đảo của giá trị ngõ ra trước đó.Output_float ( pin ) :

+ Hàm này set pin như ngõ vào , cho phép pin ở mức cao như 1 cực thu hở.Input ( pin ) :

+ Hàm này trả về giá trị 0 hay 1 là trạng thái của chân IC . Giá trị là 1 bit Output_X ( value ) :

+ X là tên port có trên chip . Value là giá trị 1 byte .+ Hàm này xuất giá trị 1 byte ra port. Tất cả chân của port đó đếu là ngõ ra

Input_X ( ) : + X : là tên port ( a, b ,c ,d e ) .+ Hàm này trả về giá trị 8 bit là giá trị đang hiện hữu của port đó .

Port_B_pullups ( value ) : + Hàm này thiết lập ngõ vào port B pullup ( điện trở kéo lên) . Value =1 sẽ kích hoạt tính năng này và value =0 sẽ ngừng .+ Chỉ các chip có port B có tính năng này mới dùng hàm này .

Set_tris_X ( value ) : + Hàm này định nghĩa chân IO cho 1 port là ngõ vào hay ngõ ra. Chỉ được dùng với #use fast_IO . Sử dụng #byte để tạo biến chỉ đến port và thao tác trên biến này chính là thao tác trên port .+ Value là giá trị 8 bit. Mỗi bit đại diện 1 chân và bit = 0 sẽ set chân đó là ngõ vào, bit = 1 set chân đó là ngõ ra .

Lưu ý : + Set_tris_B (0 ) : port B =00000000 : tất cả chân port B là ngõ ra.+ set_tris_B ( 1 ) : port B = 00000001 : chỉ B0 là ngõ vào, còn lại là ngõ ra.+ set_tris_B ( 255 ) : port B=11111111: tất cả chân portB là ngõ vào.

1.3.2.9 Các hàm xử lý QEITrong CCS đề độc thanh ghi này ta dùng lệnh :Qei_status( )

Cú pháp : status = qei_status( [unit] ); Tham số : status- trạng thái của Module QEI.

SVTH: Ngô Kế Sang Trang 77

Page 78: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

unit- Số đơn vị cài đặc, mặc định là 1 Trả về : không. Chức năng : Trả về trạng thái của Module QEI.

Ví dụ : status = qei_status(); Setup_qei( )

Cú pháp: setup_qei( [unit,]options, filter, maxcount ); Tham số: Options- Các chế độ của module QEI. Tất cả các

tùy chọn có thể tìm thấy trong file devices .h Một số tùy chọn phổ biến là:

· QEI_MODE_X2 · QEI_TIMER_GATED · QEI_TIMER_DIV_BY_1 Maxcount - Điều này sẽ xác định giá trị mà tại đó để thiết

lập lại các truy cập vị trí. Unit- Số đơn vị cài đặc , mặc định là 1.

Chức năng: Định cấu hình.Những cài đặt như chế độ, hướng có thể được thiết lập Ví dụ: setup_qei(QEI_MODE_X2|QEI_TIMER_INTERNAL, QEI_FILTER_DIV_2, QEI_FORWARD);qei_get_count( ) Cú pháp: value = qei_get_count( [unit] );

Tham số: value- giá trị 16-bit của bộ đếm vị trí. unit- Số đơn vị cài đặc, mặc định là1

Chức năng: Đọc giá trị 16-bit của bộ đếm vị trí.Ví dụ: value = qei_get_counter();

qei_set_count( ) Cú pháp: qei_set_count( [unit,] value ).

Tham số: value- Giá trị 16-bit của bộ đếm vị trí. unit- Số đơn vị cài đặc , mặc định là. Chức năng: ghi 16-bit giá trị đến bộ đếm vị trí.

Ví dụ: qei_set_counter(value).

1.3.2.10 Cơ chế hoạt động của ngắt : Ngắt 1 cấp :

+ Trên PIC 14 , 12 ,10 ,tất cả các ngắt chỉ có 1 cấp ưu tiên . Nghĩa là ngắt nàođang được phục vụ thì không thể bị ngắt bởi 1 ngắt khác xảy ra . Cơ chế sinh

SVTH: Ngô Kế Sang Trang 78

Page 79: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

mã cho ngắt của CCS như sau : nhảy đến địa chỉ ngắt , thường là 004h , sao lưu thanh ghi W, STATUS , PCLATCH , FSR, sau đó nó mới hỏi vòng xem cờ ngắt nào xảy ra thì nhảy đến hàm phục vụ ngắt đó . thực hiện xong thì phục hồi tất cả thanh ghi trên , rồi mới “RETFIE” – thoát ngắt . Số chu kỳ thực thi từ chỗ ngắt đến khi nhảy vào hàm ngắt cỡ 20 chu kỳ lệnh, nhảy ra cũng cỡ đó.

+ Điều gì xảy ra nếu chương trình dùng nhiều ngắt và khi có ngắt thì có 2 ngắt trở lên xảy ra đồng thời Nghĩa là : 2 ngắt xảy ra cùng lúc , hay khi ngắt A kích hoạt và CCS đang lưu các thanh ghi ( chưa tới hỏi vòng cờ ngắt ) thì ngắt B xảy ra , dĩ nhiên ngắt B không thể kích vector ngắt nhảy tới 004h vì bit cho phép ngắt toàn cục ( GIE ) bị khóa tự động khi có ngắt , chỉ có cờ ngắt B bật mà thôi. Sau khi lưu các thanh ghi , chương trình kiểm tra cờ ngắt , rõ ràng là nếu bit nào được kiểm tra trước thì phục vụ trước , dù nó xảy ra sau . Để tránh phục vụ không đúng chỗ , bạn dùng #priority để xác định ưu tiên. Ngắt ưu tiên nhất sẽ luôn được hỏi vòng trước .Sau khi xác định cờ ngắt cần phục vụ , nó sẽ thực thi hàm ngắt tương ứng .Xong thì xoá cờ ngắt đó và thoát ngắt . Phục vụ ngắt nào xong thì chỉ xoá cờ ngắt đó .Nếu A ưu tiên hơn B thì sau khi làm A , chương trình xoá cờ ngắt A, nhưng cờ B không xoá ( vì đâu có phục vụ ), nên khi thoát ra ngắt A, nó sẽ lại ngắt tiếp ( vì cờ B đã bật ), lại hỏi vòng cờ ngắt từ đầu: nếu cờ A chưa bật thì xét B, lúc này B bật nên phục vụ B, xong thì xoá cờ B và thoát ngắt

+ Môt chương trình dùng nhiều ngắt phải lưu ý điều này , tránh trường hợp: ngắt xảy ra liên tục (tràn ngắt ), 1 ngắt bị đáp ứng trễ , ngắt không đúng , . . .

Ngắt 2 cấp : + Chỉ có trên PIC 18 ( và dsPIC ). Có 2 khái niệm: ngắt ưu tiên thấp (low

priority) và ngắt ưu tiên cao ( high priority ). 2 vector thực thi ngắt tương ứng thường là 0008h (high) và 0018h ( low ). Một ngắt thấp đang được phục vụ sẽ bị ngưng và phục vụ ngắt cao ở 0008h nếu ngắt cao xảy ra. Ngược lại, ngắt cao đang xảy ra thì không bao giờ bị ngắt bởi ngắt thấp.

+ Nếu viết hàm ngắt bình thường, không đòi hỏi ưu tiên gì thì CCS sinh mã để tất cả hàm ngắt đều là ngắt ưu tiên cao. Quy trình thực hiện ngắt sẽ như ngắt 1 cấp trên. #priority vẫn được dùng. Số chu kỳ thực thi từ 0008h đến khi nhảy vàothực thi hàm ngắt khoảng 30 chu kỳ, xong hàm ngắt tới khi kết thúc ngắt cũng mất khoảng 30 chu kỳ lệnh.

+ Để sử dụng ngắt 2 cấp, khai báo #device phải có high_ints = true. Và hàm ngắt nào muốn ưu tiên cao thì thêm FAST hay HIGH theo sau chỉ thị tiền xử lý hàm đó.

SVTH: Ngô Kế Sang Trang 79

Page 80: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Lưu ý : khi dùng FAST thì không nên dùng HIGH cho các ngắt khác thì mới có ý nghĩa và chỉ có duy nhất 1 ngắt được ưu tiên FAST, nhưng có thể có nhiều ngắt đặt ở mức HIGH.

Khai báo ngắt :Mỗi dòng VDK có số lượng nguồn ngắt ngắt khác nhau: PIC 14 có 14 ngắt,

PIC 18 có 35 ngắt. Muốn biết CCS hỗ trợ những ngắt nào cho VDK của bạn, mở file *.h tương ứng, ở cuối file là danh sách các ngắt mà CCS hỗ trợ nó. Cách khác là vào CCS -> View -> Valid interrupts, chọnVDK muốn xem, nó sẽ hiển thị danh sách ngắt có thể có cho VDK đó. Sau đây là danh sách 1 số ngắt với chức năng tương ứng:

#INT_GLOBAL: ngắt chung, nghĩa là khi có ngắt xảy ra, hàm theo sau chỉ thịnày được thựcthi, bạn sẽ không được khai báo thêm chỉ thị ngắt nào khác khisử dụng chỉ thị này. CCS không sinh bất kỳ mã lưu nào, hàm ngắt bắt đầungay tại vector ngắt. Nếu bật nhiều cờ cho phép ngắt, có thểbạn sẽ phải hỏi vòng để xác định ngắt nào. Dùng chỉ thị này tương đương viết hàm ngắt 1 cáchthủcông mà thôi, như là viết hàm ngắt với ASM vậy.

#INT_AD: chuyển đổi A /D đã hoàn tất, thường thì không nên dùng #INT_ADOF: I don’t know#INT_BUSCOL: xung đột bus#INT_BUTTON: nút nhấn ( không biết hoạt động thế nào )#INT_CCP1: có Capture hay compare trên CCP1#INT_CCP2: có Capture hay compare trên CCP2#INT_COMP: kiểm tra bằng nhau trên Comparator#INT_EEPROM: hoàn thành ghi EEPROM#INT_EXT: ngắt ngoài#INT_EXT1: ngắt ngoài 1#INT_EXT2: ngắtngoài#INT_I2C: có hoạt động I 2C#INT_LCD: có hoạt động LCD#INT_LOWVOLT: phát hiện áp thấp#INT_PSP: có data vào cổng Parallel slave#INT_RB: bất kỳ thay đổi nào trên chân B4 đến B7#INT_RC: bất kỳ thay đổi nào trên chân C4 đến C7#INT_RDA: data nhận từ RS 232 sẵn sàng#INT_RTCC: tràn Timer 0#INT_SSP: có hoạt động SPI hay I 2C#INT_TBE: bộ đệm chuyển RS 232 trống

SVTH: Ngô Kế Sang Trang 80

Page 81: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

#INT_TIMER0: một tên khác của#INT_RTCC#INT_TIMER1 : tràn Timer #INT_TIMER2: tràn Timer 2#INT_TIMER3: tràn Timer 3#INT_TIMER5: tràn Timer 5#INT_OSCF: lỗi OSC#INT_PWMTB: ngắt cuả PWM time base#INT_IC3DR: ngắt đổi hướng ( direct ) của IC 3#INT_IC2QEI: ngắt của QEI#INT_IC1: ngắt IC 1

+ Hàm đi kèm phục vụ ngắt không cần tham số vì không có tác dụng .+ Sử dụng NOCLEAR sau

#int_xxx để CCS không xoá cờ ngắt của hàm đó .+ Để cho phép ngắt đó hoạt động phải dùng lệnh enable_interrupts ( int_xxxx) và enable_interrupts (global) . + Khoá FAST theo sau

#int_xxxx để cho ngắt đó là ưu tiên cao , chỉ được 1 ngắt thôi , chỉ có ở PIC 18 và dsPIC .

1.4. Giải Thuật điều khiển 1.4.1. Bộ điều khiển PID

Mô hình điều khiển PID được cấu thành từ 3 thành phần, gọi tham số thao tác điều chỉnh là MV thay đổi theo thời gian t:

MV(t) = Pout + Iout + Dout (2.1)

Trong đó: Pout, Iout, Dout là các hàm đóng góp vào giá trị ngõ ra sau cùng của MV(t).

Hàm lỗi tại thời điểm t:

E(t) = SP – PV (2.2)

Trong đó: SP : Setpoint (giá trị mong muốn), PV: measurable output( giá trị đo được).

Proportional (hàm tỉ lệ)Hàm tỉ lệ giúp thay đổi mức điều khiển (output) tỉ lệ với giá trị lỗi hiện tại.

Pout = Kp x E(t) (2.3)

Kp: hằng số tỉ lệ, tham số dùng để tinh chỉnh. Hằng số Kp càng lớn thì sự điều chỉnh càng lớn khi E(t) càng lớn. Ngược lại, Kp càng nhỏ thì sẽ đáp ứng điều chỉnh nhỏ đối với lỗi.

Integral term ( hàm tích phân)

SVTH: Ngô Kế Sang Trang 81

Page 82: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hàm tích phân điều chỉnh mức điều khiển tương ứng với mức lỗi được tích lũy theo thời gian

Iout=K i x∫E( t)dt (2.4)

Ki: hằng số điều chỉnh hàm tích phân. Hàm tích phân giúp cho khả năng điều chỉnh nhanh chóng đạt đến mức mong muốn và hạn chế giá trị dư thừa lỗi còn hạn chế ở hàm tỉ lệ.

Derivative term ( hàm đạo hàm )Hàm đạo hàm đáp ứng với tốc độ thay đổi của lỗi, hay độ dốc lỗi, theo thời gian

Dout=K d xKE (t )

dt(t) (2.5)

Kd: hằng số điều chỉnh hàm đạo hàm. Hàm đạo hàm giúp nhanh chóng đạt được mức ổn định của giá trị mong muốn ( nếu chọn được Kd phù hợp ). Còn nếu Kd không phù hợp thì giá trị output sẽ giao động quanh giá trị mong muốn.

Bộ điều khiển PID có hàm truyền liên tục như sau:

G (s )=K P+K i

s+Kd s=K p[1+ 1

T 1 s+T d s ] (2.6)

SVTH: Ngô Kế Sang Trang 82

Page 83: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

PHẦN II BÀI THÍ NGHIỆM

Chương 1 BÀI THÍ NGHIỆM ĐO VÀ ĐOC ENCODER2.1.1. Mục Đích:

- Bài thí nghiệm này giúp sinh viên làm quen với cảm biến Encoder, một loại cảm biến dùng để xác định vận tốc góc của một đĩa quay có chia lỗ (hoặc rãnh hep) hay gặp trong công nghiệp. Đĩa quay có thể được gắn cứng với bánh xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác định vận tốc, vị trí góc.- Encoder được dùng rộng rãi trong các bài toán liên quan đến:

+ Việcđo tốc độ vòng quay của trục động cơ để phản hồi về các bộ điều khiển công suất động cơ. + Việc xác định độ dịch chuyển góc hay tịnh tiến của một đối tượng trong các máy CNC thông qua đếm số vòng quay của trục visme hoặc thước quang học tuyến tính.

- Các ứng dụng thực tế trong công nghiêp:+ Điều khiển băng tải dừng Motor ở đúng vị trí

Hình 2.1 Hình băng tải

+ Xác định vị trí tọa độ XY của bàn máy công cụ NC

SVTH: Ngô Kế Sang Trang 83

Page 84: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.2 Hình ban máy cnc+ Đo tọa độ góc cánh tay robot

Hình 2.3 Hình cánh tay robot+ Kiểm soát vị trí khoan của máy NC

SVTH: Ngô Kế Sang Trang 84

Page 85: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.4 Hình kiểm soát vị trí khoan của máy NC

2.1.2. Phân loại Encoder- Encoder tương đối (Incremental encoder): có tín hiệu tăng dần hoặc theo chu kỳ.

+ Encoder tương đối kiểu thẳng.+ Encoder tương đối kiểu quay.

- Encoder tuyệt đối (Absolute encoder): sử dụng đĩa theo mã nhị phân hoặc mã Gray.

2.1.2.1. Encoder tương đối (incremental encoder) của Autonic

SVTH: Ngô Kế Sang Trang 85

Page 86: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Bảng 2.1 Bảng mã số sản phẩm 2.1.2.1.1. Các thông số về sản phẩm:

- Nguồn cấp: + 5VDC ± 5%+ 12 - 24 VDC ± 5%

- Độ quân giải (Số xung / một vòng quay): 60, 100,120,125...- Số phase ngõ ra: A, B, Z...- Kiểu ngõ ra:

+ T: Ngõ ra cột chạm (Totem pole output)+ N: NPN Ngõ ra cực thu để hở (NPN open collector output)+ V: Ngõ ra điện áp (Voltage output)+ L: Dòng điều khiển ngõ ra (Line Driver output)

- Đường kính trục kết nối cơ khí: Ø6mm, Ø8mm, Ø10mm, Ø12mm- Đường kinh trong lỗ: Ø6, Ø8, Ø10, Ø12, Ø30, Ø32mm

2.1.2.1.2. Sơ đồ khối kết nối ngõ ra:

SVTH: Ngô Kế Sang Trang 86

Page 87: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.5 Sơ đồ điện ngõ ra tiêu chuẩn của Encoder Có các dạng sau:

- T: Ngõ ra cột chạm ( Totem pole output )- N: NPN Ngõ ra cực thu để hở (open collector output)- V: Ngõ ra điện áp (Voltage output)- L: Dòng điều khiển ngõ ra (Line Driver output)- T: Ngõ ra cột chạm (Totem pole output)

+ Dòng tải mức thấp: Lớn nhất. 20mA, Residual voltage: Lớn nhất 0.5VDC+ Dòng tải mức cao: Lớn nhất. 10mA, điện áp ngõ ra (Điện áp nguồn 5VDC).+ Nhỏ nhất. (Điện áp nguồn -2.0)VDC, điện áp ngõ ra (Điện áp nguồn 12 - 24VDC).+ Nhỏ nhất. (Điện áp nguồn -3.0)VDC.

- N: NPN Ngõ ra cự thu để hở (open collector output):+Dòng tải: Max. 30mA, Residual voltage: Lớn nhất 0.4VDC.

- V: Điện áp ngõ ra:+Dòng tải: Max. 10mA, Residual voltage: Max. 0.4VDC.

- L: Dòng điều khiển ngõ ra (Line Driver output).+ Dòng tải mức thấp: Lớn nhất. -20mA, Điện áp ngõ ra (Điện áp nguồn 5VDC).

SVTH: Ngô Kế Sang Trang 87

Page 88: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

+ Nhỏ nhất 2.5VDC, Điện áp ngõ ra (Điện áp nguồn 12-24VDC).+ Nhỏ nhất (Điện áp nguồn -3.0)VDC.

2.1.2.1.3. Tín hiệu ngõ ra:- Avà B lệch pha nhau 90º- Z được kích hoạt 1 lần sau mỗi vòng quay hoàn chỉnh.- Các tín hiệu đôi một ngược pha nhau

+ A và A

+ B và B+ Z và Z

Hình 2.6 Giản đồ sóng

SVTH: Ngô Kế Sang Trang 88

Page 89: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

2.1.2.1.4. Cáp kết nối với thiết bị nhận tin hiệu:

Hình 2.7 Sơ đồ chân ngõ ra

2.1.2.2. Encoder tuyệt đối (Absolute encoder): của Autonic

SVTH: Ngô Kế Sang Trang 89

Page 90: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Bảng 2.2 Mã số sản phảm dòng EP58

2.1.2.2.1. Các thông số về sản phẩm:- Nguồn cấp:

+ 5VDC ± 5%+ 24 - 12VDC ± 5%

- Kiểu ngõ ra: + BCD code+ Binary code+ Gray code

- Đường kính trục: Ø6, 8, 10mm- Đường kính trong lỗ: Ø58mm- Kiểu ngõ ra:

+ N: NPN Ngõ ra cự thu để hở (open collector output):Điện áp ngõ ra: nhỏ nhất (nguồn -1.5VDC), Dòng tải: lớn nhất: 32mA

+ P: PNP open collector output :Dòng tải: lớn nhất: 32mA Điện áp thừa (Residual voltage) lớn nhất: 1VDC.

SVTH: Ngô Kế Sang Trang 90

Page 91: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

2.1.2.2.2 Sơ đồ khối kết nối ngõ ra:

Hình 2.8 Sơ đồ đấu dây ngõ ra2.1.2.2.3. Tín hiệu ngõ ra:

a ) Mã hóa BCD:

Hình 2.9 Giản đồ xung mã BCD

SVTH: Ngô Kế Sang Trang 91

Page 92: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.10 Giản đồ xung mã BCD 10 bitb. Mã hóa binary:

Hình 2.11 Giản đồ xung mã nhị phân thường

SVTH: Ngô Kế Sang Trang 92

Page 93: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.12 Giản đồ xung mã nhị phân thường

SVTH: Ngô Kế Sang Trang 93

Page 94: Bao Cao Robot

LED thu pha B

LED thu pha A

LED phát pha B

LED phát pha A

LED thu pha Z

LED phát pha Z

Đĩa Encoder Lỗ lấp

trục quay

Chiều quay encoder

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

2.1.3.Tiến hành thí nghiệm lấy mẫu tín hiệu: (incremental encoder)2.3.1. Cấu tạo và nguyên tắc hoạt động của Encoder tương đối:

Hình 2.13. Encoder tương đối

Encoder thường có 3 kênh (3 ngõ ra) bao gồm kênh A, kênh B và kênh Z. Chú ý trong hình 1có một lỗ nhỏ bên phía trong của đĩa quay và một cặp phat-thu dành riêng cho lỗ nhỏ này, đó là kênh Z của encoder. Cữ mỗi lần đĩa quay được một vòng, lỗ nhỏ xuất hiện tại vị trí của cặp phát-thu, hồng ngoại từ nguồn phát sẽ xuyên qua lỗ nhỏ đến cảm biến quang, một tín hiệu xuất hiện trên cảm biến.Như thế kênh I xuất hiện một “xung” mỗi vòng quay của encoder.Bên ngoài đĩa quay được chia thành các rãnh nhỏ và một cặp thu-phát khác dành cho các rãnh này. Đây là kênh A của encoder, hoạt động của kênh A cũng tương tự kênh Z, điểm khác nhau là trong 1 vòng quay của encoder, có N “xung” xuất hiện trên kênh A. N là số rãnh trên đĩa và được gọi là độ phân giải (resolution) của encoder. Mỗi loại encoder có độ phân giải khác nhau, có khi trên mỗi đĩa chĩ có vài rãnh nhưng cũng có trường hợp đến hàng nghìn rãnh được chia. Để đo phải biết độ phân giải của encoder đang dùng.Độ phân giải ảnh hưởng đến độ chính xác của hệ thống khi điều khiển và cả phương pháp điều khiển. Tuy nhiên trên các encoder còn có một cặp thu phát khác được đặt trên cùng đường tròn với

SVTH: Ngô Kế Sang Trang 94

Page 95: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

kênh A nhưng lệch pha 90º. Bằng cách phối hợp kênh A và B sẽ biết chiều quay của động cơ.

Hình 2.14 Hai kênh A và B lệch pha trong encoder

- Xét trường hợp motor quay cùng chiều kim đồng hồ, tín hiệu “đi” từ trái sang phải. Hãy quan sát lúc tín hiệu A chuyển từ mức cao xuống thấp (cạnh xuống) thì kênh B đang ở mức cao.

- Ngược lại, nếu động cơ quay ngược chiều kim đồng hồ, tín hiệu “đi” từ phải qua trái. Lúc này, tại cạnh xuống của kênh A thì kênh B đang ở mức cao.

Như vậy, bằng cách phối hợp 2 kênh A và B chúng ta không những xác định được góc quay (thông qua số xung) mà còn biết được chiều quay của Encoder.Từ đó biết được góc quay, tốc độ quay cũng như chiều quay của đối tượng được kết nối cơ khí với Encoder.

SVTH: Ngô Kế Sang Trang 95

Page 96: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

2.1.3.2. Sơ đồ đo

2.1.3.2.1. Lắp mạch theo sơ đồ nguyên lý:

Hình 2.15 Hình đấu dây Encoder

Hình 2.16 Hình mô phổng Encoder

SVTH: Ngô Kế Sang Trang 96

Page 97: Bao Cao Robot

Thay đổi biên độ kênh 1Volt/div

Thay đổi biên độ kênh 2Volt/div

Thay đổi time/div

Tín hiệu 1Khz biên độ 2V chuẩn dùng để chỉnh đầu đo của kênh A, B

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

2.1.3.2.2. Xác định thông số đo:

Hình 2.17 Máy hiện sóng (máy Oscilloscope)

a) Chỉnh máy hiện sóng:Nối que đo của máy hiện sóng vào ngõ ra xung chuẩn trong máy hiện sóng để chỉnh que đo đúng với tín hiệu chuẩn để khi đo không bị sai. Các bước tiến hành như sau:- Kep que đo vào tín hiệu chuẩn trên máy hiện sóng chỉnh TIME/DIV bằng 0.1ms chỉnh VOLT/DIV bằng 2V chỉnh TRIG LEVER và HOLD để tín hiệu đứng lại, chỉnh VAR SWEEP sao cho Ton = 5 ô và Toff = 5 ô.b) Tiến hành đo:

- Nối mass chung cho chân GND của Encoder với GND của Nguồn và GND của máy hiện sóng như hình 1.15.- Nối chân ra của kênh A với kênh 1 của máy hiện sóng.- Nối chân ra của kênh B với kênh 2 của máy hiện sóng.- Điều chỉnh núm Volt/div của kênh 1 và 2 trên máy hiện sóng ở mức 2 volt/div- Cấp điện nguồn của từng mẫu thí nghiệm cho động cơ hoạt động.

SVTH: Ngô Kế Sang Trang 97

Page 98: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

- Điều chỉnh núm Time base sao cho 1 xung A và B hiển thị trọn ven trong màn hình hiển thị như hình 1.17.- Đếm số div của 1 xung A điền vào bảng kết quả.- Đếm số div của 1 xung B điền vào bảng kết quả.- Xác định xem Xung A nhanh pha hay chậm pha so với xung B điền vào bảng kết quả.- Dùng kênh A hoặc B để xác đinh tốc độ động cơ đang thí nghiệm theo công thức 1.2

+ Nếu đia chia lô có 1 lô:

[w]=[ R ]

[time ]=

[ R ][ P ]

∙[ P ][ ¿ ]

∙[¿ ]

[ time ] (1.1)

+ Nếu đia chia lô có N lô (độ phân giải của Encoder):

w= 1N

∙1a

∙1t

,( Rtime

) (1.2)

* Chú ý: time có thể là s, ms, us, h, …

Mẫu TN

Độ phân giải của Encoder

Điện áp cấp cho động cơ

Máy hiện sóngPha

A so với B

Chiều quay

Tốc độ quay

Kênh 1(nối

với A)

Kênh 2(nối

với B)Time base

N a b t dir w

[P/R] [V] [div/P] [div/P] [time/div] ccw(cw) [R/time]

ms/div R/min

1 100 3 6.4 6.4 2 Sớm ccw 46.875

2 100 -5 4 4 2 Trễ cw 75

3 100 9 2 2 2 Sớm ccw 150

4 100 -10 1.6 1.6 2 Trễ cw 187.5

5 100 12 6 6 0.5 Sớm ccw 200

Bảng 2.3 Bảng báo cáo đo Encoder

SVTH: Ngô Kế Sang Trang 98

Page 99: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Nếu đia chia lô có 100 lô: tính cho mẫu thí nghiệm 1 áp dụng công thức (1.1), (1.2)

w= 1100

∙1

6.4∙12=0.00078125 ,( R

ms)

w=0.00078125

1 0−3

60

=46.875 ,( Rmin )

2.1.4. Báo cáo thí nghiệm:Sinh viên tiến hành theo các bước như ở mục 3, xác định các giá trị và điền

vào bảng kết quả

Mẫu TN

Độ phân

giải của Encode

r

Điện áp cấp cho động cơ

Máy hiện sóng

PhaAso

với B

Chiều quay

Tốcđộ quay

Kênh 1

(nối với A)

Kênh 2(nối với

B)

Time base

N a b t dir w

[P/R] [V][div/P]

[div/P] [time/div] ccw(cw)[R/

time]

1

2

3

4

5

Bảng 2.4 Bảng mẫu báo cáoNhận xét:

SVTH: Ngô Kế Sang Trang 99

Page 100: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Chương 2 BÀI THÍ NGHIỆM ĐIỀU KHIỂN ĐỘNG CƠ DC DÙNG GIẢI THUẬT PI2.2.1. Mục đích :

Bài thí nghiệm này giúp sinh làm quen với bộ điều khiển PID, sinh viên sẽ khảo sát ảnh hưởng của các thông số trong bộ điều khiển PID số lên chất lượng hệ thống (độ vọt lố, thời gian quá độ, sai số xác lập) trong hai trường hợp điều khiển vận tốc và điều khiển vị trí động cơ DC. Ngoài ra, bài thí nghiệm còn khảo sát ảnh hưởng của thời gian lấy mẫu lên chất lượng hệ thống.Bộ điều khiển PID được sử dụng rất rộng rãi trong thực tế để điều khiển nhiều loại đối tượng khác nhau như nhiệt độ lò nhiệt, tốc độ động cơ, mực chất lỏng trong bồn chứa,… Lý do bộ điều khiển này được sử dụng rộng rãi là vì nó có khả năng triệt tiêu sai số xác lập, tăng đáp ứng quá độ, giảm độ vọt lố nếu các tham số bộ điều khiển được chọn lựa thích hợp. Do sự thông dụng của nó nên nhiều hãng sản xuất thiết bị điều khiển đã cho ra đời các bộ điều khiển thương mại rất thông dụng.

Trên cơ sở đặc tính vòng hở thu được từ kết quả thí nghiệm, sinh viên mô hình lại và tìm các thông số kp, ki, kd.

2.2.2. Các lấy mẫu tính hiệu từ cảm biến: Sử dụng vi điều khiển PIC18F4431 trên chíp này có tích hợp bộ đọc QEI

chuyên dùng đọc Encoder.

2.2.2.2. Cách lấy mẫu Encoder :Dùng PIC18F4431 lập trỉnh xuất xung PWM điều khiển động cơ tăng từ

20%PWM cho đến 90% dùng QEI độc Encoder ,thời gian lấy mẫu tính hiệu là 10ms, truyền lên máy tính. Ta có được các giá trị thực nghiệm .

Sau đây là code PIC18F4431 đọc QEI truyền lên máy tính thông qua RS232 #include <18F4431.h>#device *=16 adc=10#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (>4mhz for PCM/PCH) (>10mhz for PCD)#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O#use delay(clock=20000000) // Khai báo thạch anh sử dụng cho PIC#use rs232(baud=57600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) // Khai báo cho RS232

SVTH: Ngô Kế Sang Trang 100

Page 101: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

#define postscale 3 #define time_base 10#define period 332#define compare 0 #define compare_postscale 0 #define dead_time 0int8 value_hien_tai=0;//===Ngat timer 1 ===========#int_TIMER1 // chương chình ngắt timervoid TIMER1_isr(void) { value_hien_tai=qei_get_count();// đọc thanh ghi QEI qei_set_count(0);// reset thanh ghi QEI printf(" %u",value_hien_tai); // gửi tín hiệu ra RS232}void main(){ //== Khoi tao ngat ======== enable_interrupts(INT_IC2QEI); enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); //== Khai bao PWM ======= setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,

postscale,time_base, period,compare, compare_postscale,dead_time);

setup_power_pwm_pins(PWM_BOTH_ON,PWM_OFF,PWM_OFF,PWM_OFF);

// Khai báo QEI setup_qei(QEI_MODE_X2_RESET_ON_MATCH,QEI_FILTER_ENABLE_QEA|QEI_FILTER_ENABLE_QEB|QEI_FILTER_DIV_1,50000);set_power_pwm0_duty(0);delay_ms(5000);

SVTH: Ngô Kế Sang Trang 101

Page 102: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

set_power_pwm0_duty(200);setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //Khai báo timer 1 set_timer1(50000); // set timer 1 lên 10ms while(TRUE){ ;}}

Ta được số liệu thực tế:

TG lấy mẫu(ms)

20% 30% 40% 50% 60% 70% 80% 90%

0 0 0 0 0 0 0 0 0

10 5 11 17 22 28 33 41 40

20 9 22 34 47 58 68 81 88

30 14 24 38 54 68 80 93 107

40 15 27 42 56 72 86 101 116

50 16 28 45 59 75 90 105 122

60 13 27 44 61 77 92 107 123

70 13 26 45 61 78 93 106 126

80 12 27 44 60 77 93 108 125

90 13 27 45 60 78 93 106 124

100 13 27 44 59 77 92 106 124

110 13 27 45 60 77 93 106 124

120 14 28 45 60 78 93 108 125

130 13 27 45 60 77 94 106 126

140 13 27 46 61 77 94 107 124

150 10 27 44 60 77 93 106 125

160 14 27 45 61 77 93 106 125

170 12 27 45 60 77 93 107 124

180 14 27 45 60 77 94 107 125

190 14 27 45 61 77 94 107 125

200 15 29 46 60 77 94 107 125

210 13 27 45 60 77 94 107 125

SVTH: Ngô Kế Sang Trang 102

Page 103: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

220 13 27 46 61 77 94 107 125

230 12 28 46 61 77 94 108 125

240 12 29 45 61 78 94 107 125

250 13 27 46 61 77 94 109 125

260 13 27 46 61 77 94 107 126

270 15 28 46 60 78 94 108 124

280 13 27 45 61 77 94 107 125

290 14 26 46 62 77 93 107 125

300 12 28 45 60 78 94 107 124

Bảng 2.5 Bảng giá trị đo encoder

2.2.3. Giải Thuật điều khiển PID2.2.3.1. Khảo sát vòng hở để xác định mô hình động cơ bằng phương pháp thực nghiệm:

Dùng MATLAP vẽ đồ từ số liệu tìm được ở trên thị để xác định : Hàm tuyền tương đương cho hệ thống: với 20% PWM thời gian lấy mẫu 10ms

Hình 2.18 Đáp ứng (step) vòng hở của động cơ tại điện áp nguồn có PWM = 20%

Mô hình động cơ được xác định bằng hai điểm quy chiếu với hàm sau:

G (s )= K1+T ( s) (2.7)

Xác định : K, T

SVTH: Ngô Kế Sang Trang 103

Page 104: Bao Cao Robot

BỘ ĐIỀU KHIỂNPID

HÀM TRUYỀNHỆ THỐNG

TÍN HIỆUHỒI TIẾP

w(k) e(k) u(k) y(k)

+-

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

trong đó:T= 1.5(t2-t1) : Hằng số thời gian

K : Giá trị xác lập t2,t1 được xác định bằng phương pháp hai điểm quy chiếu như biểu

đồ trên t2 lấy 67%K t1 lấy 33%KHàm truyền được viết lại như sau:

G (s )= 131+16.07 (s ) (2.8)

2.2.3.2. Điều Khiển Vòng Kín2.2.3.2.1 Sơ đồ điều khiển:

Hình 2.19 Sơ đồ khối bộ điều khiển PIDBộ điêu khiển PID có hàm truyền dạng liên tục như sau:

G ( x )=KP+K i

s+ Kd s (2.9)

Biên đổi Z của nó như sau:

G (s )=K p+K i T

2+( z+1

z−1 )+ Kd

T ( z−1z ) (2.10)

Viết lại công thức như sau:

G (s )=(K p+K iT

2+

Kd

T )+(−K p+K i T

2−

2∗K d

T ) z−1+(K ¿¿d /T ) z−2

1−z−1 ¿ (2.11)

Đặt:

a0=K p+K iT

2+

Kd

T;a1=−K p+

K iT

2−

2∗Kd

T;a2=

Kd

2(2.12)

Suy ra

SVTH: Ngô Kế Sang Trang 104

Page 105: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

G (s )=a0+a1 z−1+a2+ z−2

1−z−1 (2.13)

Từ đó ta tính được tính hiệu điều khiển u(k) khi tín hieu vào e(k) như sau:

u (k )=G ( z )∗e (k )=a0+a1 z−1+a2+z−2

1−z−1 ∗e(k) (2.14)

Suy ra:u( k )=u (k−1)+a0∗e ( k )+a1( k−1)+a2(k−2 ) (2.15)

2.2.3.2.2. Các đặc trưng cơ bản của các bộ điều khiển P, I, DĐiều khiển tỉ lệ (Kp) làm giảm thời gian lên nhưng không loại bỏ sai số xác

lập. Đều khiển tích phân (Ki) sẽ làm loại bỏ sai số xác lập nhưng có thể làm đáp ứng quá độ sấu đi. Điều khiển vi phân (Kd) có tác dụng làm tăng sự ổn định của hệ thống làm giảm vọt lố và cải thiện đáp ứng quá độ. Ảnh hưởng của mỗi bộ điều khiển Kp, Ki, Kd lên hệ thống vòng kín được tốm tắt trong bản sau:

Đáp ứng vòng kín

Thời gian lên Độ vọt lốThời gian xác

lậpSai số xác lập

Kp Giảm Tăng Thay đổi nhỏ Giảm

Ki Giảm Tăng Tăng Loại bỏ

Kd Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ

Bảng 2.6 Bảng đặc trưng của Ki, Kp ,Kd

Hàm truyền cho bộ điều khiển PI: dùng lập trình cho PIC18F4431:

uk +1=uk+K p (ek +1−ek )+K i ΔT (ek) (2.16)

Sử dụng SISO Tool trong Matlap để tìm kp,ki cho hệ thống:Code Matlap:

K = 13/2 %20% xung K/2 đùng QEI ở chế độ nhân 2t1 = 8.58/2 % ms t1/2 đùng QEI ở chế độ nhân 2t2 = 19.29/2 % mst2/2 đùng QEI ở chế độ nhân 2T = 1.5*(t2-t1) % msL = 0 %t2 - T % ms% Khai bao ham G%G=zpk([],[-0.0669],63/14.94,'inputdelay',0)G=zpk([],[-(1000/T)],1000*K/T,'inputdelay',(L/1000))%G=tf([1000*63/14.94],[1 1000/14.94],0.001)

SVTH: Ngô Kế Sang Trang 105

Page 106: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

%Bocam bienH=tf(1,1) % hồi tiếp 1:1% Kich hoat sisotoolsisotool(G);

2.2.3.2.3 Các bước tìm kp, ki:a. Chạy code Matlap

Hình 2.20 Chạy SISOtool trên Matlap

SVTH: Ngô Kế Sang Trang 106

Page 107: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.21 Biểu đồ Bode khi chưa chỉnh PI

SVTH: Ngô Kế Sang Trang 107

Page 108: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

b. Trên của sổ Control and Estimation Tool Manager Thêm Pole/Zero:

Hình 2.22 Thêm cực vào hàm C

SVTH: Ngô Kế Sang Trang 108

Page 109: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Thêm Zero:

Hình 2.23 Thêm Zero vào hàm C

SVTH: Ngô Kế Sang Trang 109

Page 110: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Chọn như dưới: đề quan sát đáp ứng step của hệ thống:

Hình 2.24 Kiểm tra đáp ứng step của hàm G

SVTH: Ngô Kế Sang Trang 110

Page 111: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.25 Biểu đồ Bode của G trước khi chỉnh PI

SVTH: Ngô Kế Sang Trang 111

Page 112: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.26 Đáp ứng Step của G trước khi chỉnh PI

SVTH: Ngô Kế Sang Trang 112

Page 113: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Sừ dụng Automatic Tuning để chỉnh tự động: Design method: PID Tuning PI chọn Update Compensator ta được dạng đồ thị như sau:

Hình 2.27 PI Automatic Tuning

SVTH: Ngô Kế Sang Trang 113

Page 114: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.28 Biểu đồ Bode của G sau khi chỉnh PI

SVTH: Ngô Kế Sang Trang 114

Page 115: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.29 Đáp ứng Step của G sau khi chỉnh PI

SVTH: Ngô Kế Sang Trang 115

Page 116: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.30 Đưa hàm C (control PI) ra Workspace

Chuyển Hàm C (hàm Control PI) ra Workspace: File Export ,chon như hình vẽ:Trên Workspace : đánh lệnh để tìm kp,ki của C ( Control PI )>> C >>tf(C)>>pid(C)Ta được như sau:>> CZero/pole/gain:0.072799 (s+422.2)------------------s>>tf(C)

SVTH: Ngô Kế Sang Trang 116

Page 117: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Transfer function:0.0728 s + 30.73----------------s>>pid(C)Continuous-time PI controller in parallel form: 1 Kp + Ki * ---

swith Kp = 0.072799, Ki = 30.7327Tương tự cho các số liệu còn lại ta cũng tìm được các K p, Ki còn lại ứng với các mức 30%, 40%, 50%, 60%, 70%, 80%, 90%.

Thông số bộ điều khiển PI

20% PWM

30% PWM

40% PWM

50% PWM

60% PWM

Kp 0.072799 0.035051 0.021031 0.015773 0.012291

Ki 30.7327 19.0022 10.577 8.613 6.3292

Độ vọ lố (%)

11.6 11.6 11.6 11.6 11.6

Sai số xác lập

1.12 1.12 1.12 1.12 1.12

Thời gian xác lập (s)

0.0348 0.0271 0.0292 0.0269 0.0286

Thời gian tăng (s)

0.0104 0.00813 0.00887 0.00807 0.00856

Thông số bộ điều khiển PI

70%PWM

80%PWM

90%PWM

Kp 0.010068 0.0088447 0.0075711

Ki 4.9695 4.4188 3.8636

Độ vọ lố (%)

11.6 11.6 11.6

Sai số xác 1.12 1.12 1.12

SVTH: Ngô Kế Sang Trang 117

Page 118: Bao Cao Robot

PIC18F4431MCU

Microcontroller

Khối hiển thị LCD 16x2

Khối nhập (bàn phím)

Khối công suất điều khiển động cơ

Cảm biến Encoder

Khối nguồn12 và 5VDC

DC motor

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

lập

Thời gian xác lập (s)

0.0298 0.0294 0.0288

Thời gian tăng (s)

0.00893 0.00883 0.00864

Bảng 2.7 Bảng giá trị tính Ki, Kp, Kd

2.2.3.2.4 Sơ đồ khối hệ thống:

Hình 2.31 Sơ đồ khối hệ thống

2.2.3.2.5 Lưu đồ giải thuật: Giải thuật PI

SVTH: Ngô Kế Sang Trang 118

Page 119: Bao Cao Robot

Khởi tạo cho hệ thống

Nhập giá trị vận tôc

Đọc encoder

PI control

|Error| ≤ %5|setpoint|

NO

YES

Xuất ra LCD

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 2.32 Lưu đồ giải thuật PI

2.2.4. Báo cáo thí nghiệm:Sinh viên tiến hành theo các bước như ở mục 2.3.3.2, xác định các giá trị và

điền vào bảng kết quả

Thông số bộ điều khiển PI

20%PWM

30%PWM

40%PWM

50%PWM

60%PWM

SVTH: Ngô Kế Sang Trang 119

Page 120: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Kp

Ki

Độ vọ lố (%)

Sai số xác lập

Thời gian xác lập (s)

Thời gian tăng(s)

Thông số bộ điều khiển PI

70% PWM

80% PWM

90% PWM

Kp

Ki

Độ vọ lố (%)

Sai số xác lập

Thời gian xác lập (s)

Thời gian tăng (s)

Bảng 2.8 Bảng giá trị tính Ki, Kp, Kd

Tính toán và nhận xét:

PHẦN IIIỨNG DỤNG ĐIỀU KHIỂN ROBOT LOẠI DI ĐỘNG

SVTH: Ngô Kế Sang Trang 120

Page 121: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.1.Mục đích: Ứng dụng này giúp sinh viên hình dung về công nghệ robot nói chung và

robot loại di động nói riêng cũng như cách lấy mẫu tín hiệu từ encoder và một trong số các cách thức mô hình hóa động cơ để từ đó xây dựng giải thuật điều khiển cho robot.

3.2 Cấu tạo và hoạt động của Mobile Robot: Cấu trúc chung gồm 3 phần:

Cảm biến: Một bộ phận được ví như mắt của Robot, có nhiều loại cảm biến như cảm biến quang, cảm biến hồng ngoại, cảm biến siêu âm, cảm biến hình ảnh…

Cơ cấu chấp hành: Một bộ phận dùng để thực hiện mọi chuyển động của Robot như là động cơ, tay máy…Động cơ được lựa chọn là DC 12V, tốc độ đầu ra: 100 vòng/phút.

Bộ vi xử lý: bộ não điều khiển mọi hoạt động của Robot.

3.3 Thiết kế cơ khí:

3.3.1 Loại dùng bánh xe: Ưu điểm: đơn giản, dễ thiết kế, phù hợp với di chuyển trên mặt phẳng, linh động trong việc rẽ, và có khả năng xoay vòng rất tốt… Nhược điểm: không phù hợp với bề mặt trơn, nghiêng Loại 3 bánh: dễ cân bằng Chọn động cơ: Dùng động cơ DC hoặc Step đều là vòng hở và dễ sai số,

nên dùng động cơ DC Servo với cảm biến là Encoder là ưu việt và dễ điều khiển hơn. Nếu dùng biến trở thì có hiện tượng không tuyến tính giữa giá trị điện áp đầu ra và đầu vào, nếu dùng loại tuyến tính thì giá thành rất đắt. Còn nếu dùng thước quang thì cách sử dụng đơn giản nhưng giá thành thì cao.

Nên ta dùng động cơ DC + Encoder giá thành rẻ. Cơ cấu truyền động dùng đai răng.

3.3.2 Tính bộ truyền đai răng:Mudule của răng đai được tính theo công thức sau:

m=353√ P1

n1

(3.1)

P1: Công suất trên bánh đai chủ động[Kw]

n1: vận tốc quay của bánh đai chủ động [vg/ph]

Số răng của bánh đai:

SVTH: Ngô Kế Sang Trang 121

Page 122: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

z2=u∗z1 (3.2)

u=n1

n2

=z2

z1(3.3)

Khoảng cách truc a được chọn theo điều kiện sau:

amin≤ a≤ amax (3.4)

amin=0.5 m ( z1+z2)+2m (3.5)

amax=2 m(z¿¿1+z2)¿ (3.6)

Số răng đai:

zd=2ap

+z1+z2

2+

( z1−z2 )2 p

40 a(3.7)

Chiều dài đai:

Ld=π m zd (3.8)

Sau khi tính Ld ta tính lại khoảng cánh trục theo công thức:

a=14

λ+ 14

√ λ2−8∆2(3.9)

λ=Ld−p ( z1+ z2)

2(3.10)

Δ=mz1+z2

2(3.11)

Số răng đồng thời trên một bánh đai:

z0=z1 α1

3600 (3.12)

α 1=180−m ( z1−z2) 57.3

2(3.13)

3.3.3 Thiết kế mô hình 3D trên Solidword 2010

SVTH: Ngô Kế Sang Trang 122

Page 123: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.1 Mô hình Robot nhìn từ dưới lên

SVTH: Ngô Kế Sang Trang 123

Page 124: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.2 Mô hình Robot nhìn từ trên xuống3.3.4 Tính toán động học cho robot

Mô hình động học của Robot:

Hình 3.3 Mô hình động học của Robot

SVTH: Ngô Kế Sang Trang 124

Page 125: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Trong đó:

θ là phương của xe.vL là vận tốc của bánh xe trái theo phương chuyển đông của xe θ.

vR là vận tốc của bánh xe phải theo phương chuyển động của xe θ.L là chiều rộng của xe.

D là bán kính bánh xe.xm, ym là hệ tọa độ tham chiếu gắn với xe.

U là vận tốc theo phương tiến của xe. X, Y là hệ tọa độ cố định.

Ta cóvL=D2

ωL và vR=D2

ωR trong đó ωL và ωR là vận tốc của 2 trục bánh

xe trái và phải.

Ta có:

[ xyθ ]=[co sθ 0

sinθ 00 1][Uθ ] (3.14)

Trong đó: x và y là vận tốc của robot theo phương x và y và θ là vận tốc góc của robot.

mỗi bánh xe được điều khiển độc lập bằng 1 động cơ DC Servo. θcó giá trị dương khi động cơ quay ngược chiều kim đồng hồ và có giá trị âm khi cùng chiều kim đồng hồ. Ta có mối quan hệ giữa vận tốc dài và vận tốc góc của xe với vận tốc của bánh xe như sau:

[Uθ ]=[ 1/2 1/2−1/ L 1/ L][ vL

vR] (3.15)

Suy ra:

[ xyθ ]=[cosθ 0

sinθ 00 1] [ 1 /2 1/2

−1 /L 1/ L][ vL

v R]=[

12

cosθ12

cosθ

12

sinθ12

sinθ

−1L

1L

][ vL

v R] (3.16)

Suy ra:

[ vL

v R]=[cosθ sin θ−1L

cosθ sin θ1L

][ xyθ ] (3.17)

SVTH: Ngô Kế Sang Trang 125

Page 126: Bao Cao Robot

Khối giao tiếp với PC

RS232

MicrocontrollerPIC18F4431

Master

MicrocontrollerPIC18f4431

Slave trái

MicrocontrollerPIC18f4431Slave phải

Motor DC+ encoder

Khối hiển thịLCD 16x2

Khối nhập số liệu (key 4x4)

Motor DC+ encoder

I2C

Mạch công suất điều khiển động cơ Mạch công suất điều khiển động cơ

Khối nguồn 12VDC,5VDC

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.3.5 Thiết kế mạch điều khiển3.3.5.1 Sơ đồ khối mạch điều khiển:

SVTH: Ngô Kế Sang Trang 126

Page 127: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.4 Sơ đồ khối kết nối điều khiển3.3.5.2 Thiết kế mạch công suất điều khiển động cơ DC dùng IC LM18200:

a) Mạch nguyên lý:

SVTH: Ngô Kế Sang Trang 127

Page 128: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.5 Sơ đồ mạch công suất điều khiển động cơ

b) Mạch in:

Hình 3.6 Sơ đồ mạch in mạch công suất điều khiển động cơ

SVTH: Ngô Kế Sang Trang 128

Page 129: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.3.5.3 Thiết kế mạch PIC Slave điều khiển motor DC + Encodera) Mạch nguyên lý:

Hình 3.7 Sơ đồ mạch PIC18F4431 điều khiển động cơ

SVTH: Ngô Kế Sang Trang 129

Page 130: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

b) Mạch in:

Hình 3.8 Sơ đồ mạch in của PIC18F4431 điều khiển động cơ 3.3.5.4 Thiết kế mạch PIC Master :a) Mạch nguyên lý:

SVTH: Ngô Kế Sang Trang 130

Page 131: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.9 Mạch nguyên lý PIC18F4431Master

b) Mạch in:

Hình 3.10 Mạch in PIC18F4431 Master

SVTH: Ngô Kế Sang Trang 131

Page 132: Bao Cao Robot

Khởi tạo cho hệ thống

Kiểm tra giá trị vận tôc

Đọc encoder

PI control

|Error| ≤ %5|setpoint|

NO

YES

Nhận giá trị từ Master

Gửi giá trị đến Master

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.4. Lưu đồ giải thuật3.4.1 Lưu đồ giải thuật cho PIC slave

Hình 3.11 Lưu đồ giải thuật cho PIC slave

SVTH: Ngô Kế Sang Trang 132

Page 133: Bao Cao Robot

Khởi tạo cho hệ thống

Giá trị nhập từ máy tính qua RS232

Xử lý dữ liệu truyền cho Slave1, Slave2

Slave 2 điều khiển bánh phải

Slave1 điều khiển bánh trái

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.5.2 Lưu đồ giải thuật cho PIC Master

Hình 3.12 Lưu đồ giải thuật cho PIC Master

SVTH: Ngô Kế Sang Trang 133

Page 134: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

3.5. Mô hình thực tế:

Hình 3.13 Mô hình thực tế nhìn từ bên trái qua

SVTH: Ngô Kế Sang Trang 134

Page 135: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.14 Mô hình thực tế nhìn từ dưới lên

Hình 3.15 Mô hình thực tế nhìn từ trên xuống

SVTH: Ngô Kế Sang Trang 135

Page 136: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Hình 3.16 Mô hình thực tế có thêm bộ điều khiển bằng tay

SVTH: Ngô Kế Sang Trang 136

Page 137: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

PHẦN IV KẾT LUẬN

4.1 THEO NHƯ MỤC TIÊU ĐỀ RA CỦA LUẬN VĂN TỐT NGHIỆP4.1.1. Bài thí nghiệm đo và độc Encoder.

a. Mục đích.b. Phân loại.c. Mô hình.d. Cách lấy mẫu tín hiệu từ cảm biến.e. Báo cáo.

4.1.2. Bài thí nghiệm điều khiển động cơ DC dùng giải thuật PID.a. Mục đích.b. Mô hình.c. Cách lấy mẫu tín hiệu từ cảm biến.d. Giải thuật điều khiển. e. Báo cáo.

4.1.3. Bài thí nghiệm điều khiển Robot loại di động:a. Mục đích. b. Mô hình.c. Cách lấy mẩu tín hiệu từ cảm biến.d. Giải thuật điều khiển.e. Báo cáo.

4.2 THỰC HIỆN ĐƯỢC- Khối lượng công việc đã hoàn thành:

+ Tìm hiểu và vận hành vi điều khiển PIC họ 18F4431.+ Hình thành bài thí nghiệm.+ 2 bài thí nghiệm 1.1 và 1.2 bài thí nghiệm 1.3 riêng phần giải thuật điều khiển đã lập trình PI cho hai trục.

- Khối lượng công việc chưa hoàn thành:+ Lập trình phối hợp 2 trục.

- Kế hoạch phát tiển tiếp tục:+ Tiếp tục hoàn tất các mục ở phần các mục tiêu ở mục 1.3, có thể phát triển thêm đọc SD card, thêm Camera , cảm biến khoản cách, định vị bằng GPS, thêm phần giải thuật điều khiển tối ưu, giả thuật về đường đi.

- Ứng dụng:

SVTH: Ngô Kế Sang Trang 137

Page 138: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Có thể ứng dụng mô hình robot vào robot hàn MIG MAG, Robot dò đường, robot lau nhà, robot thám hiểm, robot giám sát

SVTH: Ngô Kế Sang Trang 138

Page 139: Bao Cao Robot

GVHD: TS. Trần Hải Nam KHOA: ĐIỆN TƯ – TỰ ĐỘNG HÓA

Tài liệu tham khảo

Sách:[1] GS TSKH. Nguyên Văn Khang, TS Chu Anh Mỳ (Cơ Sở Robot Công nghiệp), NXB giáo dục Việt Nam, năm 2011.[2] TS Lê Ngọc Bích, KS Võ Duy Thanh Tâm, KS Đỗ Lê Thuận (SolidWork 2010 Dành Cho Người Tự Học) NXB Hồng Đức, năm 2011.[3] Datasheet PIC18F4431. [4] TS. Nguyễn Văn Giáp (Luận văn Robot tự hành và điều khiển song song) Trường Đại Học Bách Khoa TP.HCM.[5] Help CCS V4.130.

Tạp chí:EEtimes-India Junuary 2006 www.eetindea.com Digital PID Controllers, Dr.Varodom Toochinda www.controlsystemslab.com

Website:www.avr.comwww.dientumaytinh.comhttp://www.ccsinfo.comhttp://www.microchip.com

SVTH: Ngô Kế Sang Trang 139