36
C ƢƠNG 4 : THI T K 4.1 Yêu cầu hệ thống:
- Tricopter có 3 cánh quạt và 1 ộng cơ servo u i.Vì vậy cần 4 ngõ ra PWM ể iều khiển.
- Board iều khiển arduino phải có trên 4 ngõ ra PWM.
- Ƣớc lƣợng tổng khối lƣợng tricopter khoảng 1kg. Gọi Fnâng là lực nâng
của 1 ộng cơ, Mtricopter là trọng lƣợng của tricopter, vì vậy:
Fnâng x 3 > Mtricopter (4.1)
Fnâng >
= (kg) (4.2) - Động cơ phải có lực nâng iều kiện trên. Để ảm báo tricopter dễ dàng
thoát trọng lực, chọn ộng cơ có Fnâng = 1 (kg).
∑ = 3 (kg) (4.3)
- ESC phải cung cấp ủ dòng cho ộng cơ, gọi Idcmax là dòng iện lớn nhất mà một ộng cơ tiêu thụ, ImaxESC là dịng iện lớn nhất mà ESC có thể cung cấp cho ộng cơ ể ảm bao ộng cơ hoạt ộng úng c ng suất mong muốn và ESC h ng bị hỏng, vì vậy phải thỏa:
ImaxESC > Idcmax (4.4) - Pin phải cung cấp ủ cho tricopter bay liên tục 4 phút. Gọi Ipinmax là dòng
xả lớn nhất của pin, Iservo là dòng iện cung cấp cho ộng cơ servo, Icontrol là tổng tất cả các dòng iện cung cấp cho board iều khiển và cảm biến. Ta có c ng thức sau:
Ipinmax > (Idcmax x 3 ) + Iservo + Icontrol (4.5) - Động cơ servo phải có lực giữ góc thỏa yêu cầu:
F giữ góc > Fnâng (4.6)
- Khung sƣờn phải làm từ vật liệu nhẹ nhƣng vẫn ảm bảo ộ chắc chắn ặc biệt giá thành thấp.
37 Hệ thống ƣợc thiết kế nhƣ sau: Khối điều khiển trung tâm Cảm biến cân bằng Động cơ brushless DC Khối điều khiển động cơ (ESC) Mạch thu nhận tín hiệu
Tay điều khiển phát tín hiệu
38
4.2 Sơ đồ kết nối phần cứng.
Với yêu cầu hệ thống và sơ ồ khối nhƣ trên ta có ƣợc sơ ồ kết nối phần
cứng nhƣ sau : Hình 4.2 : Sơ ồ kết nối phần cứng VCC GND _ + servo DC3 DC1 DC2 ESC1 ESC2 ESC3 MPU-6050
39 11.8V 5V 5V 5V SERVO
40
4.3 Thiết kế khung nhôm
Khung cơ hí của tricopter ƣợc thiết kế sao cho tổng khối lƣợng là nhỏ nhất, cân bằng về trọng tâm. Các cánh sử dụng thanh nh m hình chữ nhật (1x2cm), dày 1.5mm, rỗng giúp m hình nhẹ hơn và cứng cáp hơn.
Chiều dài mỗi thanh tay trái, phải 15 cm, thanh u i dài 17 cm và các thanh ƣợc ặt lệch nhau 1 góc 1200 và ƣợc thiết kế nhƣ nhƣ vẽ: 1200 1 7 c m y X Hình 4.4 : Khung nh m tricopter
41
4.4 Lựa chọn linh kiện
Theo thiết kế hung nh m có trọng lƣợng 500g, ƣớc chừng tổng trọng lƣợng toàn máy bay tricopter sau hi hoàn thành hoảng 1200g. Qua phân tích nên lựa chọn các loại linh kiện sau:
4.4.1 Chọn động cơ
- Động cơ h ng chổi than: Emax MT2216 810KV - Điện áp hoạt ộng 10V 12V. - Tốc ộ quay 810 vòng/phút/V. - Số cặp cực: 10. - Đáp ứng hiệu quả: 85 %. - Dịng có tải: 14 25 A. - Dòng h ng tải: 1.5 A. - Kích thƣớc: 27.5x30 mm.
+ Lực nâng tối a với cánh 10x45: 1 g.
+ Trọng lƣợng: 50g.
Hình 4.5 : Động cơ h ng chổi than Emax 810kv
42
4.4.2 Lựa chọn ESC (electric speed controller)
+ ESC sky walker 40A.
+ Điện áp hoạt ng: 10V 14V. + Dòng ịnh mức: 40A. + Dòng ỉnh: 55A / 10s. + Kích thƣớc (L x W x H): 68 x 25 x 8mm. + Hỗ trợ ngõ ra áp 5V dòng 2A. + Trọng lƣợng: 35g. 4.4.3 Chọn pin
+ Vì ộng cơ và ESC có iện áp ịnh mức hoạt ộng là 10 12 V nên ta lựa chọn pin Lipo 3cell với iện áp mỗi cell là 3.7V. Vậy iện áp lúc 3cell là 11.1V, lúc sạc ầy là 12.8V. Dịng xả Ipinmax = 45A.
+ Vì chi phí ầu tƣ giới hạn nên lựa chọn pin có dung lƣợng vừa phải. Chọn pin có dung lƣợng 2200mAh.
Hình 4.6: ESC skywalker 40A
43
4.4.4 Cảm biến cân bằng MPU 6050
MPU-6050 là cảm biến của hãng InvenSense. MPU-6050 là một trong những giải pháp cảm biến chuyển ộng ầu tiên trên thế giới có tới 6 trục cảm biến tích hợp trong một chíp duy nhất (mở rộng tới 9) và một bộ xử lý chuyển ộng số ƣợc tích hợp bên trong, giúp cho việc lấy dữ liệu từ cảm biến trở nên dễ dàng .
MPU-6050 sử dụng c ng nghệ ộc quyền MotionFusion của InvenSense có thể chạy trên các thiết bị di ộng, tay iều khiển,...
+ Nguồn cấp: 2.375 3.46V. + Giao diện nối tiếp hỗ trợ: I2C.
Trong Tricopter hệ thống cảm biến là rất quan trọng. Nó cho hệ thống biết ƣợc góc nghiêng và vận tốc, gia tốc hiện tại của Tri-rotor. Yêu cầu của cảm biến là có ộ áp ứng nhanh ể hệ thống có thể kịp thời iều chỉnh ể có thể cân bằng.
Sơ đồ khối tổng quát:
Hình 4.8 : Cảm biến MPU-6050
44
Đây là sơ ồ kết nối tổng quát tất cả các phần của cảm biến bao gồm 3 trục cảm biến mở rộng, cảm biến MPU6050, giao tiếp I2C, các ứng dụng iều khiển .
Cấu tạo chi tiết:
- 3 trục con quay hồi chuyển (3-axis MEMS gyroscope). - 3 trục cảm biến gia tốc (3-axis MEMS accelerometer).
- 1 bộ xử lý chuyển ộng số (DMP- Digital Motion Processor). - 1 bộ nhớ ệm FIFO có giá trị 1024 byte.
Ngồi ra cảm biến MPU-6050 có thế giao tiếp với 1 cảm biến từ trƣờng bên ngoài th ng qua chuẩn giao tiếp I2C.
Cảm biến MPU-6050 sử dụng bộ chuyển ổi tƣơng tự - số (Anolog to Digital Converter - ADC).
4.4.5 Các thành phần khác
- Ngồi ra cịn có:
+ Ốc vít cố ịnh hung nh m.
+ Dây gút cố ịnh ộng cơ và các chi tiết hác. + Dây kết nối tín hiệu giữa các modul.
45
4.5 Thiết kế giải thuật điều khiển
Bộ iều khiển cân bằng của máy bay ba cánh Tricopter bao gồm ba bộ nhỏ theo ba góc roll, pitch và yaw mỗi bộ cơ sở ồ iều khiển nhƣ sau:
Tín hiệu ƣợc hồi tiếp về là các góc yaw, pitch, roll và sự chuyển ộng quanh các trục X,Y,Z (vận tốc chuyển ộng của khung quanh trục x, y, z hoặc vận tốc gốc).
Các hàm truyền K1(s), K2(s) là các hằng số K1, K2. Chúng ta cũng có thể hiểu K1 tƣơng ứng với Kp và K2 tƣơng ứng Kd của bộ iều khiển PID. Vấn ề cần giải quyết là tự ộng cân bằng cho tricopter. Nhƣ vậy, ta xét góc ặt là 0o ối với các góc roll, pitch cịn góc yaw có thể ặt bất ì góc nào. Nhƣ trên hình 3.17 sơ ồ iều khiển gồm 2 vòng hồi tiếp.
Vòng hồi tiếp ngoài: các giá trị hồi tiếp về là các góc yaw, pitch, roll. Chúng sẽ ƣợc so sánh với các góc ặt (0o – vị trí cân bằng) hi ó ta sẽ thu ƣợc sai số, giá trị sai số sẽ ƣợc nhân với 1 hệ số K1 và ta sẽ thu ƣợc thành phân P (thành phần tỉ lệ). Vòng hồi tiếp trong: giá trị hồi tiếp về là sự chuyển ộng của xung quanh các trục x, y, z tƣơng ứng các góc roll, pitch , yaw. Các giá trị hồi tiếp này ƣợc lấy trực tiếp từ cảm biến và chúng cũng sẽ ƣợc nhân với 1 hệ số K2. Khi ó ta thu ƣợc thành phần D (thành phần vi phân).
Tổng hay hiệu của 2 thành phần từ 2 vòng hồi tiếp trên ta sẽ ƣợc các giá trị iều khiển theo các phƣơng ngang, dọc hay các thành phần iều khiển δlat, δlon, δped tƣơng ứng iều khiển các góc roll, pitch, yaw. Các thành phần này
46
sẽ góp phần làm thay ổi vận tốc chuyển ộng của các rotor 1, rotor 2 và rotor 3 từ ó làm thay ổi các góc roll, pitch, yaw và ƣa tricopter về trạng thái cân bằng hoặc chống lại sự mất cân bằng hi có yếu tố tác ộng từ bên ngoài.
Phƣơng pháp iều khiển nhƣ trên gọi là phƣơng pháp iều khiển dạng hồi tiếp và tƣơng tự nhƣ bộ iều khiển PID. Vì thế chúng cũng có thể coi nhƣ là iều khiển PID.
47
C ƢƠNG 5 : T CƠNG 5.1 Thi cơng khung và kết nối mạch điện theo sơ đồ.
48
Hình 5. 2 : Khung Tricopter khi gắn ộng cơ
49
50
5.2 Lập trình cho board Arduino 5.2.1 Lƣu đồ lập trình hệ thống 5.2.1 Lƣu đồ lập trình hệ thống Đ S S S Kiểm tra cân bằng Chạy tốc độ khởi động Kiểm tra tín hiêu điều khiển Tín hiệu Khởi động ? Đ Đ A Begin
51
S
Đ
- Giải thích lƣu ồ: Khi bật nguồn lên cảm biến sẽ kiểm tra hay h ng. Nếu h ng thì sẽ quay lại kiểm tra. Khi cân bằng rồi hệ thống sẽ kiểm tra tín hiệu iều khiển. Nếu có tín hiệu iều khiển từ tay cầm thì máy bay sẽ ƣợc khởi ộng với tốc ộ ban ầu. Sau ó hệ thống sẽ kiểm tra xem có cân bằng PID h ng. Nếu h ng cân bằng sẽ dừng máy bay, nếu cân bằng thì xung PWM sẽ ra ộng cơ ể iều khiển ộng cơ chạy theo ý muốn của mình.
A Khởi động máy bay Cân bằng PID ? PWM ra động cơ Dừng máy bay
Hình 5.5: Lƣu ồ lập trình iều khiển bay
52
- Một số code chính cho lƣu ồ: + Code cho cảm biến cân bằng :
#define GYRO_SCALE (4 / 16.0 * PI / 180.0 / 1000000.0) //16.4 LSB = 1 deg/s -- 16.0 apparently gives beter results than 16.4 (empirical)
#endif
#if defined(MPU6050) || defined(MPU3050)
#define GYRO_SCALE (4 / 16.4 * PI / 180.0 / 1000000.0) //16.4 LSB = 1 deg/s + Code iều khiển hƣớng bay
#define PID_CONTROLLER 1 #define YAW_DIRECTION 1 #define YAW_DIRECTION -1
#define SERVO_RATES {30,30,100,100,100,100,100,100} #if defined (AIRPLANE) || defined(FLYING_WING)
#define FIXEDWING Giải thích sơ ồ: PIN Khối điều khiển trung tâm
Cảm biến gia tốc và góc nghiêng
Động cơ Khối điều khiển động cơ Khối điều khiển hƣớng bay Khối nhận tín hiệu
Rx nhận tín hiệu từ tay điều khiển
Tay điều khiển phát ra tín hiệu
53
- Tay iều khiển phát ra tín hiệu iều khiển
- Rx nhận tín hiệu từ tay iều khiển và giải mã tín hiệu.
- Khối iều khiển hƣớng bay: nhận tín hiệu 4 bít và giải mã, xuất tín hiệu
PWM ến khối trung tâm
- Cảm biến (MPU 6050): Cảm biến có chức năng o vận tốc góc và gia tốc góc.
- Khối iều khiển trung tâm: xử lý tín hiệu từ cảm biến và hối iều khiển hƣớng bay ể xuất tín hiệu iều khiển PWM ến khối iều khiển ộng cơ. - Khối iều khiển ộng cơ ( ESC ): iều khiển các ộng cơ quay theo yêu cầu từ khối iều khiển.
-Động cơ: quay cánh quạt tao lực nâng cho tricopter. - Pin: cấp nguồn cho tất cả các hối.
5.2.2 Phần mềm lập trình cho board Arduino
Hiện nay board arduino ƣơc lập trình, biên dịch, nạp trực tiếp lên board
bằng chƣơng trình arduino 1.6.8. Hầu hết các thƣ viện ều ƣợc cộng ồng arduino hỗ trợ nên việc lập trình rất dễ dàng.
54
5.3 Trang trí cho tricopter
Sau khi thi c ng hung và mạch iện xong, tiến hành trang trí tricopter, vật liệu trang trí bằng mica, xốp và decan.
Hình 5.9 : Tricopter sau hi trang trí.
55
C ƢƠNG 6 : K T LUẬN VÀ ƢỚNG P ÁT TR ỂN 6.1 Kết luận
6.1.1 Kết quả đạt đƣợc
Sau một khoảng thời gian nghiên cứu và thực hiện ề tài “Mơ hình máy bay
điều khiển từ xa Tricopter” em ã ạt ƣợc một số nội dung sau:
- Sử dụng thành c ng board Arduino Uno trong tricopter.
- Thiết kế và thi c ng thành c ng m hình cơ hí cho tricopter nhỏ gọn. - Giải quyết ƣợc bài toán cân bằng ộng cho m hình theo 3 trục x, y, z. - Tỷ lệ cất cánh thành c ng 80%.
- Thiết kế thành c ng bộ iều khiển cân bằng cho máy bay tricopter trong m hình thực tế.
6.1.2 Một số hạn chế
Bên cạnh các ết quả ạt ƣợc thì ề tài cịn nhiều hạn chế nhƣ sau:
- M hình cơ hí tự thiết kế nên vấn ề cân bằng của khung m hình chƣa tốt.
- Tuy giải quyết ƣợc vấn ề cân bằng cho phép m hình cất cánh và bay trên h ng nhƣng cân bằng chƣa thật sự tốt, mức ộ dao ộng vẫn cịn tuy nhiên là rất ít, ộ ổn ịnh chƣa cao lắm.
- Tỷ lệ cất cánh thành c ng chƣa tuyệt ối.
- Giải thuật iều khiển hƣớng bay chƣa thật sự tốt, hó có thể iều khiển nhiều hƣớng bay cùng một lúc.
6.2 ƣớng phát triển cho đề tài
Đối với m hình do nhóm thiết kế thì ề tài cần có cải tiến tốt hơn theo các hƣớng nhƣ sau:
- Cái tiến bộ iều khiển PID hay tìm các hệ số Kp, Ki, Kd ể cho kết quả tốt hơn hoặc thay thế bằng một bộ iều khiển hác tốt hơn (có thể sử dụng logic mờ hoặc một giải thuật hác).
56
- M hình bay có thể gắn thêm camera và truyền hình ảnh trực tiếp về máy tính, ngồi ra việc sử dụng thêm một số cảm biển tích hợp nhƣ nhiệt ộ, hói,…
- Với việc phát triển m hình bay theo các hƣớng nhƣ trên có thể giúp biến m hình bay thành các thiết bị giám sát từ xa, có thể ứng dụng trọng giám sát an ninh, giám sát giao th ng, iểm tra và phòng chống cháy rừng,…
57
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. Nguyễn Đình Phú, “VI XỬ LÝ 1”, Đại học Sƣ Phạm K Thuật TP.HCM, 2006.
[2]. Nguyễn Đình Phú, “VI XỬ LÝ 2”, Đại học Sƣ Phạm K Thuật TP.HCM, 2007.
[3]. Trần Thu Hà, Trƣơng Thị Bích Ngà, Nguyễn Thị Lƣỡng, Bùi Thị Tuyết Đan, Phú Thị Ngọc Hiếu, Dƣơng Cẩm Tú, “ĐIỆN TỬ CƠ BẢN”, nhà xuất bản ại học quốc gia TP.HCM.
[4]. Lâm Ngọc Tâm, “THI T K VÀ CH TẠO MƠ HÌNH MÁY BAY- QUADROCOPTER”, Đại học Đà Nẵng, 2012.
58
Phụ lục
Chƣơng trình iều khiển
***************************Code cho cảm biến ********************
#ifndef SENSORS_H_ #define SENSORS_H_ void ACC_getADC (); void Gyro_getADC (); uint8_t Mag_getADC(); uint8_t Baro_update(); void Sonar_update(); void initSensors();
void i2c_rep_start(uint8_t address); void i2c_write(uint8_t data ); void i2c_stop(void);
void i2c_write(uint8_t data );
void i2c_writeReg(uint8_t add, uint8_t reg, uint8_t val); uint8_t i2c_readReg(uint8_t add, uint8_t reg);
uint8_t i2c_readAck(); uint8_t i2c_readNak();
void i2c_read_reg_to_buf(uint8_t add, uint8_t reg, uint8_t *buf, uint8_t size); #if defined(MMA7455) #define ACC_1G 64 #endif #if defined(MMA8451Q) #define ACC_1G 512 #endif #if defined(ADXL345) #define ACC_1G 265 #endif
#if defined(BMA180) || defined(BMA280) || defined(LIS3LV02) || defined(LSM303DLx_ACC) || defined(LSM330)
59 #endif #if defined(BMA020) #define ACC_1G 63 #endif #if defined(ADCACC) #define ACC_1G 75 #endif #if defined(MPU6050) #if defined(FREEIMUv04) #define ACC_1G 255 #else #define ACC_1G 512 #endif #endif #if !defined(ACC_1G) #define ACC_1G 256 #endif
#define ACCZ_25deg (int16_t)(ACC_1G * 0.90631) // 0.90631 = cos(25deg) (cos(theta) of accZ comparison)
#define ACC_VelScale (9.80665f / 10000.0f / ACC_1G)
// GYRO SCALE: we ignore the last 2 bits and convert it for rad/s #if defined(ITG3050)
#define GYRO_SCALE (4 / 16.0 * PI / 180.0 / 1000000.0) //16.4 LSB = 1 deg/s -- 16.0 apparently gives beter results than 16.4 (empirical)
#endif
#if defined(MPU6050) || defined(MPU3050)
#define GYRO_SCALE (4 / 16.4 * PI / 180.0 / 1000000.0) //16.4 LSB = 1 deg/s
#endif
#if defined(ITG3200)
#define GYRO_SCALE (4 / 14.375 * PI / 180.0 / 1000000.0) //ITG3200 14.375 LSB = 1 deg/s
#endif
#if defined(L3G4200D) || defined(LSM330)
#define GYRO_SCALE ((4.0f * PI * 70.0f)/(1000.0f * 180.0f * 1000000.0f)) // 70 milli deg/s /digit => 1 deg/s = 1000/70 LSB #endif
#if defined(WMP)
60
#endif
#endif /* SENSORS_H_ */
- Lập trình cho board arduino iều khiển hƣớng bay #ifndef CONFIG_H_ #define CONFIG_H_ #define TRI #define MINTHROTTLE 1070 // (*) (**) #define MAXTHROTTLE 1850 #define MINCOMMAND 1000 #define I2C_SPEED 100000L #define LOOP_TIME 2800
// #define GY_86 // Chinese 10 DOF with MPU6050 HMC5883L MS5611, LLC
//#define GY_88 // Chinese 10 DOF with MPU6050 HMC5883L BMP085, LLC
#define GY_521 // Chinese 6 DOF with MPU6050, LLC
#define PID_CONTROLLER 1
/* NEW: not used anymore for servo coptertypes <== NEEDS FIXING - MOVE TO WIKI */
#define YAW_DIRECTION 1