Các giải thuật giao tiếp với hệ thống

Một phần của tài liệu thiết kế và thực hiện giá ăng ten tự xoay bám theo quỹ đạo của vệ tinh cubesat (Trang 48)

4.3.1 Dạng file text của dữ liệu

Dữ liệu của hệ thống được lưu dưới dạng tập tin có đuôi *.txt được chia thành các cột bao gồm các thông tin về thời gian vệ tinh đi qua, góc phương vị, gốc ngẩng, khoảng cách từ trạm thu đến vệ tinh,... Để giao tiếp với hệ thống, ta cần lấy các thông tin về thời gian đi cùng với góc phương vị và góc ngẩng trong mỗi hàng của file text được lưu từ phần mềm Gpredict. Trong phần xem dữ liệu trong lương lai của phần mềm Gpredict, ta chọn phần chỉ lưu dữ liệu từ file text.

Hình 4.10: Lưu dữ liệu dưới dạng file text

Thông tin về file text được lưu từ phần mềm Gpredict như sau:

Save in foder: Đường dẫn lưu dữ liệu file text

Save using name : Tên file text được lưu

Save as: Lưu lại lần nữa.File contents: Cách thức lưu lại của file text

4.3.2 Giải thuật truyền dữ liệu từ file text

Giải truyền dữ liệu từ file text xuống hệ thống được thực hiện như sau:

Bắt đâu Mở file text Đọc thời gian dữ liệu Đọc thời gian hệ thống

Thời gian dữ liệu bằng thời gian hệ thống không? Đúng Đọc giá trị góc Az, El Gọi chương trình điều khiển 2 góc Az, El Sai

42

4.4 CÁC GIẢI THUẬT ĐỒ HỌA

4.4.1 Mô phỏng dữ liệu bằng cách vẽ hình trên nền Canvas

Công cụ Canvas là một phần tử của lập trình giao diện đồ họa Tkinter. Từ công cụ Canvas ta có thể lập trình kết xuất đồ họa các đối tượng hai chiều trền giao diện. Để mô phỏng góc phương vị của hệ thống, ta vẽ giao diện giống mô phỏng của la bàn số. Bao gồm các thông tin được ghi:

N: Điểm cực Bắc tương ứng với giá trị 0o S : Điểm cưc Nam tương ứng với giá trị 180o

E: Điểm cực Tây tương ứng với giá trị 270o

W: Điểm cực Đông tương ứng với giá trị 90o

Để mô phỏng góc ngẩng, ta vẽ cung đường tròn với điểm xuất phát là 90o theo cách vẽ của góc phương vị.

Hình 4.12:Mô phỏng góc phương vị và góc ngẩng trên hệ thống

4.4.2 Vẽ hình

Vẽ đường tròn:

Trong giao diện Tkinter để vẽ một hình bầu dục, hình elip hoặc hình tròn là một trường hợp đặt biệt, cần xác định được bởi tọa độ (xo,yo) của góc trên bên trái và tọa độ (x1,y1) của góc dưới bên phải của hình bầu dục như sau:

Hình 4.13: Cách vẽ đường tròn trong phân tử Canvas của giao diện Tkinter

Vẽ đoạn thẳng:

Để vẽ đoạn thẳng trên giao diên Canvas cần xác định được tọa độ hai đầu mút là A(xA,yA) và B(xB,yB). Độ dài của đoạn thẳng được tính bởi công thức sau:

,

43

Hình 4.14: Tọa độ của đoạn thẳng

Vẽ vector hướng từ tâm đến tọa độ tương ứng với dữ liệu :

Để vẽ một vector hướng từ tâm đến đến tọa độ xác định trên hình tròn, ta cần xác định được công thức tìm tọa độ một điểm trên đường tròn: (adsbygoogle = window.adsbygoogle || []).push({});

x=Rcos y=Rsin

trong đó: là góc quay được trên đường tròn. R là bán kính của đường tròn.

44

4.4.3 Giải thuật vẽ hình mô phỏng dữ liệu

Giải thuật vẽ hình trên giao diện để mô phỏng dữ liệu như sau:

Bắt đâu Vẽ tâm và đường tròn Vẽ mô phỏng la bàn số Định dạng đồ họa cho hình mô

