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
80 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2408 | Lượt tải: 0
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:
- Ứng dụng sóng cao tần vào điều khiển robot.pdf