Luận văn Ứng dụng sóng cao tần vào điều khiển robot

LUẬN VĂN TỐT NGHIỆP ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT Ngày nay khoa học-kỹ thuật và công nghệ phát triển một cách nhanh chóng về mọi mặt, đặt biệt là ngành điện- điện tử viễn thông, nó đã góp một phần không thể thiếu trong cuộc sống của mỗi chúng ta. Đặc biệt với sự ra đời của kỹ thuật vô tuyến, nó đã giúp cho cuộc sống chúng ta tiện nghi, thoải mái hơn và giúp cho con người thâm nhập, khám phá, chinh phục những nơi không thể trực tiếp đặt chân đến được. Nhiều ứng dụng của kỹ thuật vô tuyến vào các lĩnh vực nghiên cứu, sản xuất, đời sống đã góp phần rất hiệu quả và làm thay đổi mạnh mẽ đời sống của toàn nhân loại. Hiện nay kỹ thuật vô tuyến đã được ứng dụng hầu hết nhiều quốc gia trên thế giới. Nó được ứng dụng để truyền tín hiệu, truyền dữ liệu, điều khiển từ xa Ở nước ta kỹ thuật vô tuyến cũng đã được sử dụng rộng rãi song vẫn còn hạn chế vì sự phức tạp ở khâu thi công, khoảng cách truyền, sự chính xác, vấn đề nhiễu nên hiệu quả đạt được chưa cao. Tuy nhiên với lòng đam mê, ham học hỏi, tính sáng tạo ở lĩnh vực mới này, bên cạnh đó bản thân em khi thi công luận văn cũng mong muốn tạo ra một sản phẩm có tính ứng dụng, đồng thời cũng là dịp đánh giá lại kiến thức đã học trong suốt quá trình học tập trên giảng đường đại học. Em nhận thấy việc ứng dụng kỹ thuật vô tuyến vào việc điều khiển robot là một đề tài hết sức lý thú nên em quyết định chọn đề tài “ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT” để thiết kế và thi công. MỤC LỤC Chương 1: DẪN NHẬP 1.1. ĐẶT VẤN ĐỀ . 1 1.2. TẦM QUAN TRỌNG CỦA ĐỀ TÀI . 1 1.3. YÊU CẦU VÀ ĐẶC TÍNH KỸ THUẬT . 2 1.4. MỤC ĐÍCH NGHIÊN CỨU . 3 Chương 2: CÁC VẤN ĐỀ LÝ THUYẾT LIÊN QUAN VÀ LINH KIỆN SỬ DỤNG 2.1. HỆ THỐNG ĐIỀU KHIỂN TỪ XA . 5 2.1.1. GIỚI THIỆU 5 2.1.2. HỆ THỐNG ĐIỀU KHIỂN TỪ XA BẰNG SÓNG VÔ TUYẾN . 5 2.1.3. LỰA CHỌN PHƯƠNG ÁN THIẾT KẾ . 8 2.2. LÝ THUYẾT VỀ ĐIỀU CHẾ 8 2.2.1. GIỚI THIỆU 8 2.2.2. PHƯƠNG PHÁP ĐIỀU CHẾ FSK (frequency shift keying) . 9 2.2.2.1. Phương pháp hoạt động của phương pháp FSK 9 2.2.2.2. Phương trình toán học của FSK . 10 2.3. NHỮNG LINH KIỆN SỬ DỤNG 11 2.3.1. IC THU PHÁT RF:HM-TR 915 . 11 2.3.1.1. Giới thiệu . 11 2.3.1.2. Các đặc điểm kỹ thuật 11 2.3.1.3. Các lĩnh vực ứng dụng . 11 2.3.1.4. Mạch và sơ đồ chân . 12 2.3.1.5. Chức năng các chân . 13 2.3.1.6. Các thông số cơ bản . 14 2.3.1.7. Thiết lập hoạt động 14 2.3.2. VI ĐIỀU KHIỂN HỌ 8051 . 18 2.3.2.1. Dải đếm lập trình được PCA (Programmable Counter Array) 18 2.3.2.2. Timer 2 27 2.3.3. IC GIAO TIẾP MAX232 34 2.3.4. CÁC PHẦN TỬ ĐIỀU KHIỂN CÁCH LY 34 2.3.4.1. Opto Transistor (4N35) 34 2.3.4.2. Relay 12V 35 Chương 3: MẠCH ĐIỆN ĐIỀU KHIỂN ROBOT 3.1. TỔNG QUÁT VỀ PHẦN CỨNG . 36 3.1.1. SƠ ĐỒ KHỐI MẠCH PHÁT VÀ CHỨC NĂNG TỪNG KHỐI . 37 3.2. KHỐI NGUỒN 44 3.3. MODULE MCU . 40 3.4. MODULE CHUYỂN ĐỔI TÍN HIỆU 41 3.5. MODULE BÀN PHÍM . 42 3.6. MODULE LÁI ĐỘNG CƠ 43 3.7. KHỐI CÁCH LY NGUỒN TẢI . 44 3.8. KHỐI KHUẾCH ĐẠI DÒNG ÁP IC2803 44 3.9. BÀN PHÍM ĐIỀU KHIỂN BẰNG TAY 45 3.10. LAYOUT CHO MẠCH ĐIỀU KHIỂN ROBOT 47 3.10.1. TOP LAYER 47 3.10.2. BOT LAYER 48 3.10.3. SST LAYER (LỚP LINH KIỆN) . 49 3.10.4. MẠCH THỰC TẾ 50 3.10.5. ROBOT SAU KHI THI CÔNG 51 3.11. LAYOUT CHO MẠCH BẰNG TAY 52 3.11.1. TOP LAYER (MẠCH ĐIỀU KHIỂN BẰNG TAY) . 52 3.11.2. BOT LAYER (MẠCH ĐIỀU KHIỂN BẰNG TAY) 52 3.11.3. MẠCH THỰC TẾ 53 3.11.4. MẠCH SAU KHI THI CÔNG 54 3.12. GIỚI HẠN ĐỀ TÀI 55 Chương 4: PHẦN MỀM VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN 4.1. PHẦN MỀM DOCK LIGHT 56 4.2. CHƯƠNG TRÌNH ĐIỀU KHIỂN 56 4.2.1. CHƯƠNG TRÌNH CHÍNH Main.c 56 4.2.2. HEADER declare.h . 57 4.2.3. HEADER define_sfr_const.h . 58 4.2.4. MODULE init_PCA_timer.c . 60 4.2.5. MODULE delay_func.c . 61 4.2.6. MODULE init_UART.c 62 4.2.7. MODULE process_motor.c . 63 4.2.8. MODULE moving.c 65 4.2.9. MODULE action.c 66