phỏng Đọc dữ liệu từ hệ thống Tìm tọa độ (x,y) trên đường tròn tương ứng với dữ liệu Vẽ mũi tên từ tâm đến tọa độ (x,y) trên đường

tròn Cập nhật dữ liệu Bật ngắt Kết thúc Đúng Sai

45

4.4.4 Giải thuật cập nhật và hiển thị dữ liệu ra giao diện chương trình

Giải thuật đọc dữ liệu và hiển thị dữ liệu ra giao diện chương trình như sau:

Bắt đâu

Gán dữ liệu ban đầu là 0 Định dạng đồ họa cho dữ liệu

Đọc dữ liệu từ hệ thống Hiển thị dữ liệu ra giao diện Cập nhật dữ liệu mới Bật ngắt ? Kết thúc Đúng Sai

Hình 4.17: Giải thuật hiển thị dữ liệu và hiển thị dữ liệu ra giao diện

4.4.5 Giới thiệu công cụ MATPLOTLIB

Matplotlib: là một thư viện vẽ đồ thị 2D dành cho ngôn ngữ lập trình Python và mở rộng dành cho việc tính toán dữ liệu của nó là thư viện Numpy. Matplotlib cho phép nhúng một đối tượng của chương trình nhằm mục đích phát họa đồ thị, hình ảnh, biểu đồ, nhiễu xạ… trên bộ công cụ GUI như wxPython, Qt hoặc Gtk+. Ngoài ra Matplot còn có một công cụ đó là “pylab” dựa trên hệ thống phần mềm OpenGL, được thiết kế một cách chặt chẽ giống như như MATLAB.

Numpy: là một gói chương trình phục vụ cho các tính toán khoa học bằng ngôn ngữ lập trình Python.

46 Để sử miêu tả dữ liệu đã thực hiện của hệ thống theo thời gian, ta sử dụng bộ công cụ MatplotlibNumpy để vẽ đồ thị, thuận tiện cho việc đánh giá kết quả thực hiện được so với yêu cầu cho hệ thống. Đồ thị được vẽ bao gồm:

 Tên biểu đồ, các chú thích các trục trên đồ thị.

 Hai trục tung để biểu diễn góc phương vị (phía bên trái đồ thị) và góc ngẩng (phía bên phải đồ thị).

 Trục hoành biểu diễn cho thời gian tương ứng với giá trị góc phương vị và góc ngẩng của hệ thống.

.

47

KẾT QUẢ

1. Thiết kế được mô hình mô phỏng hệ thống hoạt động

Hình 0.1: Hình ảnh thực tế mô hình hệ thống giá xoay ăng-ten

2. Phần mềm điều khiển và hiển thị của hệ thống

48 3. Một số dữ liệu khi giám sát các vệ tinh:

** Dữ liệu vệ tinh CANX vào 10:06:18 ngày 16/05/2015: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 0.3: Biểu đồ truyền và kết quả

Hình 0.4: Biểu đồ sai số 2015/05/16 10:06:18 146.64 -1.83 3540 6151 2015/05/16 10:07:03 144.51 0.59 3265 6148 2015/05/16 10:07:47 141.99 3.18 2994 6145 2015/05/16 10:08:32 138.97 5.99 2729 6143 2015/05/16 10:09:16 135.28 9.05 2473 6141 2015/05/16 10:10:01 130.68 12.40 2230 6139 2015/05/16 10:10:45 124.84 16.03 2005 6138 2015/05/16 10:11:29 117.34 19.87 1804 6137 2015/05/16 10:12:14 107.69 23.67 1639 6136 2015/05/16 10:12:58 95.58 26.87 1521 6135 2015/05/16 10:13:43 81.36 28.67 1461 6135 2015/05/16 10:14:27 66.39 28.46 1468 6135 2015/05/16 10:15:11 52.51 26.31 1540 6135 2015/05/16 10:15:56 40.90 22.92 1668 6136 2015/05/16 10:16:40 31.73 19.08 1842 6137 2015/05/16 10:17:25 24.64 15.25 2049 6138 2015/05/16 10:18:09 19.13 11.66 2279 6140 2015/05/16 10:18:54 14.79 8.36 2527 6141 2015/05/16 10:19:38 11.32 5.34 2786 6143 2015/05/16 10:20:22 8.50 2.56 3054 6145

