Professional Documents
Culture Documents
Mục lục:
I. Giới thiệu ............................................................................................................................ 2
Chương 1:
GIỚI THIỆU
1.Đặt vấn đề :
Để giúp cho sinh viên trong quá trình học tập và nghiên cứu môn học Vi
điều khiển tốt hơn.
Đồ án xe hai bánh điều khiển tự cân bằng được thầy Lê Trung Khanh yêu
cầu với mục đích khuyến khích các bạn sinh viên rèn luyện kỹ năng làm việc
nhóm và tự nghiên cứu học hỏi.
Dưới đây là những điều mà nhóm làm đề tài 3 đã đúc kết được.
Chương 2:
THIẾT KẾ CƠ KHÍ
1.Nguyên lý hoạt động:
Mô hình xe 2 bánh điều khiển tự cân bằng này dùng cảm biến đo gia tốc
góc nghiêng MPU 6050 để đo gia tốc góc giữa thân xe và mặt đất.
Mica 15x10 cm 3
B2: Đánh dấu 4 cạnh của miếng mica để khoan đồng thời đánh dấu thêm 2
hình tròn đường kính 2cm để luồn dây điện.
Ở miếng cuối cùng đánh dấu thêm 4 vị trí để vắt ốc cho động cơ DC
B3 : Khoan các vị trí đã đánh dấu để gắn trụ đồng đồng thời gắn động cơ vào.
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 6
Đánh giá : Mô hình xe 2 bánh gồm có 3 tầng , mỗi tầng có 1 mục đích
khác nhau. ( Dự kiến )
Tầng dưới cùng đặt nguồn cấp cho toàn hệ thống.
Tầng giữa được dùng để mạch MPU 6050 góc và tự cân bằng .
Tầng trên cùng là để mạch modulo RF 433 và mạch điều chỉnh tốc
độ động cơ.
Ngoài ra, bộ điều khiển chứa mạch phát tín hiệu RF, đồng thời các nút bấm
để điều chỉnh tốc độ động cơ.
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 7
Chương 3:
MẠCH ĐIỆN
1. Giới thiệu một số linh kiện quan trọng trong các mạch điện:
1.1. Pic 16F887:
Bộ vi xử lý ngày càng phát triển hoàn thiện và được sử dụng hầu hết
tròng các hệ thống điều khiển trong công nghiệp cũng như trong các
thiết bị điện tử dân dụng. Chính nhờ vài trò, chức năng của vi xử lý đã
đem lại nhiều ưu điểm, nhiều tính năng đặc biệt cho các hệ thống điều
khiển.
Vi xử lý có rất nhiều loại bắt đầu từ 4 bit đến 32 bit, vi xử lý 4 bit
hiện nay không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lú
64 bit.
Trong đồ án nghiên cứu mô hình xe hai bánh điều khiển cân bằng
này , con PIC 16F887 đc dùng làm công cụ chính để lập trình vi điều
khiển.
Chức năng chính : Được lập trình để làm mạch điều khiển chính
cho toàn hệ thống . Trong đồ án , PIC 16F887 đảm nhận vai trò điều
khiển cả 3 mạch điện chính là mạch thu phát tín hiệu RF, mạch điều
chỉnh tốc độ và mạch điều khiển cân bằng.
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 8
(a) (b)
Nguyên lý hoạt động: Mạ ch giao tié p theo chuả n UART, là sẽ truyè n nhạ n
tín hiẹ u với nhau bà ng só ng có tà n só 433MHZ. Mọ t con sẽ có chức năng chỉ
phá t tín hiẹ u, con cò n lạ i có chức năng sẽ nhận tín hiẹ u. Khi nhá n mọ t nú t,
từng bit sẽ được gửi qua cho con nhạ n, cho tới khi nà o đủ 32 bit nó sẽ thực
hiẹ n lẹ nh ứng với từng 32 bit đó .
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 11
Chương 4 :
LẬP TRÌNH
1. Code lập trình:
1.1. Mạch phát sóng dùng PIC 16F887:
2. #include <16F887.h>
3. #fuses NOMCLR, NOBROWNOUT, NOLVP, INTRC_IO
4. #use delay(clock = 8MHz)
5. #use fast_io(B)
6.
7. void send_signal(unsigned int32 number){
8. int8 i;
9. // Send 9ms pulse
10. output_high(PIN_B4);
11. delay_ms(9); //
12. // Send 4.5ms space
13. output_low(PIN_B4);
14. delay_us(4500);
15. // Send data (32 bits)
16. for(i = 0; i < 32; i++){
17. // If bit is 1 send 560us pulse and 1680us space
18. if(bit_test(number, 31 - i)){
19. output_high(PIN_B4);
20. delay_us(560);
21. output_low(PIN_B4);
22. delay_us(1680);
23. }
24. // If bit is 0 send 560us pulse and 560us space
25. else{
26. output_high(PIN_B4);
27. delay_us(560);
28. output_low(PIN_B4);
29. delay_us(560);
30. }
31. }
// Send end bit
32. output_high(PIN_B4);
33. delay_us(560);
34. output_low(PIN_B4);
35. delay_us(560);
36. }
37. void main() {
38. setup_oscillator(OSC_8MHZ); // Set internal
oscillator to 8MHz
39. output_b(0);
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 13
}
enable_interrupts(INT_EXT_H2L); // Enable external interrupt
}
}
}
38. IF (!INPUT(DW))
39. {
40.
41. DELAY_MS (20);
42. IF(!INPUT(DW))
43. {
44. IF (CAPDO<10)
45. {
46. OUTPUT_HIGH(ENA);
47. CAPDO++;
48. SET_PWM2_DUTY(CAPDO*25);
49.
50. DO {} WHILE (!INPUT(DW));
51. }
52. }
53. }
54. }
55. VOID PHIM_STOP()
56. {
57. IF(!INPUT(STOP))
58. {
59.
60. set_pwm2_duty(0);
61. set_pwm1_duty(0);
62. }
63. }
64.
65.
66.
67. void main()
68. {
69. SET_TRIS_A(0XFF);
70. SETUP_CCP1(CCP_PWM);
71. SETUP_CCP2(CCP_PWM);
72.
73. SETUP_TIMER_2(T2_DIV_BY_16,249,1);
74. set_pwm1_duty(0);
75. set_pwm2_duty(0);
76.
77. enable_interrupts(INT_RDA);
78. enable_interrupts(GLOBAL);
79. OUTPUT_LOW(ENA);
80.
81. WHILE(TRUE)
82. {
83. PHIM_THUAN();
84. PHIM_NGHICH();
85. PHIM_STOP();
86. }
Đồ án VI ĐIỀU KHIỂN: Robot tự cân bằng 20
87. }
Chương 5:
KẾT LUẬN