pdf80 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2314 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Ứng dụng sóng cao tần vào điều khiển robot, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tại chân CEXn. 4 CAPNn Capture Negative. CAPNn = 1 sẽ cho phép capture khi có cạnh xuống tại chân CEXn. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 21 SVTH: Lê Trung Hiếu 3 MATn Match. Nếu MATn = 1, khi giá trị bộ đếm PCA (CH,CL) bằng giá trị nạp trong thanh ghi (CCAPnH,CCAPnL) sẽ làm cho bit CCFn trong thanh ghi CCON lên 1, nhờ đó tạo ra ngắt. 2 TOGn Toggle. Nếu TOGn = 1, khi giá trị bộ đếm PCA (CH,CL) bằng giá trị nạp trong thanh ghi (CCAPnH,CCAPnL) sẽ làm cho ngõ ra của module CEXn đổi trạng thái. 1 PWMn Pulse Width Modulation. PWMn = 1 sẽ làm cho CEXn là một ngõ ra điều xung. 0 ECCFn Enable CCFn Interrupt. ECCFn = 1, mỗi khi CCFn trong thanh ghi CCON =1 sẽ tạo ra ngắt. Bảng 2.9: Tóm tắt chức năng các bit của thanh ghi CCAPMn Sử dụng các ngắt PCA Các bit cờ ngắt PCA tập trung hoàn toàn trong thanh ghi CCON. Bit CF = 1 khi bộ đếm tràn, CCFn = 1 khi có capture/match tại CEXn. Muốn sử dụng được ngắt cần phải set bit cho phép ngắt toàn bộ (IE.7, ký hiệu EA), cho phép ngắt PCA (IE.6, kí hiệu EC) và set các bit cho phép từng module tạo ngắt (ECF, ECCFn). Hình 2.16: Các bit cờ ngắt của PCA ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 22 SVTH: Lê Trung Hiếu Các chế độ hoạt động của module PCA PCA 16-bit Capture Để có thể sử dụng chức năng Capture, một trong hai bit hoặc cả hai bit CAPPn và CAPNn trong thanh ghi CCAPMn phải được set lên 1. Các chân CEXn, được lấy mẫu và khi có cạnh lên/ cạnh xuống tại chân CEXn, 8051 sẽ nạp giá trị (CH,CL) vào cặp thanh ghi (CCAPnH,CCAPnL), đồng thời nó cũng làm cho bit CCFn lên 1. Hình 2.17: PCA hoạt động ở chế độ 16-bit Capture Trong trường hợp bit cho phép ngắt ECCFn trong thanh ghi CCAPMn được set lên 1, mỗi lần capture sẽ tạo ra ngắt. PCA 16-bit timer Các module PCA cũng có thể được sử dụng như những timer bằng cách set hai bit ECOMn và MATn thuộc thanh ghi CCAPMn lên 1. Giá trị của timer PCA (CH,CL) được so sánh với giá trị cặp thanh ghi của module (CCAPnH,CCAPnL). Khi 2 giá trị này bằng nhau sẽ làm cho các bit CCFn lên 1. Nếu bit ECCFn = 1 sẽ tạo ra ngắt ở module tương ứng. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 23 SVTH: Lê Trung Hiếu Hình 2.18: PCA hoạt động ở chế độ 16-bit timer High-speed output Ở chế độ này, ngõ ra CEXn được điều khiển bởi PCA. Khi giá trị (CH,CL) bằng giá trị (CCAPnH,CCAPnL) sẽ làm cho chân CEXn đổi trạng thái. Chế độ này được kích hoạt bằng cách set các bit ECOMn, MATn, TOGn lên 1. Cách tạo ngắt tương tự chế độ PCA 16-bit timer. Hình 2.19: PCA hoạt động ở chế độ High-Speed Output ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 24 SVTH: Lê Trung Hiếu Pulse Width Modulator Tất cả các module đều có tần số ra như nhau do chỉ có một timer PCA. Duty cycle của chuỗi xung ra phụ thuộc giá trị nạp cho thanh ghi CCAPnL. Khi giá trị của thanh ghi CL nhỏ hơn giá trị lưu trong CCAPnL, ngõ ra CEXn sẽ ở mức thấp. Ngược lại, nếu lớn hơn hay bằng, ngõ ra CEXn sẽ ở mức cao. Khi CL bị tràn từ FF sang 00, CCAPnL được nạp lại giá trị từ CCAPnH. Để dùng được chức năng PWM, bit ECOM và bit PWM của thanh ghi CCAPMn phải được set lên 1. Hình 2.20: PCA hoạt động ở chế độ Pulse Width Modulator Ví dụ: Điều khiển động cơ chạy trong 10s, có điều xung với duty cycle là 50% /*-------------------------------------------------------------------*- This program is to creat a modulated pulse with duty cycle 50%. The modulated pusle is used to control a motor in 10 seconds, then stop the motor. Use module 1 from the PCA. -*-------------------------------------------------------------------*/ #include //Define new registers for P89V51RD2 microcontroller void PCA_Init(); void Delay(unsigned char); sfr Motor = 0xFB; // Name the CCAP1H register as Motor // CCAP1H has the address 0xFB void main(void) { PCA_Init(); Motor = 128; // Duty cycle = 128/256 = 50% ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 25 SVTH: Lê Trung Hiếu Delay(10); Motor = 0; } /*-----------------------------------------------------*/ void PCA_Init(void) { CMOD = 0; CCON &= 0x40; CCAPM1 = 0x42; CR = 1; } void Delay(unsigned char sec) { unsigned char x; unsigned int y; for(x=0;x<=sec;x++) { for(y=0;y<=18000;y++); // This loop remains appr 1s } } Watchdog timer (chỉ có ở module 4): Bộ định thời watchdog trên chip có sẵn trong PCA giúp cải thiện độ tin cậy của hệ thống mà không cần thêm chip đếm. Các bộ định thời watchdog trở nên hữu ích đối với các hệ thống dễ bị ảnh hưởng bởi nhiễu, các gai xung khi cấp điện hoặc do sự phóng tĩnh điện. Module 4 của PCA là module duy nhất có thể được lập trình thành một watchdog. Tuy nhiên module này cũng có thể được sử dụng cho các chế độ khác nếu ta không cần đến watchdog. Hình sau đây trình bày cách thức hoạt động của watchdog. Người sử dụng nạp trước một giá trị 16-bit vào các thanh ghi so sánh (CCAPnH,CCAPnL). Giống như các chế độ so sánh khác, giá trị 16-bit này được so sánh với giá trị bộ định thời PCA (CH,CL). Khi hai giá trị này bằng nhau, reset bên trong sẽ được tạo ra. Điều này không làm chân RST nhảy lên mức cao. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 26 SVTH: Lê Trung Hiếu Hình 2.21: PCA Watchdog Timer Để không tiến đến trạng thái RESET, người sử dụng có 3 tùy chọn: 1. Thay đổi có định kỳ giá trị so sánh để sẽ không bao giờ trùng với giá trị bộ định thời PCA. 2. Thay đổi có định kỳ giá trị bộ định thời PCA để không bao giờ trùng với giá trị so sánh. 3. Không cho phép watchdog bằng cách xóa bit WDTE trước khi hai giá trị trùng nhau một lần nữa và sau đó sẽ được kích hoạt lại. Hai tùy chọn đầu tiên đáng tin cậy hơn do bộ định thời watchdog không bao giờ bị disable hoàn toàn trong lựa chọn 3. Khi đó, nếu bộ đếm chương trình bị lỗi, sau cùng, một tương thich sẽ xảy ra và gây reset bên trong. Lựa chọn thứ hai cũng không được khuyến khích nếu các module PCA khác đang được sử dụng. Do bộ định thời PCA được dùng chung cho các module, việc thay đổi giá trị bộ định thời sẽ làm ảnh hưởng đến hoạt động của các module khác. Như vậy, lựa chọn đầu tiên là lựa chọn tốt nhất. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 27 SVTH: Lê Trung Hiếu 2.3.2.2 Timer 2 Timer 2 là một Timer/Counter 16 bit được bổ sung vào một số vi điều khiển thuộc họ 8051. Các vi điều khiển thông dụng có thể kể đến là AT89C52, P89C51RDxx, P89V51RDxx... Ở các vi điều khiển này, chân P1.0 và P1.1 còn có tên lần lượt là T2 và T2EX. Timer 2 là một cải tiến đáng kể và tỏ ra ưu việt hơn hẳn so với timer 0 và timer 1 với 4 chế độ hoạt động: chế độ Bắt giữ (Capture mode), chế độ Tự nạp lại (Auto-reload mode), chế độ Dải xung clock lập trình được (Programmable Clock-out) và chế độ Tạo tốc độ baud (Baudrate Generator). Một số thanh ghi mới dùng cho timer 2:  Thanh ghi TH2 và TL2 (địa chỉ CDH và CCH): 2 thanh ghi chứa byte cao và byte thấp timer 2.  Thanh ghi RCAP2H, RCAP2L (địa chỉ CBH và CAH): hai thanh ghi dùng nạp hoặc chứa dữ liệu của timer 2.  Thanh ghi T2MOD (địa chỉ C9H, không định địa chỉ bit): thanh ghi hỗ trợ mode timer 2. Bit 7 6 5 4 3 2 1 0 Ký hiệu - - - - - - T2OE DCEN Bảng 2.10 Thanh ghi T2MOD BIT Ký hiệu Chức năng 7 đến 2 1 0 - T2OE DCEN Bit dự trữ Timer 2 Output Enable bit. Được sử dụng ở mode Programmable Clock-out. Down Count Enable bit. DCEN=1 sẽ cho phép timer 2 đếm lên hoặc xuống tùy thuộc chân T2EX. Bảng 2.11: Tóm tắt chức năng các bit thanh ghi T2MOD ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 28 SVTH: Lê Trung Hiếu  Thanh ghi T2CON (địa chỉ C8H, có định địa chỉ bit): thanh ghi điều khiển timer 2. Bit 7 6 5 4 3 2 1 0 Ký hiệu TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 Bảng 2.12 Thanh ghi T2CON BIT Ký hiệu Chức năng 7 6 TF2 EXF2 Timer 2 Overflow flag. TF2=1 mỗi khi timer 2 tràn. Tuy nhiên điều này không đúng nếu RCLK=1 hay TCLK=1. Timer 2 External flag. EXF2=1 khi EXEN2=1 và có cạnh xuống trên chân T2EX. Nếu ngắt timer 2 (bit IE.5) được cho 5 RCLK phép, EXF2=1 sẽ tạo ra ngắt. Receive Clock flag. Khi RCLK=1, UART (mode 1 và 3) sẽ sử dụng tốc độ tràn timer 2 làm xung nhận. 4 TCLK Transmit clock flag. Khi TCLK=1, UART (mode 1 và 3) sẽ sử dụng tốc độ tràn timer 2 làm xung phát. 3 EXEN2 External Enable flag. Nếu EXEN2=1, sự kiện Capture hoặc Reload sẽ được kích hoạt mỗi khi có cạnh xuống trên chân T2EX. Nếu EXEN2=0, các sự kiện trên chân T2EX sẽ không được xử lý. 2 TR2 Timer Run Control bit. Khi TR2=1, timer 2 chạy. TR2=0, timer 2 ngừng. 1 C/T2 Timer mode select. C/T2=1, timer 2 có chức năng counter, xung nhịp cho timer 2 được cấp tại chân T2. Khi C/T2=0, timer 2 có chức năng timer hoạt động với xung nhịp từ CPU. 0 CP/RL2 Capture/Reload flag. Khi CP/RL2=1, với EXEN2=1 và có cạnh xuống trên chân T2EX, tác vụ Capture sẽ được thực hiện. Khi CP/RL2=0, với EXEN2=1 và có cạn xuống trên chân T2EX, tác vụ Reload sẽ được thực hiện.; Bảng 2.13: Tóm tắt chức năng các bit thanh ghi T2CON ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 29 SVTH: Lê Trung Hiếu RCLK+TCLK CP/RL2 TR2 T2OE Chế độ hoạt động 0 0 0 1 X 0 1 0 X X 1 1 1 1 0 0 0 1 0 X 16-bit Auto-Reload 16-bit Capture Programmable Clock-out Baudrate Generator Off Bảng 2.14: Tóm tắt cách thức khởi tạo chế độ hoạt động cho timer 2 Các chế độ hoạt động của timer 2: Chế độ Bắt giữ (Capture mode) Ở chế độ này, có hai chọn lựa được xác định bởi bit EXEN2 trong thanh ghi T2CON.  Nếu EXEN2=0, timer 2 hoạt động như một timer/counter 16-bit. Mỗi lần timer bị tràn sẽ set bit TF2 và tạo ra ngắt nếu ngắt timer 2 được cho phép (bit IE.5).  Nếu EXEN2=1, timer 2 hoạt động tương tự như trên. Tuy nhiên khi có chuyển tiếp từ 1 xuống 0 ở chân T2EX, giá trị hiện thời của TH2 và TL2 sẽ được giữ lại tương ứng trong cặp thanh ghi RCAP2H và RCAP2L.  Ngoài ra, việc xuất hiện cạnh xuống trên chân T2EX sẽ set bit EXF2 trong thanh ghi T2CON và điều này cũng tạo ra ngắt nếu ngắt timer 2 được cho phép (bit IE.5). Hoạt động của chế độ Bắt giữ được minh họa trong hình sau đây: Hình 2.22: Timer 2 Capture mode ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 30 SVTH: Lê Trung Hiếu Chế độ Tự nạp lại (Auto-reload mode) Timer 2 có thể được lập trình để đếm lên hay đếm xuống khi hoạt động ở chế độ Auto-Reload với sự hỗ trợ của bit DCEN trong thanh ghi T2MOD. Mỗi lần CPU được reset, bit DCEN này có giá trị là 0, do đó, timer 2 mặc định là đếm lên. Khi DCEN=1, timer 2 có thể đếm lên hay xuống tùy thuộc mức logic trên chân T2EX. Hình sau đây minh họa hoạt động của timer 2 ở chế độ Auto-reload trong trường hợp DCEN=0 (timer tự động đếm lên). Hình 2.23: Timer 2 Auto-reload mode (DCEN = 0) Khi timer 2 đếm lên, ở chế độ Auto-reload, có hai lựa chọn được xác định bởi bit EXEN2 trong thanh ghi T2CON.  Nếu EXEN2=0, timer 2 đếm lên đến giá trị 0FFFFH sau đó set bit TF2 báo tràn. Sự kiện tràn timer 2 làm cho cặp thanh ghi (TH2,TL2) được nạp lại giá trị 16-bit chứa trong cặp thanh ghi (RCAP2H,RCAP2L). Giá trị (RCAP2H,RCAP2L) được nạp trước bởi phần mềm. Tương tự chề độ Capture, sự kiện tràn timer 2 cũng tạo ra ngắt.  Nếu EXEN2=1, việc nạp lại sẽ được thực hiện khi có tràn timer 2 hoặc khi có chuyển tiếp từ 1 xuống 0 trên chân T2EX. Việc chuyển tiếp mức logic trên chân T2EX sẽ set bit EXF2 trong thanh ghi T2CON và nếu được cho phép, nó sẽ tạo ra ngắt. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 31 SVTH: Lê Trung Hiếu  Trong trường hợp bit DCEN=1, timer 2 có thể đếm lên hay đếm xuống. Ở chề độ này, chân T2EX sẽ điều khiển hướng đếm. Hoạt động của timer 2 ở chế độ Auto- reload với DCEN=1 được minh họa trong hình sau: Hình 2.24: Timer 2 Auto-reload mode (DCEN = 1) Chế độ Dải xung clock lập trình được (Programmable Clock-out) Hoạt động của timer 2 trong chế độ này được minh họa trong hình sau: Hình 2.25: Timer 2 Programmable Clock-out mode ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 32 SVTH: Lê Trung Hiếu Một chuỗi xung clock có duty cycle là 50% có thể được lập trình để xuất ra trên chân P1.0 (T2). Chân P1.0 ngoài chức năng là chân I/O, nó cũng có thể được lập trình là ngõ vào xung nhịp cho Timer/Counter 2 hoặc là ngõ ra của chuỗi xung duty cycle 50% với tần số dao động từ 61 Hz đến 4 MHZ (nếu tần số dao động thạch anh 16MHz). Để cấu hình Timer/Counter 2 hoạt động ở chế độ này, bit C/T2 (T2CON.1) bắt buộc phải có giá trị ‘0’ và bit T2OE (T2MOD.1) phải được set. Bit TR2 (T2CON.2) điều khiển chạy, ngừng timer. Tần số chuỗi xung clock phụ thuộc tần số sao động thạch anh và giá trị nạp lại chứa trong cặp thanh ghi (RCAP2H,RCAP2L) theo công thức sau: Clockout _ Frequency = Oscillator _ Frequency4× [65536 ­ (RCAP2H , RCAP2L)] Trong chế độ này, sự kiện tràn timer không tạo ra ngắt. Ngắt timer 2 chỉ xảy ra khi có cạnh xuống trên chân T2EX và EXEN2=1. Khi đó bit EXF2 có giá trị ‘1’. Lưu ý: có thể sử dụng timer/counter 2 ở chế độ tạo baudrate và chế độ clock-out một cách đồng thời, tuy nhiên baudrate và tần số clock-out không thể độc lập nhau do dùng chung giá trị chứa trong cặp thanh ghi (RCAP2H,RCAP2L). Chế độ Tạo tốc độ baud (Baudrate Generator) Timer/Counter 2 có thể được lập trình hoạt động ở chế độ Tạo tốc độ baud. Với chế độ này, bit RCLK và TCLK trong thanh ghi T2CON cần phải được set. Tương tự như chế độ Auto-reload, trong chế độ Baudrate Generator, mỗi lần bị tràn, bộ định thời lại được nạp lại giá trị từ cặp thanh ghi (RCAP2H,RCAP2L). Giá trị trong cặp thanh ghi này đã được đặt trước bằng phần mềm. Minh họa cho chế độ này được cho ở hình sau: ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 33 SVTH: Lê Trung Hiếu Hình 2.26: Timer 2 Baudrate Generator Baudrate Tần số thạch anh Timer 2 RCAP2H RCAP2L 115200 57600 38400 19200 9600 4800 2400 1200 600 14400 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz FFH FFH FFH FFH FFH FFH FFH FEH FDH FFH FDH FAH F7H EEH DCH B8H 70H E0H C0H E8H Bảng 2.15: Giá trị nạp ở một số baudrate thông dụng ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 34 SVTH: Lê Trung Hiếu 2.3.3 IC GIAO TIẾP MAX232 Tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện áp TTL nên để giao tiếp vi điều khiển 8951 với máy tính qua cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, vi mạch Max232. Hình 2.27: Sơ đồ chân và sơ đồ logic IC MAX232 Vi mạch này nhận mức RS232 đã được gởi tới từ máy tính và biến đổi tín hiệu này thành tín hiệu TTL để cho tương thích với IC 8951 và nó cũng thực hiện công việc ngược lại là biến đổi tín hiệu TTL từ vi điều khiển thành mức +12V, -12V để cho phù hợp hoạt động của máy tính. Giao tiếp theo cách này, khoảng cách từ máy tính đến thiết bị ngoại vi có thể đạt tới trên 20 mét. Khi dữ liệu từ máy tính được gởi đến board vi điều khiển 89v51 qua cổng COM thì dữ liệu này sẽ được đưa vào từng bit (nối tiếp) vào thanh ghi SBUF (thanh ghi đệm), đến khi thanh ghi đệm đầy thì cờ RI trong thanh ghi điều khiển sẽ tự động Set lên 1 và lúc này CPU sẽ gọi chương trình con phục vụ ngắt. 2.3.4 CÁC PHẦN TỬ ĐIỀU KHIỂN CÁCH LY 2.3.4.1 OPTO TRANSISTOR (4N35) Đây là một loại opto transistor thông dụng dùng để cách ly giữa các thiết bị công suất với các thiết bị điều khiển. Nó có sơ đồ nguyên lý như hình vẽ: ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 35 SVTH: Lê Trung Hiếu Hình 2.28: Sơ đồ chân OPTO TRANSISTOR 4N35 2.3.4.2 RELAY 12V Đây là loại Relay có 8 chân. Được kích bằng cuộn cảm với điện áp 12V. Nó có 1 cặp chân chung, 1 cặp chân thường đóng (NC) và 1 cặp chân thường hở (NO). Các chân này có khả năng chịu được dòng khá lớn: 5A đối với điện xoay chiều 277Vac hoặc 5A với dòng 30VDC. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 36 SVTH: Lê Trung Hiếu Chương 3 MẠCH ĐIỆN ĐIỀU KHIỂN ROBOT 3.1 TỔNG QUÁT VỀ PHẦN CỨNG 3.1.1 Sơ đồ khối mạch phát và chức năng từng khối  Sơ đồ khối board điều khiển Hình 3.1 Sơ đồ khối board điều khiển. Với việc thiết kế phần cứng theo khối, mạch điện điều khiển trở nên rõ ràng, dễ hiểu và khả năng mắc lỗi thiết kế sẽ rất thấp. Theo trên, khối nguồn được dùng để cung cấp năng lượng cho toàn bộ mạch điều khiển. Khối MCU có khả năng xử lý những tín hiệu thu về từ các nút nhấn hoặc encoder, sau đó gởi đi tín hiệu điều khiển động cơ, điều khiển giao tiếp và hiển thị.  Chức năng nhiệm vụ của từng khối  Khối chuyển đổi tín hiệu: có nhiệm vụ kết nối giữa máy tính với khối thu phát để truyền các lệnh điều khiển ra mạch phát để truyền đi cũng như thu nhận tín hiệu hồi về từ vi điều khiển để xử lí.  Khối thu phát RF: có nhiệm vụ truyền dữ liệu từ mạch phát đi thông qua sóng RF cũng như việc thu dữ liệu qua sóng RF từ mạch slave truyền về để xử lý trên máy tính.  Khối nguồn: có nhiệm vụ cung cấp nguồn ổn áp 5VDC cho toàn mạch phát. KHỐI THU PHÁT RF KHỐI CHUYỂN ĐỔI TÍN HIỆU KHỐI NGUỒN 5V ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 37 SVTH: Lê Trung Hiếu 3.1.2 Sơ đồ khối mạch thu và chức năng nhiệm vụ của từng khối  Sơ đồ khối Hình 3.2 Sơ đồ khối mạch thu  Chức năng nhiệm vụ của từng khối  Khối thu phát RF: có nhiệm vụ thu thập dữ liệu từ sóng RF của mạch phát để đưa đến khối xử lí trung tâm để xử lí, đồng thời phát dữ liệu hồi về mạch phát sau khi đã xử lí dữ liệu thu về từ cảm biến.  Khối xử lí trung tâm: có nhiệm vụ nhận dữ liệu điều khiển thu được từ khối thu phát RF sau đó xử lí.  Khối điều khiển công suất: có nhiệm vụ nhận tín hiệu từ vi điều khiển sau đó nó sẽ thực hiện điều khiển các linh kiện công suất để thực hiện công việc. KHỐI NGUỒN 5V KHỐI CÔNG SUẤT ĐỘNG CƠ DC KHỐI NGUỒN 24V KHỐI THU PHÁT RF KHỐI XỬ LÝ TRUNG TÂM KHỐI ĐIỀU KHIỂN CÔNG SUẤT ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 38 SVTH: Lê Trung Hiếu  Khối công suất: bao gồm các linh kiện công suất  Động cơ DC: các động cơ được điều xung để thực hiện việc di chuyển và thao tác. Với việc thiết kế phần cứng theo khối, mạch điện điều khiển trở nên rõ ràng, dễ hiểu và khả năng mắc lỗi thiết kế sẽ rất thấp. Theo trên, khối nguồn được dùng để cung cấp năng lượng cho toàn bộ mạch điều khiển. Khối MCU có khả năng xử lý những tín hiệu thu về từ các nút nhấn hoặc encoder, sau đó gởi đi tín hiệu điều khiển động cơ, điều khiển giao tiếp và hiển thị. 3.2 KHỐI NGUỒN Có thể tạo ra các mạch ổn áp đơn giản bằng cách lắp ghép các linh kiện rời, nhưng các mạch này có độ ổn định rất kém, quá trình tính toán thiết kế phức tạp. Hiện nay một số vi mạch ổn áp chuyên dùng như: 78XX, 79XX, LM109, LM317,… có độ ổn định cao nên việc thiết kế trở nên dễ dàng.  Chức năng: cung cấp nguồn 5VDC cho các khối VDK 24V Nguon 12V HEADER 2 1 2 Dn_12V Diode 5A HI_CUR16 12V HI_CUR17 Dn_24V Diode 5ANguon 24V HEADER 2 1 2 LEDn_24V Rn_24V 2.2k ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 39 SVTH: Lê Trung Hiếu Dn_5V FR204 Rn_sensor 330 Cn2_5V 104 +Cn1_5V2200uF + Cn2_VXL 1000uF Cn1_sensor 104 Un_sensor 7805 1 3 2 VIN VOUT GND 5V_sensor Rn_VXL 330 LEDn_sensor LEDn_VXL 5VNguon VXL HEADER 2 1 2 Cn1_VXL 104 Un_VXL 7805 1 3 2 VIN VOUT GND +Cn2_sensor1000uF HI_CUR18HI_CUR19 Hình 3.3: Sơ đồ nguyên lí khối nguồn  Hoạt động:  Có nhiều cách để tạo ra nguồn 5VDC, nhưng dùng IC ổn áp sẽ đảm bảo sự nhỏ gọn, tính ổn định cho bộ nguồn. Trong đề tài sử dụng IC ổn áp dương 7805 và IC nguồn xung 2575.  Acquy 12V được đưa vào. Áp lấy ra khỏi IC 7805 là áp 5VDC.  Board mạch sẽ có nguồn cấp cho động cơ (24V), nguồn relay (12V), nguồn cho MCU, hiển thị, giao tiếp máy tính (5V) và nguồn cấp cho CMUcam (8V).  Điện cấp cho khối nguồn được lấy từ 2 accu 12V cấp vào các chốt cắm “24V”, “12V”, “12V VXL”. Một accu cấp nguồn cho vi xử lý và hai accu mắc nối tiếp cấp cho động cơ.  Các IC ổn áp 7805 và 2575 được sử dụng để tạo các nguồn 5V 500mA và 5V 1A. Các tụ điện 2200uF và 1000uF để lọc phẳng và tạo sự ổn định nguồn ở đầu vào và đầu ra IC ổn áp. Các tụ ceramic 104 loại bỏ nhiễu tần số cao. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 40 SVTH: Lê Trung Hiếu 3.3 MODULE MCU P0.7 R_mcu1 10K 5V P3.6 5V Ctrl_PWM1 P3.7 5VP3.7 Key _comm 1 2 3 45 6 P2.4 P3.6 P3.1 P2.0 P3.5 BT_Reset P0.1 U_MCU 8051 29 30 40 20 31 19 18 9 39 38 37 36 35 34 33 321 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 PSEN ALE VCC GND EA X1 X2 RST P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P3.0 P2.2 P3.4 Ctrl_PWM4 Clock SW1 P0.3 P3.3 Ctrl_RELAY2 Seri_input P0.6 P3.2 Ctrl_RELAY4 J_comm 1 2 3 4 5 6 7 8 P3.1 5V P2.1 P2.5 R_P0 2.2k 12 3 4 5 6 7 8 9 P3.0 C_mcu3 33pF P2.3 Ctrl_RELAY0 R_mcu2 100 P0.5 P0.0 + C_mcu1 10uF Ctrl_PWM0 Ctrl_RELAY1 P2.5 Ctrl_PWM3 5V P0.2 XTAL1 12MHz P3.2 Ctrl_RELAY3 J_Encoder 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 P3.3 Ctrl_PWM2 C_mcu2 33pF P3.4 P0.4 P3.5 Hình 3.4: Sơ đồ nguyên lí phần điều khiển của mạch  Cổng Serial bao gồm 3 chức năng sử dụng chung BUS:  Khi không truyển nhận dữ liệu có thể dùng để hiển thị 4 LED 7 đoạn  Truyền nhận dữ liệu UART  Nạp cho IC hỗ trợ ISP.  Thạch anh tạo dao động cho IC hoạt động. Dùng thạch anh 11.0592 để cho ra Baud generator có sai số 0%.  Công tắc key_comm để có thể dùng nhiều module với cùng BUS.  Ý tưởng dùng 5 Motor cùng 5 Relay cho robot có thể di chuyển linh hoạt và thao tác hiệu quả  Jack Encoder được nối trực tiếp MCU để mở rộng cho ứng dụng đọc giá trị hồi tiếp. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 41 SVTH: Lê Trung Hiếu 3.4 MODULE CHUYỂN ĐỔI TÍN HIỆU  Khối giao tiếp với máy tính là IC MAX 232: IC có 2 chân dùng để giao tiếp với máy tính đó là chân 13(R1IN) để nhận dữ liệu từ máy tính gửi xuống và chân và chân 14(T1 OUT) để truyền dữ liệu từ vi điều khiển gửi lên máy tính. Trong giao tiếp này, ta chỉ sử dụng 3 chân của cổng COM đó là chân TXD để truyền dữ liệu đi, chân RXD để nhận dữ liệu về và chân GND để nối đất chung. Đồng thời, khi IC MAX 232 giao tiếp với vi điều khiển nó sử dụng chân 11(T1 IN) dùng để nhận dữ liệu từ vi điều khiển để chuyển qua chân 14 đưa lên máy tính và chân 12(R1 OUT) truyền dữ liệu vào vi điều khiển sau khi đã nhận dữ liệu từ chân 13 của nó. C3 J1 HEADER 4 1 2 3 4 C1 U1795163467 MAX232 1 3 4 5 2 6 12 9 11 10 13 8 14 7 C1+ C1- C2+ C2- V+ V- R1OUT R2OUT T1IN T2IN R1IN R2IN T1OUT T2OUT C4 C2 0 Hình 3.5: Sơ đồ nguyên lý của MAX232 ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 42 SVTH: Lê Trung Hiếu 3.5 MODULE BÀN PHÍM Hình 3.6: Bàn phím chọn chương trình Sử dụng IC MUX 74151 để đọc trạng thái các phím nhấn về chân P2.0. Hoạt động của 74151 được cho trong bảng sau: Ngõ vào Ngõ ra C B A /G Y /Y x x x 1 0 1 0 0 0 0 D0 /D1 0 0 1 0 D1 /D2 0 1 0 0 D2 /D3 0 1 1 0 D3 /D4 1 0 0 0 D4 /D5 1 0 1 0 D5 /D6 1 1 0 0 D6 /D7 1 1 1 0 D7 /D8 Bảng 3.1: Hoạt động của IC 74151 ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 43 SVTH: Lê Trung Hiếu 3.6 MODULE LÁI ĐỘNG CƠ Để điều khiển động cơ, cần cách ly giữa tín hiệu điều khiển và phần động lực, tín hiệu sau cách ly được khuếch đại bởi IC ULN2803 sau đó đưa vào mạch động lực điều khiển chiều quay của động cơ. Mạch nguyên lý điều khiển: Hình 3.7: Nguyên lý mạch lái động cơ Kết hợp với relay dùng để đảo chiều động cơ: Hình 3.8: Điều khiển động cơ với relay hỗ trợ đảo chiều Với cách điều khiển này ta có thề điều khiển độc lập việc điều khiển công suất cho động cơ và đảo chiều. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 44 SVTH: Lê Trung Hiếu 3.7 KHỐI CÁCH LY NGUỒN TẢI Ctrl_PWM2 12V R1_RELAY1 220 5V R1_PWM3220 PW M3 _Am p 5V Opto PWM0 1 2 4 5 3 6 R1_RELAY4 220 Ctrl_PWM3 5V R1_RELAY3 220 R1_PWM4220 PW M4 _Am pR1_PWM1220 Opto PWM4 1 2 4 5 3 6 Ctrl_PWM4 R2_PWM1 330k Opto RELAY1 1 2 4 5 3 6 5V RELAY0_Amp LED_PWM2 R2_PWM4 330k 12V Ctrl_RELAY0 Opto PWM3 1 2 4 5 3 6LED_PWM1 LED_RELAY0 5V RELAY1_Amp R2_RELAY2330k R2_RELAY4330k 12V R2_RELAY1330kCtrl_RELAY1 R1_RELAY0 220 RELAY2_Amp 5V R2_PWM3 330k 12V R2_RELAY0330k Ctrl_RELAY2 LED_PWM0 Ctrl_PWM0 R2_PWM2 330k Opto PWM2 1 2 4 5 3 6 Opto RELAY0 1 2 4 5 3 6 RELAY3_Amp R2_PWM0 330k R1_PWM2220 PW M0 _Am p 5V 12V LED_RELAY1 R1_RELAY2 220 Ctrl_RELAY3 Opto RELAY2 1 2 4 5 3 6 PW M1 _Am p LED_RELAY2 RELAY4_AmpLED_RELAY4 LED_PWM3 Ctrl_PWM1 Opto PWM1 1 2 4 5 3 6 R1_PWM0220 LED_PWM4 Opto RELAY3 1 2 4 5 3 6 5V Ctrl_RELAY4 Opto RELAY4 1 2 4 5 3 6 PW M2 _Am p 5V LED_RELAY3 5V R2_RELAY3330k Hình 3.9: Khối cách ly dùng opto Ưu điểm của việc dùng Opto cách ly là ta có thể sử dụng 2 mức điện áp khác nhau cho ngõ vào và ngõ ra. Tránh việc nẩy áp từ phía động cơ ảnh hưởng tới khối MCU vốn rất dễ hư hỏng nếu quá áp. 3.8 KHỐI KHUẾCH ĐẠI DÒNG ÁP IC2803 12V R_Amp2_PWM 1.5k 12 3 4 5 6 7 8 9 PWM1_Amp PWM2_Amp PWM3_Amp 12V PWM4_Amp U_Amp_PWM ULN2803 10 9 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 PWM0 PWM1 PWM2 PWM3 PWM4 R_Amp1_PWM 3.3k 1 2 3 4 5 6 7 8 9 12V PWM0_Amp Hình 3.10 Khối khuếch đại dòng áp IC2803 IC 2803 là IC chuyên dụng khi cần khuếch đại dòng áp. RELAY1 U_Amp_RELAY ULN2803 10 9 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 RELAY2 RELAY3 RELAY4 RELAY0_Amp RELAY1_Amp RELAY2_Amp RELAY3_Amp RELAY4_Amp 12V RELAY0 ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 45 SVTH: Lê Trung Hiếu  Đặc tính IC2803: Hình 3.11 Đặc tính IC2803  TTL, DTL, PMOS, hoặc CMOS đầu vào.  Dòng ra 500 mA.  Áp ra có thể lên đến 95 V. 3.9 BÀN PHÍM ĐIỀU KHIỂN BẰNG TAY SW 1 1 2 AD5 R1 12 3 4 5 6 7 8 9 VCC AD0 R3 R R4R C4 C AD4 AD6 AD5 Rx J2 HE AD ER 8 1 2 3 4 5 6 7 8 D1 LED R6 R AD6 Rx E AD4 C5C AD1 AD6 VCC AD3 J1 CONN JACK PWR 3 2 1 GND AD7 GND VCC RS AD4 U1 AT89S52 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 GN D P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 PSEN ALE/PROG EA /VP P P0.7/AD7 P0.6/AD6 P0.5/AD5 P0.4/AD4 P0.3/AD3 P0.2/AD2 P0.1/AD1 P0.0/AD0 VC CP1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK RST P3.0/RXD R2 R R7 RE SIS TO R VA R Tx VCC VC C J3 HE AD ER 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 VCC Tx GND GND E GND VC C J4 HE AD ER 6 1 2 3 4 5 6 VCC AD7 VC C AD3 AD2 GND D2 LED Vee AD7 AD2 AD1 C1 C AD3 AD1 C2 C RW RW GND C3 C Vee AD[0..7] AD0 11.0592 RS AD2 U2LM78051 2 3VI GN D VO AD0 AD5 R5 R Hình 3.12 Bàn phím điều khiển bằng tay ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 46 SVTH: Lê Trung Hiếu Header 16 Dùng để kết nối với bộ hiển thị LCD 16x2. Header 8 Dùng kết nối với 1 ma trận phím 4x4, gồm 4 hàng và 4 cột Header 6 Đây là phần thu phát vô tuyến theo tiêu chuẩn UART IC AT89S52 Đây MCU chính của mạch. Chân 31 của IC được nối lên nguồn để đảm bảo chương trình được thực hiện từ ROM nội. Thạch anh được chọn có tần số 11.0592 MHz để tạo ra tốc độ BAUD một cách chính xác.  Công việc chuẩn bị thi công và kiểm tra mạch  Chuẩn bị linh kiện theo như thiết kế tính toán.  Vẽ mạch in trên Orcad, hàn linh kiện trên board vaøkiểm tra từng giai đoạn.  Kiểm tra nguồn, cân chỉnh, thay linh kiện hỏng.  Kiểm tra hoạt động của toàn mạch.  Chỉnh sửa cho đúng với yêu cầu. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 47 SVTH: Lê Trung Hiếu 3.10 LAYOUT CHO MẠCH ĐIỀU KHIỂN ROBOT 3.10.1 TOP Layer Hình 3.13 TOP layer ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 48 SVTH: Lê Trung Hiếu 3.10.2 BOT Layer Hình 3.14 BOT Layer ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 49 SVTH: Lê Trung Hiếu 3.10.3 SST Layer (lớp linh kiện) Hình 3.15 SST Layer (lớp linh kiện) ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 50 SVTH: Lê Trung Hiếu 3.10.4 Mạch thực tế Hình 3.16 Mạch thực tế ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 51 SVTH: Lê Trung Hiếu 3.10.5 ROBOT sau khi thi công Hình 3.17 Robot sau khi thi công ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 52 SVTH: Lê Trung Hiếu 3.11 LAYOUT CHO MẠCH BẰNG TAY 3.11.1 TOP layer (mạch điều khiển bằng tay) Hình 3.18 TOP Layer (Mạch điều khiển bằng tay) 3.11.2 BOT layer (mạch điều khiển bằng tay) Hình 3.19 BOT Layer (Mạch điều khiển bằng tay) ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 53 SVTH: Lê Trung Hiếu 3.11.3 Mạch sau khi thi công Hình 3.20 Mạch bằng tay sau thi công ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 54 SVTH: Lê Trung Hiếu 3.12 GIỚI HẠN ĐỀ TÀI Do đây là đề tài làm luận văn tốt nghiệp, thời gian thực hiện và tài chính để hoàn thành đề tài có giới hạn nên không có tầm mở rộng cao và đi sâu nghiên cứu phát huy những ưu điểm vượt trội của kỹ thuật điều khiển từ xa. Nên đề tài chỉ thực hiện những vấn đề sau:  Ứng dụng điều khiển cho Robot di chuyển.  Thiết kế và thi công mạch xử lí giao tiếp qua sóng RF.  Điều khiển phần công suất thông qua các linh kiện cách ly như Opto, relay.  Phần khuếch đại với IC 2803 và FET IRF540N.  Dùng kỹ thuật điều xung PWM để điều khiển công suất động cơ.  Giao tiếp với máy tính để điều khiển thiết bị bằng sóng RF.  Kết hợp thêm nếu có thể với một mạch điều khiển bằng tay để tăng độ linh hoạt cho việc điều khiển. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 55 SVTH: Lê Trung Hiếu Chương 4 PHẦN MỀM VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN 4.1 PHẦN MỀM DOCK LIGHT  Giao diện trực quan, dễ sử dụng.  Kết nối với cổng COM của máy tính.  Hiển thị dữ liệu truyền chính xác với kiểu BIN DEC HEX OCT.  Cho phép thiết lập tốc độ baud, số bit trong frame cũng như truyền trực tiếp ký tự từ bàn phím ra cổng serial. (Cách sử dụng chương trình không được trình bày trong luận văn.) 4.2 CHƯƠNG TRÌNH ĐIỀU KHIỂN Nhằm tạo sự thuận lợi trong việc bảo trì và nâng cấp, cũng là để chương trình trở nên dễ đọc hơn, chương trình điều khiển sẽ được bố cục theo từng module dưới dạng các chương trình con trong các file.c. Các module này sẽ hỗ trợ và gọi chương trình con từ nhau. 4.2.1 CHƯƠNG TRÌNH CHÍNH Main.c Chương trình chính sẽ gọi các hàm khởi động, PCA, UART và các thiết lập ban đầu, sau đó là thực hiện công việc được gửi từ bàn phím. #include uint_8 xdata memory[20]; uint_8 xdata memory_temp[20]; int speed_motor = 0, SPEED_TURN = 0, gear = 0, gear_turn = 0, uart_data_receive = 0; void main() { init_PCA(); //sau init_PCA() cac chan dieu khien dong co da duoc dieu xung pwm voi Fosc = //Fxtal/6; //duty cycle = 0%; init_uart(); delay_us(100); while(1) ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 56 SVTH: Lê Trung Hiếu { } } 4.2.2 HEADER declare.h HEADER declare.h chứa một file header khai bào định nghĩa tên biến và các chương trình con sẽ dùng tới như điều khiển robot di chuyển, nhận tín hiệu, gửi tín hiệu, v..v.. tất cả được khai báo ở đây. #ifndef _DELARE_H_ #define _DELARE_H_ #include //func of delay_func.c/// void delay_ms(uint_8 time); void delay_us(uint_8 time); //func of int_PCA_timer.c // void init_PCA(); //int UART///////// void init_uart(void); ///////////////////////////// //void receive_data() interrupt 4; //read data va process data void read_data_uart(); void process_data(); ///////////////////// void choose_speed(); void inc_gear_turn(); void dec_gear_turn(); /////////xu ly hanh dong - Action.c //////////// void go_ahead(); void go_back(); void turn_left(); void turn_right(); void inc_gear(); void dec_gear(); //////////xu li di chuyen - Moving.c - 2 dong co left va right void switch_forward(); ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 57 SVTH: Lê Trung Hiếu void switch_return(); void power_motor();//cap nguon cho dong co void power_motor_turn_left(); void power_motor_turn(); void power_motor_turn_right(); /////////xu ly gap va nha vat the (neu co) /* void switch_forward_up(); void switch_forward_cap(); void switch_return_up(); void switch_return_cap(); */ #endif 4.2.3 HEADER define_sfr_const.h Module này chứa header p89v51.h của nhà sản xuất và thêm vào các định nghĩa bit để tiện bảo trì hay sửa chữa source. Header p89v5.h1 sẽ không được trình bày trong luận văn này. #ifndef _DEFINEE_H_ #define _DEFINEE_H_ #include typedef unsigned char uint_8; typedef unsigned int uint_16; ///////////////////////////////// //////////////////////////////////// sfr speed_motor_left = 0xFA; //sfr speed_motor_right = 0xFB; sfr speed_motor_right = 0xFE; sfr speed_motor_up = 0xFC; sfr speed_motor_cap = 0xFD; ///////////////////////////////////////// sbit p_switch_motor_left = P2^6; //pin controls switch for motor left -- = Ctrl_RELAY0 //sbit p_switch_motor_right = P2^7; //pin controls switch for motor right -- = Ctrl_RELAY1 sbit p_switch_motor_right = P1^2; sbit p_switch_motor_up = P1^0; //pin controls switch for motor up - down -- = Ctrl_RELAY2 sbit p_switch_motor_cap = P1^1; //pin controls switch for motor cap - release -- = Ctrl_RELAY3 /////////////////////////////////////////// //define cho doc gamepad hoac matrix button /* sbit p_key_0 = P3^4; ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 58 SVTH: Lê Trung Hiếu sbit p_key_1 = P3^5; sbit p_key_2 = P3^6; sbit n_read_key_0 = P3^2; sbit n_read_key_1 = P3^3; */ #define p_en_switch_motor ET1; ////////////////////////////////////// #define SPEED_0 0 #define SPEED_1 70 #define SPEED_2 110 #define SPEED_3 160 #define SPEED_4 210 /////////////////////////////////////// #define SPEED_TURN_0 15 #define SPEED_TURN_1 25 /* #define SPEED_TURN_2 20 #define SPEED_TURN_3 25 */ ///////////////////////////////////// #define SPEED_MOTOR_CAP_OUT 170 #define SPEED_MOTOR_CAP_IN 170 #define SPEED_MOTOR_DOWN 170 #define SPEED_MOTOR_UP 140 //////////////////////////////////////// #define SPEED_DIFFER 10 ////////////////////////////////////// #define key_press 1 #define key_not_press 0 #define SWITCH_RETURN 0 //////////////////////////////////////// #define SWITCH_FORWARD 1 //quy uoc de linh hoat trong viec #define SWITCH_RETURN 0 // cap nguon va xoay chieu // 2 motor di dung cho di chuyen ve co ban la xoay nguoc chieu nhau khi lap vao than robo // nhung se duoc thay doi de dang ve phan cung bang cach dau lai chieu cap nguon // do do ta quy uoc 1-cap cho role de motor quay chay toi // 0-cap cho role de motor quay chay lui /* ta quy dinh la: - trong mang memory chua gia tri khoi dong cua cac phim nhan cu the la: 0/ len 1/ xuong 2/ trai 3/ phai 4/ so 1: dua len ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 59 SVTH: Lê Trung Hiếu 5/ so 2: dua xuong 6/ so 3: gap 7/ so 4: nha */ #endif 4.2.4 MODULE init_PCA_timer.c Module init_PCA_timer.c chứa chương trình con thiết lập giá trị ban đầu và khởi động PCA để điều khiển 5 động cơ. #include void init_PCA() { CCAPM0 = 0x42; //set P1.3 pwm mode CCAPM1 = 0x42; //set P1.4 pwm mode CCAPM2 = 0x42; //set P1.5 pwm mode CCAPM3 = 0x42; //set P1.6 pwm mode CCAPM4 = 0x42; //set P1.7 pwm mode CMOD = 0x00; // thiet lap chia Fosc internal cho 6 lam pulse cho PCA //thong wa 2 bit CPS1 va CPS0 trong CMOD // Internal clock tu Xtal CCAP0H = 0;//thanh ghi gia tri dieu khien duty cycle cua 1 chu ki pwm //CCAP0H Module 0 Capture HIGH add: FAH CCAP0L = 0;//CCAP0L Module 0 Capture LOW add: EAH CCAP1H = 0; CCAP1L = 0; CCAP2H = 0; CCAP2L = 0; CCAP3H = 0; CCAP3L = 0; CCAP4H = 0; CCAP4L = 0; //voi cac gia tri deu la 0 de bao dam motor dung yen sau khi reset CR = 1; /*The CCON SFR contains the run control bit for the PCA (CR) and the flags for the ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 60 SVTH: Lê Trung Hiếu PCA timer (CF) and each module (CCF4:0). To run the PCA the CR bit (CCON.6) must be set by software. The PCA is shut off by clearing this bit. The CF bit (CCON.7) is set when the PCA counter overflows and an interrupt will be generated if the ECF bit in the CMOD register is set. The CF bit can only be cleared by software.*/ delay_ms(1); } /* void init_timer() { T2MOD = 0; //T2MOD Bit 7 6 5 4 3 2 1 0 // Symbol - - - - - - T2OE DCEN //T2OE:Timer 2 Output Enable bit. //DCEN:Down Count Enable bit. T2CON = 0; //T2CON - Timer/counter 2 control register (address C8H) bit allocation // Bit addressable; Reset value: 00H // Bit 7 6 5 4 3 2 1 0 // Symbol TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 // DATA SHEET PAGE 31/80 TO KNOW FUNCTION OF EACH BIT RCAP2H = 0xFF; RCAP2L = 0x01;//RCAP2H Timer2 Capture HIGH ADD CBH // RCAP2L Timer2 Capture LOW ADD CAH ET2 = 1; //ET2 Timer 2 Interrupt Enable. EA = 1; //EA Interrupt Enable Bit: EA = 1 interrupt(s) can be serviced, EA = 0 //interrupt servicing disabled. TR2 = 1; //TR2 Start/stop control for Timer 2. A logic ‘1’ enables the timer to run. /////////////////////// } */ 4.2.5 MODULE delay_func.c Module delay_func.c chứa các hàm xử lý delay, được tính toán và căn chỉnh thời gian trên mô phỏng proteus. ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 61 SVTH: Lê Trung Hiếu #include void delay_ms(uint_8 time) { while(time--) { uint_8 a = 165; while(a--); } } void delay_us(uint_8 time) { while(time--); } 4.2.6 MODULE init_UART.c Module init_UART.c chứa các hàm xử lý giá trị ban đầu cho giao tiếp UART, sử dụng timer tạo tốc độ baud, các hàm gửi và nhận dữ liệu. #include extern uint_8 xdata memory[20];extern uint_8 xdata memory_temp[20];extern int speed_motor, SPEED_TURN, gear, gear_turn,uart_data_receive; /***********************************************************************Chuc nang: Khoi tao UART o mode 1,-Su dung dao dong Osc 11.0592Mhz-BAUDRATE: 9600Gia tri tra ve: Khong coDe dung ket hop voi ngat uart, phai dat EA=1************************************************************************//*void init_uart(){//Cau hinh cho UART//Chon mode 1SM0=0;SM1=1;SM2=0; //Chu y neu load file header tu trang ban dan cuaPhilips//phai sua lai SM3 thanh SM2!//Chon Timer 2 la nguon sinh toc do Baud//Cau hinh cho Timer 2, xem them o phan Timer 2 trongDatasheetTCLK=1;//T2OE=0; luu y thanh ghi T2MOD khong can thiep tung bit duoc//T2OE Timer 2 Output Enable bit. Used in programmable clock-out mode//only.T2MOD|=0x02;//Cho Timer 2 chayTR2=1; ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 62 SVTH: Lê Trung Hiếu //Toc do Baud la 9600, luu y cong thuc 3 hoac bang 24 trongDatasheetRCAP2H=0xFF;RCAP2L=0xB9;// Khong co uu tien ngat//IP0&=0xEF;//IP0H&=0xEF;// Cho phep ngat noi tiepES = 1;} //Ket thuc ham khoi tao UART */void init_uart()//dung trong truyen thong noi tiep{ SCON=0x50;//che do 8 bit du lieu,1 bit sart,1 bit stopTMOD&=0x0F;//TMOD|=0x20;//timer1 in mode2TH1=0xFD;//set baut rate at 9600(11.0592Mhz)TL1=0xFD;ES=1;//cho phep ngat noi tiepEA=1;//cho fep tat ca cac ngatTR1=1;//chay timer1} void send_data(char uart_data)//gui du lieu qua cong COM{ TI=0; //Transmit interrupt flag. Set by hardware atthe end of the 8th bit time in//mode 0, or at the stop bit in the other modes, in any serial//transmission. Must be cleared by software.//SBUF=0x00;SBUF=uart_data;while(TI==0){}//cho trong khi dang gui du lieuTI=0;} void receive_data() interrupt 4//nhan du lieu{ RI=0;uart_data_receive=SBUF;read_data_uart(); //test_key();process_data(); //process_key(); } 4.2.7 MODULE process_motor.c Module process_motor.c chứa các hàm nhận dữ liệu điều khiển, sau đó thi hành lệnh. #include /////////////////////////////extern uint_8 xdata memory[20];extern uint_8 xdata memory_temp[20];extern int speed_motor, SPEED_TURN, gear, gear_turn,uart_data_receive; ///////////////////////////void read_data_uart() ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 63 SVTH: Lê Trung Hiếu { if (uart_data_receive == 'w')memory[0] = key_press;elsememory[0] = key_not_press; if (uart_data_receive == 's')memory[1]= key_press;elsememory[1] = key_not_press; if (uart_data_receive == 'a')memory[2] = key_press;elsememory[2] = key_not_press; if (uart_data_receive == 'd')memory[3] = key_press;elsememory[3] = key_not_press; }/////////////////////////// void process_data(){ /*ham process_key() la de tac dong chu yeu len 4 dong comac dinh khi chua dung tang toc va ha toc thi dong cochay voi 1/2 cong suatdo RCAP2H = 0xFF;RCAP2L = 0x01;trong init.c*/// thang, lui, trai, phai, ha toc, tang toc tac dong den2 dong co//////VIET LAI////////////neu nhan chong nhieu phim thi se khong co lenh nao duoc thuchien //////////// toiif ((memory[0] == key_press) && (memory[1] != key_press)&& (memory[2] != key_press) && (memory[3] != key_press))////////////nhan nut cho chay thanggo_ahead();/////////// luiif ((memory[1] == key_press) && (memory[0] != key_press)&& (memory[2] != key_press) && (memory[3] != key_press))go_back();/////////// traiif ((memory[2] == key_press) && (memory[0] != key_press)&& (memory[1] != key_press) && (memory[3] != key_press))turn_left();//////////phaiif ((memory[3] == key_press) && (memory[1] != key_press)&& (memory[2] != key_press) && (memory[0] != key_press))turn_right();/////////////////////////////////////////////////////////////////////////////////////////////////////////memory[0] = key_not_press;memory[1] = key_not_press;memory[2] = key_not_press;memory[3] = key_not_press;uart_data_receive = 0;} } ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 64 SVTH: Lê Trung Hiếu 4.2.8 MODULE moving.c Module moving.c chứa các hành động tác động lên công suất điều khiển động cơ cũng như chiều quay của động cơ. #include ///////////////////////////// extern uint_8 xdata memory[20]; extern uint_8 xdata memory_temp[20]; extern int speed_motor, SPEED_TURN, gear, gear_turn, uart_data_receive; ////////////////////////////////// void power_motor() //cho phep dong co chay chu chua co chieu quay cua dong co { speed_motor_left = speed_motor; speed_motor_right = speed_motor;// + SPEED_DIFFER; } void power_motor_turn() //cho phep dong co chay chu chua co chieu quay cua dong co { speed_motor_left = SPEED_TURN; speed_motor_right = SPEED_TURN;// + SPEED_DIFFER; } void power_motor_turn_left() { speed_motor_left -= SPEED_TURN; speed_motor_right += SPEED_TURN; } void power_motor_turn_right() { speed_motor_left += SPEED_TURN; speed_motor_right -= SPEED_TURN; } /*void no_power_motor() //dung cap nguon { speed_motor_left = 0; speed_motor_right = 0; } */ void switch_forward() //chinh switch { p_switch_motor_right = SWITCH_FORWARD; p_switch_motor_left = SWITCH_FORWARD; } //////////////////////////////////////////////////////// ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 65 SVTH: Lê Trung Hiếu void switch_return() { p_switch_motor_right = SWITCH_RETURN; p_switch_motor_left = SWITCH_RETURN; } ///////////////////////////////////////////////////////////// 4.2.9 MODULE action.c Module action.c chưac các hàm thực thi các lệnh di chuyển của động cơ như quẹo trái, phải, đi tới, lui, gắp, nhả vật, đưa vật lên, xuống. #include ///////////////////////////// extern uint_8 xdata memory[20]; extern uint_8 xdata memory_temp[20]; extern int speed_motor, SPEED_TURN; extern int gear, gear_turn; ////////////////////////////////// void go_ahead() //bam phim w { inc_gear();//tang so: thay doi chieu dong co (neu co); thay speed theo so dong co power_motor();//cap nguon motor theo thong so speed } void go_back() //bam phim s { dec_gear();//thay speed motor power_motor();//cap nguon motor } void turn_left() // 3 2 1 0 -1 -2 -3 { // L R inc_gear_turn(); if (gear != 0) //tang so, chon chieu(neu co) va chon speed xoay cho tung dong co power_motor_turn_left(); // cap nguon tao luc xoay robo else power_motor_turn(); } void turn_right() // 3 2 1 0 -1 -2 -3 { // L R dec_gear_turn(); //tang so, chon chieu(neu co) va chon speed xoay cho tung dong co if (gear != 0) power_motor_turn_right(); // cap nguon tao luc xoay robo else power_motor_turn(); ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 66 SVTH: Lê Trung Hiếu } void inc_gear() { if (gear < 4) gear++; //tang so gear_turn = 0; if (gear > 0) //chon chieu quay so toi cho chay toi so lui cho chay lui switch_forward(); else if (gear < 0) switch_return(); choose_speed(); //chon speed theo so } void dec_gear() { if (gear > -4) gear--; //giam so gear_turn = 0; if (gear > 0) //chon chieu quay switch_forward(); else if (gear < 0) switch_return(); choose_speed(); //chon speed } void choose_speed() { switch(gear) { /* case 4,-4: speed_motor = SPEED_4; break; case 3,-3: speed_motor = SPEED_3; break; case 2,-2: speed_motor = SPEED_2; break; case 1,-1: speed_motor = SPEED_1; break; case 0: ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 67 SVTH: Lê Trung Hiếu speed_motor = SPEED_0; break; */ case 4: speed_motor = SPEED_4; break; case 3: speed_motor = SPEED_3; break; case 2: speed_motor = SPEED_2; break; case 1: speed_motor = SPEED_1; break; case 0: speed_motor = SPEED_0; break; case -1: speed_motor = SPEED_1; break; case -2: speed_motor = SPEED_2; break; case -3: speed_motor = SPEED_3; break; case -4: speed_motor = SPEED_4; break; } } void inc_gear_turn() { if (gear == 0 ) //truong hop robo dung yen - can chon lai chieu dong co { p_switch_motor_right = SWITCH_FORWARD; //chieu dong co p_switch_motor_left = SWITCH_RETURN; SPEED_TURN = SPEED_TURN_1; // speed } //neu robo chuyen dong thi khong can can thiep chieu dong co //tang so xoay huong robo else if (gear_turn < 3) ỨNG DỤNG SÓNG CAO TẦN VÀO ĐIỀU KHIỂN ROBOT GVHD: Cô Võ Thị Thu Hồng 68 SVTH: Lê Trung Hiếu { gear_turn++; SPEED_TURN = SPEED_TURN_0; //CHON speed xoay cho tung dong co } else SPEED_TURN = 0; } void dec_gear_turn() { if (gear == 0 ) //truong hop robo dung yen - can chon lai chieu dong co { p_switch_motor_right = SWITCH_RETURN; //dong co phai day toi p_switch_motor_left = SWITCH_FORWARD; //dong co thai day lui SPEED_TURN = SPEED_TURN_1; } //neu robo chuyen dong thi khong can can thiep chieu dong co else if (gear_turn > -3) //tang so xoay huong robo { gear_turn--; SPEED_TURN = SPEED_TURN_0; //luc xoay 12 + 12 = 24/gear/255 //CHON speed xoay cho tung dong co } else SPEED_TURN = 0; } /* void choose_speed_turn() { /*switch(gear_turn) { case 0: break; case 1,-1: SPEED_TURN = SPEED_TURN_0; //SPEED_TURN_0 = 10 break; case 2,-2,3,-3,4,-4: SPEED_TURN = SPEED_TURN_1; //SPEED_TURN_1 = 5 break; } SPEED_TURN = SPEED_TURN_0; } */ TỔNG KẾT LUẬN VĂN Robot Wireless là một lĩnh vực quan trọng và đang rất được chú trọng nghiên cứu trong những năm gần đây. Về đề tài ứng dụng sóng cao tần vào điều khiển Robot, luận văn đã thực hiện được một số vấn đề sau: 1. Tìm hiểu về Module RF HMTR. 2. Tìm hiểu một số tính năng mới của họ vi điều khiển 8051. 3. Kết hợp Module HMTR và 8051 điều khiển robot wireless. 4. Robot wireless có khả năng nhận tín hiệu và di chuyển theo ý đồ người điều khiển. Do thời gian hạn chế, luận văn chỉ nhằm mục đích tạo ra 1 robot wireless có khả năng thực hiện một số lệnh đơn giản, kết hợp với bộ điều khiển rời và LCD có thể tăng độ linh hoạt cho việc điều khiển. Tuy nhiên, luận văn cũng có khả năng mở rộng theo những hướng sau: 1. Cải thiện khả năng hoạt động: sử dụng thêm các motor đã tích hợp sẵn trên board, cùng các encoder sẽ cho một robot đa năng và thông minh, 2. Kết hợp với Camera wireless để điều khiển Robot mà không cần trực tiếp quan sát robot (đây l à điều mà sinh viên hướng tới nhưng do vấn đề về tài chính nên sẽ để lại để phát triển thêm với những ai quan tâm) . 3. Cải thiện bộ thu phát để có thể cập nhật chương trình mới qua sóng RF ngay khi đang di chuyển. 4. Cải thiện khung Robot và các vỏ bọc để Robot có thể làm việc trong các môi trường khắc nghiệt như nước sâu, nhiệt độ cao hay địa hình không bằng phẳng. Trong quá trình thực hiện luận văn, sinh viên đã rất cố gắng, tuy nhiên những thiếu sót là không thể tránh khỏi. Sinh viên rất mong quý thầy, cô nhận xét và góp ý để đề tài ngày càng hoàn thiện hơn. Xin cảm ơn quí thầy, cô đã xem qua đề tài này! Tài liệu tham khảo 1. Chris Hills, C51 Primer, Hitex (UK) Ltd 2003. 2. Đặng Thành Tín, Tin học II, Nhà xuất bản Đại học Quốc gia Thành phố Hồ Chí Minh 2003. 3. Hồ Trung Mỹ, Vi xử lý, Nhà xuất bản Đại học Quốc gia Thành phố Hồ Chí Minh 2003. 4. J. H. Kim – D. H. Kim – Y. J. Kim – K. T. Seow, WirelessRobotics, Springer. 5. Micheal J. Pont, Embedded C, Pearson Education 2002. 6. Tống Văn On, Thiết kế hệ thống với họ 8051, Nhà xuất bản Phương Đông 2005.

Các file đính kèm theo tài liệu này:

  • pdfỨng dụng sóng cao tần vào điều khiển robot.pdf
Luận văn liên quan