49

** Vệ tinh AAU-CUBESAT vào lúc “09:31:00” ngày 10/05/2015

Hình 0.5: Hình ảnh dữ liệu lúc 09:32:24

Hình 0.6: Biểu đồ dữ liệu và kết quả sau khi quay

50

**Vệ tinh AAU-CUBESAT lúc 10:45:00 ngày 16/05/2015

Hình 0.8: Biểu đồ dữ liệu và kết quả

Hình 0.9: Biểu đồ sai số 2015/05/16 10:45:04 164.38 0.00 3329 6153 2015/05/16 10:45:50 164.01 2.89 3024 6150 2015/05/16 10:46:36 163.58 6.11 2719 6147 2015/05/16 10:47:21 163.03 9.80 2416 6144 2015/05/16 10:48:07 162.33 14.14 2117 6142 2015/05/16 10:48:53 161.36 19.44 1825 6140 2015/05/16 10:49:39 159.93 26.19 1544 6139 2015/05/16 10:50:25 157.58 35.19 1283 6137 2015/05/16 10:51:11 153.01 47.63 1057 6137 2015/05/16 10:51:56 140.51 64.33 894 6136 2015/05/16 10:52:42 77.36 78.00 832 6136 2015/05/16 10:53:28 13.73 64.43 893 6136 2015/05/16 10:54:14 1.17 47.69 1056 6136 2015/05/16 10:55:00 356.60 35.24 1282 6137 2015/05/16 10:55:45 354.29 26.22 1543 6138 2015/05/16 10:56:31 352.91 19.46 1824 6139 2015/05/16 10:57:17 352.00 14.15 2116 6140 2015/05/16 10:58:03 351.37 9.80 2415 6142 2015/05/16 10:58:49 350.92 6.11 2718 6144 2015/05/16 10:59:34 350.58 2.88 3023 6146

51

***Nhận xét lấy mẫu:

Qua 3 lần lấy mẫu ta thấy chỉ có ở dữ liệu Vệ tinh AAU-CUBESAT vào lúc “09:31:00” ngày 10/05/2015 là có 2 sai số không đạt với yêu cầu; cụ thể là dữ liệu lần thứ 2, trục Az bị sai gần bằng 2 độ và lần thức 12 trục El sai số gần 4 độ. Theo nhận xét sai số này chỉ là yếu tố khách quan trong quá trình lấy mẫu. Các mẫu còn lại vẫn đúng với yêu cầu đề tài đặt ra.

52

KẾT LUẬN VÀ KIẾN NGHỊ

Sau quá trình nghiên cứu và xây dựng hệ thống giá ăng-ten tự xoay bám theo quỹ đạo của vệ tinh CubeSat. Nhóm đã hoàn thành đúng tiến độ và đạt được yêu cầu đề ra ban đầu:

PHẦN CỨNG:

 Thiết kế được mô hình hệ thống giá xoay anten bám theo vệ tinh CubeSat.  Hệ thống có thể bám theo một vệ tinh CubeSat bất kỳ.

 Sai số góc phương vị và góc ngẫn sau khi điều khiển đạt yêu cầu đưa ra ban đầu (≤ 1 độ ).

PHẦN MỀM:

 Xây dựng được phần mềm điều khiển hệ thống với giao diện trực quan, dễ sử dụng.

 Hiển thị thông số dữ liệu quỹ đạo vệ tinh.  Hiển thị thông số của hệ thống quay được  Các biểu đồ trục Az/El.

 Biểu đồ sai số các trục giữa dữ liệu quỹ đạo vệ tinh và hệ thống điều khiển.

KIẾN NGHỊ:

 Tìm ra các giải thuật điều khiển khác để điều khiển hệ thống tốt hơn.  Sử dụng driver cho động cơ bước để có khả năng bước góc bước nhỏ hơn  Thiết kế hệ thống giá xoay thực tế, và lắp thử ăng-ten để thu tín hiệu.

53

TÀI LIỆU THAM KHẢO

[1] Nguyễn Duy Khánh, Lê Văn Tươi, LVTN Máy bay tự động – Khoa Công Nghệ, Đại học Cần Thơ, 2014

[2] TS. Phùng Văn Vận: Đề tài KC.01.19 “Nghiên cứu cấu trúc hệ thống viễn thông mặt đất để sử dụng hiệu quả vệ tinh VINASAT – Nội dung 5”,2005. (adsbygoogle = window.adsbygoogle || []).push({});

[4] Hiệu chỉnh cảm biến la bàn HMC5883L

http://blog.bitify.co.uk/2013/11/connecting-and-calibrating-hmc5883l.html

[5] Raspberry website https://www.raspberrypi.org/

[6] Datasheet L293D

[7] Datasheet HMC5883L 3-Axis Digital Compass IC

[8] Datasheet MPU6000 & MU6050 Register Map and Descriptions Revision 4.0.

[9] Gpredict http://gpredict.oz9aec.net/

[10] Python https://www.python.org

[11] Nguyễn Hồng Ân: Hệ pin quan điện bám mặt trời thu năng lượng tối ưu, LVTN – Khoa Công Nghệ, ĐH Cần Thơ, 2011.

[12] Vũ Trọng Thư, Phạm Quang Hưng, Nguyễn Hoàng Giang – “Tiềm năng lớn của vệ tinh siêu nhỏ đáp ứng nhu cầu viễn thông, viễn thám của Việt Nam”, ĐH FPT.

54

PHỤ LỤC 1

HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH GPREDICT GIAO DIỆN CHƯƠNG TRÌNH GPREDICT

Hình PL 1 Giao diện chương trình

CÁCH SỬ DỤNG CHƯƠNG TRÌNH Xác định vị trí của trạm thu mặt đất

Trạm thu mặt đất là nơi cần thu tín hiệu từ vệ tinh.Để xác định được tọa độ của trạm thu ra làm theo các bước sau:

Bước 1: Trên giao diện Gpredict ta click chuột trái vào Edit chọn Preferences sẽ hiện ra một bảng như sau:

Vùng hiển thị vị trí của vệ tinh và trạm thu

trên bản đồ Thanh tiêu đề Tùy chọn

Biểu đồ thể hiện vị trí

55

Hình PL 2 Xác định thông tin của trạm thu

Bước 2: Chọn Ground Station, sau đó Add New để thiết lập vị trí cho trạm thu: Name: Đặt tên cho tạm thu.

Description: Mô tả đặc điểm của trạm thu. Location: Vị trí trạm thu có trên bản đồ. Latitude: Vĩ độ.

Longitude: Kinh độ.

Locator: Ranh giới nơi trạm thu. Altitude: Độ cao.

Weather St: Thời tiết nơi trạm thu.

Bước 3: Nhấp vào OK -> OK để thoát khỏi bảng thiết lập cho trạm thu.

Chọn các vệ tinh cần theo dõi

Với mỗi trạm thu, ta có thể theo dõi một lúc nhiều vệ tinh khác nhau ( trừ các vệ tinh địa tĩnh). Các bước để chọn vệ tinh cần theo dõi: (adsbygoogle = window.adsbygoogle || []).push({});

Bước 1:Trên giao diện chương trình, click chuột trái vào Module Option/Shortcut có biểu tượng , chọn , hiện ra bảng sau:

56 Search: Tìm theo tên của vệ tinh

Group: Phân loại nhóm vệ tinh

Seclected Satellites: Các vệ tinh được chọn.

:Cho vào danh sách các vệ tinh cần theo dõi. : Cho ra danh sách các vệ tinh cần theo dõi.

Bước 3: Chọn các vệ tinh cần theo dõi sau đó click OK.Lưu ý: không chọn một số lượng lớn vệ tinh để theo dõi vì dễ phát sinh lỗi hệ thống khi các dữ liệu nhiều dẫn đến mất lỗi hệ thống phần mềm.

Lưu dữ liệu

Để điều khiển hệ thống, ta cần lưu dữ liệu dưới dạng file text từ chương trình Gpredict, các bước thực hiện như sau:

Bước 1: Từ giao diện chương trình, click chuột phải vào biểu tượng Satellite options/shortcuts , chọn vệ tinh cần save dữ liệu lại, chọn Show next pass.

Hình PL 4 Chọn vệ tinh

Bước 2: Chọn biểu tượng , hiện ra giao diện:

Hình PL 5 Lưu lại file text

Save in folder: Chọn thư mực lưu dữ liệu. Save using file name: Tên file text cần lưu

Save as: lưu dưới dạng tập tin, thường là tập tin dạng *.txt

File contents: tùy chọn lưu dữ liệu, để sử dụng dữ liệu cho hệ thống chọn Data only Bước 3: Chọn rồi chọn Close để đóng của sổ.

57

PHỤ LỤC 2

HƯỚNG DẪN SỬ DỤNG GIAO DIỆN VÀ ĐIỂU KHIỂN HỆ THỐNG GIỚI THIỆU CÔNG CỤ VẼ GIAO DIỆN CỦA HỆ THỐNG

Tkinter là phần mềm sử dụng ngôn ngữ lập trình kết hợp với giao diện đồ họa để tạo ra các công cụ lập trình giao diện phục vụ người dùng.Tkinter có thể sử dụng cho nhiều ngôn ngữ khác nhau, tuy nhiên nó là một phần mềm phổ biến nhất dành cho ngôn ngữ Python và được đánh giá là một công cụ mạnh nên việc học cách sử dụng bộ công cụ này không hề đơn giản. Tkinter được thiết kế như là một giao diện người sử dụng do yêu cầu thực tế dành cho riêng ngôn ngữ Python. Do mục đích tìm hiểu về ngôn ngữ Python để ứng dụng vào hệ thống, nhóm thực hiện sử dụng công cụ Tkinter để tạo ra giao diện điều khiển hệ thống giá ang-ten để bám sát vệ tinh Cubesat.

GIỚI THIỆU VỀ GIAO DIỆN CỦA HỆ THỐNG

Hình PL 6 Giao diện chương trình

Chức năng hoạt động của chương trình như sau:

 Open file: Mở file text đã lưu từ chương trình Gpredict.  GPREDICT: Mở chương trình Gpredict.

 Run: Khởi động hệ thống.

Thanh tiêu đề Các thao tác với tập tin

Nút tùy chọn Vùng mô phỏng dữ liệu

58  Stop: Ngừng chương trình giám sát vệ tinh.

 Đồ thị truyền: Mở đồ thị truyền dữ liệu từ file text đến hệ thống.  Đồ thị kết quả: Mở biều đồ kết quả thực hiện của hệ thống.  Đồ thị sai số: Mở đồ thị để xem sai số của hệ thống

 Help: Cách sử dụng chương trình.

CÁC BƯỚC SỬ DỤNG GIAO DIỆN CỦA HỆ THỐNG (adsbygoogle = window.adsbygoogle || []).push({});

Bước 1: Để chạy chương trình , ta đến thực mục chứa chương trình gõ lệnh python giaodien.py trong cửa sổ terminal.

Hình PL 7 Lệnh shell gọi chương trình chính

Bước 2: Hiện ra giao diện chương trình , click chuột trái vào , chọn file text lưu dữ liệu của vệ tinh cần theo dõi, click vào Open.

Hình PL 8 Mở file text chứa dữ liệu

Bước 3: Click chuột trái vào Run để khởi động hệ thống, dữ liệu sẽ được mô phỏng trên giao diện chương trình khi hệ thống đang chạy.

Hình PL 9 Mô phỏng dữ liệu khi quay

59 Bước 5: Nhấp chuột trái vào Transmit và Result trong phần Graph để xem biểu đồ của dữ liệu và kết quả thực hiện được.

Hình PL 10 Biểu đồ thể hiện dữ liệu của hệ thống theo thời gian

Hình PL 11 Biểu đồ thể hiện kết quả của hệ thống theo thời gian

Bước 6 : Nhấp vào Error trong Graph để xem sai số của hệ thống.

Một phần của tài liệu thiết kế và thực hiện giá ăng ten tự xoay bám theo quỹ đạo của vệ tinh cubesat (Trang 48)