Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
3,48 MB
Nội dung
Header Page of 161 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌCSƯ PHẠM THÀNH PHỐ HỒ CHÍ MINH KHOA VẬTLÍ NGÔ MINH NHỰT NGHIÊNCỨUTHIẾTKẾ,CHẾTẠOBỘCẢMBIẾNGIATỐCVÀLỰCSỬDỤNGTRONGDẠYHỌCVẬTLÍTRUNGHỌCPHỔTHÔNG LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC Thành phố Hồ Chí Minh – 2016 Footer Page of 161 Header Page of 161 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌCSƯ PHẠM THÀNH PHỐ HỒ CHÍ MINH KHOA VẬTLÍ NGÔ MINH NHỰT NGHIÊNCỨUTHIẾTKẾ,CHẾTẠOBỘCẢMBIẾN ĐO GIATỐCVÀLỰCSỬDỤNGTRONGDẠYHỌCVẬTLÍTRUNGHỌCPHỔTHÔNG Ngành: SƯ PHẠM VẬTLÍ Mã số: 102 NGƯỜI HƯỚNG DẪN KHOA HỌC ThS MAI HOÀNG PHƯƠNG Thành phố Hồ Chí Minh – 2016 Footer Page of 161 Header Page of 161 LỜI CẢM ƠN Trên thực tế thành công mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp người khác Trong suốt thời gian từ bắt đầu học tập giảng đường đại học đến nay, em nhận nhiều quan tâm, giúp đỡ quý Thầy Cô, gia đình bạn bè Bằng tất lòng biết ơn sâu sắc, em xin gửi lời cảm ơn đến quý Thầy Cô Khoa Vậtlí Trường Đại HọcSư Phạm Thành Phố Hồ Chí Minh, người tận tình truyền đạt kiến thức quý báo cho em suốt thời gian em học trường Em xin gửi lời cảm ơn chân thành đến Thầy Mai Hoàng Phương, người nhiệt tình, tận tâm, chu đáo, cung cấp kiến thức hướng dẫn em thực đề tài Thầy người truyền cho em niềm đam mê, yêu thích khám phá Vật lí, truyền cho em lòng yêu nghề giáo cao quí mà theo đuổi Bên cạnh đó, em xin gửi lời cảm ơn đến Thầy Nguyễn Lâm Duy, người tận tình hướng dẫn mặt kỹ thuật để em hoàn thành tốt luận văn Em xin cảm ơn Thầy Nguyễn Huỳnh Duy Khang Thầy Nguyễn Tấn Phát, người bên cạnh động viên, hướng dẫn hỗ trợ lúc em gặp khó khăn thực luận văn Em xin gửi lời cảm ơn đến Thầy, Cô giảng viên Khoa Vật Lý, trường Đại họcSư Phạm Thành phố Hồ Chí Minh – người trang bị cho em kiến thức hữu ích giúp em hoàn thành luận văn Cuối cùng, em xin gửi lời cảm ơn đến gia đình, bạn bè – người động viên, chia sẽ, giúp đỡ đóng góp ý kiến quí báu suốt trình thực luận văn Em xin chân thành cảm ơn! TP Hồ Chí Minh, ngày 15 tháng 04 năm 2016 Sinh viên Ngô Minh Nhựt Footer Page of 161 Header Page of 161 I MỤC LỤC MỤC LỤC I DANH MỤC CÁC BẢNG VI DANH MỤC CÁC CHỮ VIẾT TẮT VII MỞ ĐẦU 1 Tổng quan tình hình nghiêncứu .1 Mục tiêu nghiêncứu Phương pháp nghiêncứu Đối tượng phạm vi nghiêncứu Nhiệm vụ nghiêncứu Những đóng góp đề tài .3 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 TÍNH TÍCH CỰC VÀ SÁNG TẠO CỦA HỌC SINH TRONGHỌC TẬP 1.1.1 Tính tích cực HS học tập .4 1.1.2 Tính sáng tạo HS học tập 1.1.3 Phát huy tính tích cực lực sáng tạodạyhọcvậtlí dựa phương pháp dạyhọc giải vấn đề 1.2 THÍ NGHIỆM TRONGDẠYHỌCVẬTLÍ 1.2.1 Thí nghiệm vậtlí 1.2.2 Vai trò thí nghiệm tiến trình dạyhọcvậtlí 1.2.3 Quy trình xây dựngsửdụng thí nghiệm dạyhọcvậtlí 1.3 GIỚI THIỆU VỀ BỘ THÍ NGHIỆM KẾT NỐI MÁY TÍNH 14 1.3.1 Vi điều khiển Atmega328P 14 1.3.2 Board Arduino 16 1.3.3 Chuẩn phát sóng radio 17 1.4 TỔNG QUAN VỀ CẢMBIẾN 19 1.4.1 Cảmbiến đo lực 19 1.4.2 Cảmbiến đo giatốc 20 1.4.3 Kỹ thuật lập trình ngôn ngữ Labview 23 Footer Page of 161 Header Page of 161 II CHƯƠNG 2: THIẾT KẾ VÀCHẾTẠO PHẦN CỨNG CỦA BỘ THÍ NGHIỆM 26 2.1 CẢMBIẾN ĐO LỰC 26 2.1.1 Yêu cầu chếtạo 26 2.1.2 Chếtạo 26 2.2 CẢMBIẾN ĐO GIATỐC 29 2.2.1 Yêu cầu chếtạo 29 2.2.2 Chuẩn cảmbiến 29 2.3 THIẾT KẾ MẠCH PHÁT SÓNG RADIO TRUYỀN DỮ LIỆU 32 2.3.1 Khối nguồn 33 2.3.2 Khối xử lí tín hiệu từ cảmbiến 34 2.3.3 Vi điều khiển phát sóng radio truyền liệu 34 2.4 MẠCH GIAO TIẾP MÁY TÍNH VÀBỘ THÍ NGHIỆM HOÀN CHỈNH 35 CHƯƠNG 3: THIẾT KẾ GIAO DIỆN DẠYHỌC 37 3.1 THIẾT KẾ GIAO DIỆN DẠYHỌC BẰNG NGÔN NGỮ LẬP TRÌNH LABVIEW 37 3.1.1 Đọc liệu từ phần cứng thông qua chuẩn giao tiếp nối tiếp 38 3.1.2 Kiểm tra xử lí tương tác người dùng giao diện dạyhọc 38 3.2 KẾT QUẢ THIẾT KẾ GIAO DIỆN DẠYHỌC 38 3.2.1 Thanh công cụ 39 3.2.2 Bảng biểu đồ thị 40 3.2.3 Thiết lập thông số đọc liệu 41 3.2.4 Các bước thu thập liệu từ phần cứng 41 CHƯƠNG 4: KHẢO SÁT VÀ ĐÁNH GIÁ ĐỘ CHÍNH XÁC CỦA BỘ THÍ NGHIỆM 43 4.1 THÍ NGHIỆM CÁC ĐỊNH LUẬT CƠ HỌC 43 4.1.1 Mục đích thí nghiệm 43 4.1.2 Các bước tiến hành thí nghiệm 44 4.2 BÀN LUẬN KẾT QUẢ VÀ CÁC Ý TƯỞNG KHAI THÁC BỘ THÍ NGHIỆM TRONGDẠYHỌCVẬTLÍ 56 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 60 PHỤ LỤC 62 Chức chân vi điều khiển Atmega328P 62 Footer Page of 161 Header Page of 161 III Chương trình nạp cho arduino uno 64 Chương trình nạp vi điều khiển Atmega328P 67 Footer Page of 161 Header Page of 161 IV DANH MỤC CÁC HÌNH VẼ Hình 1 Sơ đồ cảmbiến kết nối máy tính 14 Hình Vi điều khiển Atmega328P 15 Hình Sơ đồ chân Atmega328P 15 Hình Board Arduino uno 17 Hình Module nRFL01 sơ đồ chân 18 Hình Sơ đồ kết nối module nRFL01 với vi điều khiển Atmega 328P 18 Hình Mạch cầu Wheastone strain gauge 19 Hình Mạch cầu Wheastone strain gauge bị biến dạng 20 Hình Nguyên lý đo giatốccảmbiến công nghệ MEMS 21 Hình 10 Cảmbiến đo giatốc ADXL335 22 Hình 11 Front Panel (a) Block Diagram (b) chương trình 24 Hình 12 Khối Block Diagram chương trình đọc liệu thông qua cổng COM 25 Hình Sơ đồ thí nghiệm kết nối máy tính sóng radio 26 Hình 2 Cảmbiến đo lực (Loadcell) 26 Hình Sơ đồ nguyên lí mạch khếch đại dùng IC INA125 27 Hình Đường cong chuẩn cảmbiếnlực đoạn thẳng tuyến tính 28 Hình Giatốctrọng trường đặt cảmbiến xoay theo hướng khác 30 Hình Chuẩn cảmbiếngiatốc 30 Hình Đường cong chuẩn cảmbiếngiatốc theo trục Ox 31 Hình Đường cong chuẩn cảmbiếngiatốc theo trục Oy 32 Hình Sơ đồ nguyên lí mạch xử lí tín hiệu cảmbiến phát sóng radio tần số 2.4 GHz 33 Hình 10 Sơ đồ kết nối nRFL01 với vi điều khiển 34 Hình 11 Sơ đồ kết nối nRFL01 với Ardunio uno 35 Hình 12 Bộcảmbiến đo giatốclực 35 Hình 13 Bộ thu sóng radio 35 Hình Sơ đồ thuật toán chương trình giao diện máy tính 37 Hình Giao diện dạyhọc 39 Hình 3 Chức tìm hàm tuyến tính 40 Hình Hộp thoại xuất file JPEG 40 Hình Sao chép liệu từ bảng biểu sang chương trình bảng tính Excel 41 Footer Page of 161 Header Page of 161 V Hình Bố trí thí nghiệm 45 Hình Đồ thị vận tốc – thời gian (v – t) chuyển động thẳng 46 Hình Bố trí thí nghiệm 2.1 47 Hình 4 Đồ thị giatốc – thời gian (a – t) thí nghiệm 2.1 48 Hình Bố trí thí nghiệm 2.2 49 Hình Đồ thị giatốc – thời gian (a – t) thí nghiệm 2.2 49 Hình Đồ thị lực – thời gian (F – t) chuyển động nhanh dần 50 Hình Thí nghiệm dao động điều hòa 51 Hình Đồ thị F – t giao động điều hòa 51 Hình 10 Đồ thị giatốc – thời gian (a – t) dao động điều hòa 52 Hình 11 Đồ thị lực – giatốc (F – a) dao động điều hòa 52 Hình 12 Bố trí thí nghiệm 53 Hình 13 Bố trí thí nghiệm va chạm đàn hồi 55 Hình 14 Đồ thị vận tốc – thời gian (v – t) va chạm đàn hồi 55 Footer Page of 161 Header Page of 161 VI DANH MỤC CÁC BẢNG 1.1 Các đặc tính bậc vi điều khiển Atmega328P ……………………………15 1.2 Chức chân cảmbiến ADXL335 ………………………………………22 4.1 So sánh kết đo vận tốccảmbiến phương pháp dùng cổng quang điện………………………………………………… ………………………………… 46 4.2 So sánh cảmbiếnlựcchếtạo với lực kế lò xo cảmbiếnlực hãng Vernier …………………………………………………………………….…………………… 53 Footer Page of 161 VII Header Page 10 of 161 DANH MỤC CÁC CHỮ VIẾT TẮT ADC : Analog Digital Converter – chuyển đổi tương tự sang số DC : Direct Current – dòng điện chiều GV : Giáo viên HS : Học sinh IC : Integrated Circuit – mạch tích hợp LabVIEW: Laboratory Virtual Instrumentation Engineering Workbench - Phòng thiết bị thí nghiệm ảo SGK : Sách giáo khoa THPT : Trunghọcphổthông TN : Thí nghiệm SPI: Serial Peripheral Interface Footer Page 10 of 161 54 Header Page 64 of 161 0.5 0.49 2.0 1.12 1.05 6.67 1.0 1.05 5.0 1.52 1.50 1.33 1.5 1.47 3.0 1.52 1.62 6.17 2.0 2.0 2.0 1.82 1.84 1.09 2.5 2.54 1.6 2.44 2.54 3.94 3.0 3.06 2.0 2.79 2.69 3.72 3.5 3.48 0.6 2.98 2.94 1.36 4.0 4.02 0.5 3.70 3.56 3.93 4.5 4.53 0.7 3.80 3.76 1.06 5.0 5.04 0.8 3.73 3.81 2.10 7.02 6.92 1.45 7.73 7.78 0.64 8.3 8.23 0.85 Trung 1.82 2.64 bình Như vậy, cảmbiếnlực cho kết đo tương đối xác ta so sánh với kết đo từ lực kế lò xo cảmbiến Vernier Sự sai lệch kết đo giảm dần ta đo giá trị lớn, nguyên nhân mạch xử lí tín hiệu cảmbiếnlựcsửdụng chuyển đổi ADC 10 bit để chuyển đổi tín hiệu điện áp thành tín hiệu số với 210 = 1024 giá trị phân giải Trong thí nghiệm Vernier sửdụng chuyển đổi ADC 12 bit 16 bit nên sai số dụng cụ nhỏ hơn.Vì thang đo nhỏ, thí nghiệm Vernier xác 4.1.2.5 Thí nghiệm – Kiểm chứng va chạm đàn hồi Footer Page 64 of 161 55 Header Page 65 of 161 Bố trí thí nghiệm hình 4.13 Cảmbiến đặt xe Dùng tay cung cấp cho xe vận tốc để chuyển động đến va chạm vào điểm cuối ray (1) Sau va chạm, nhờ vào lò xo (2) gắn phía trước mà xe bị đổi chiều chuyển động chuyển động thẳng phía sau Ta khảo sát vận tốc xe trước va chạm sau va chạm Hình 13 Bố trí thí nghiệm va chạm đàn hồi Hình 14 Đồ thị vận tốc – thời gian (v – t) va chạm đàn hồi Trên đồ thị v – t, trước va chạm (từ 0.8 s đến 1.5 s) xe chuyển động thẳng với vận tốc 0.8 m/s Sau va chạm (từ 1.6 đến 2.8 s) vận tốc âm chứng tỏ xe đổi chiều có giá trị không đổi gần 0.7 m/s Độ lớn vận tốc xe sau va chạm không đổi chứng Footer Page 65 of 161 Header Page 66 of 161 56 tỏ sau va chạm xe chuyển động thẳng đều, nhiên nhỏ vận tốclúc đầu Nguyên nhân va chạm chưa hoàn toàn đàn hồi lực ma sát xe ray làm mát lượng sau va chạm 4.2 BÀN LUẬN KẾT QUẢ VÀ CÁC Ý TƯỞNG KHAI THÁC BỘ THÍ NGHIỆM TRONGDẠYHỌCVẬTLÍ Từ thí nghiệm 1-2-3, ta thấy cảmbiến cho kết tốt việc đo giatốc chuyển động đối tượng cần khảo sát với sai số nhỏ 5%, đồng thời việc thu thập xử lí số liệu nhanh chóng, đơn giản so với phương pháp dùng cần rung điện dùng cổng quang đồng hồ số Tuy nhiên, cảmbiếnlực có sai số tương đối lớn, điều xuất phát từ việc thiết kế mạch xử lí tín hiệu chưa tốt Ngoài sửdụng để khảo sát định luật Newton, cảmbiếnsửdụng khảo sát dạng chuyển động học như: chuyển động thẳng đều, chuyển động thẳng biến đổi đều, chuyển động tròn Ta bố trí thí nghiệm đo giatốc hướng tâm cách đặt cảmbiến lên đĩa tròn nằm ngang xoay quanh trục với vận tốc góc chỉnh Xét hệ quy chiếu gắn với đất, đĩa xoay coi cảmbiến chuyển động tròn Tiến hành thay đổi tốc độ quay đĩa đo giá trị giatốc hướng tâm tương ứng, từ ta khảo sát mối quan hệ a ht -ω Footer Page 66 of 161 Header Page 67 of 161 57 KẾT LUẬN Bộcảmbiếnchếtạo đạt số thông số sau: − Kích thức nhỏ gọn cm x 11.5 cm x cm, khối lượng 230 g (tính pin 9V) − Đo giatốc khoảng từ -30 m/s2 đến 30 m/s2 với sai số ±0.06 m/s2 − Cảmbiếnlực đo theo chiều nén kéo: F keo < 43 N, F nen < N Sai số 0.05 N − Tốc độ lấy mẫu tối đa 50 mẫu/giây − Khoảng cách tối đa mà máy tính nhận liệu từ cảm biến: 10 m môi trường có vật cản, 20 m môi trường không vật cản − Thời lượng pin: đến sửdụng liên tục Bộcảmbiến cho kết đo giatốc xác với sai số nhỏ, rút ngắn thời gian đo đạc thu nhận số liệu Với giao diện đơn giản, dễ sử dụng, người dùng dễ dàng thao tác với chương trình việc đo đạc xử lí kết thí nghiệm Ngoài chương trình cung cấp chức toán học giúp tiết kiệm thời gian cho việc xử lí số liệu vẽ đồ thị nhanh hơn, tăng tính chủ động tích cực giáo viên học sinh dạy thực hành thí nghiệm vậtlíBộ thí nghiệm dùng để dạy thí nghiệm phần động học, động lực học, định luật bảo toàn, dao động chương trình vậtlíphổthông Với ưu điểm nối bậc truyền nhận liệu không dây (khoảng cách xa có mà máy tính nhận liệu từ cảmbiến 10 m môi trường có vật cản), giúp cho việc bố trí tiến hành thí nghiệm đơn giản hiệu Tuy nhiên cảmbiếnlực có độ nhạy chưa cao dẫn đến kết đo có sai số lớn, nên cần phải thiết kế chỉnh sửa lại mạch xử lí tín hiệu từ cảmbiếnlực Footer Page 67 of 161 Header Page 68 of 161 58 Nếu khắc phục nhược điểm tồn cải tiến, nâng cấp chương trình giao tiếp, thí nghiệm triển khai, ứng dụng trường trunghọcphổthông khoa Vật Lý, trường Đại họcSư phạm thành phố Hồ Chí Minh nói riêng trường Đại học toàn quốc nói chung Footer Page 68 of 161 59 Header Page 69 of 161 DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ Ngô Minh Nhựt (2015), Xây dựng số thí nghiệm chương Động học – Vậtlí 10 với cảmbiến siêu âm phần mềm Labview, Kỉ yếu Hội nghị sinh viên nghiêncứu khoa học năm học 2014 – 2015, Trường Đại HọcSư Phạm TP Hồ Chí Minh, tr.163 – 172 Ngô Minh Nhựt, Mai Hoàng Phương (2015), Xây dựng số thí nghiệm chương Động học – Vậtlí 10 với cảmbiến siêu âm phần mềm Labview, Tạp chí khoa học – Đại HọcSư Phạm TP Hồ Chí Minh, Số 8(74), tr.60 – 69 Footer Page 69 of 161 60 Header Page 70 of 161 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Hoàng Văn Huệ, Phùng việt Hải, Nguyễn Thị Thanh Hương (2012), Nghiêncứuchếtạocảmbiến thí nghiệm ghép nối với máy vi tính dạyhọcvậtlí trường phổ thông, Đề tài khoa học công nghệ cấp bộ, Trường Đại Học Tây Nguyên [2] Nguyễn Minh Trí (2014), Mạch Khuếch đại strain gauge dùng vi mạch chuyên dụng 1B31AN, Tạp chí khoa học – Trường Đại học Cần Thơ, tr 26 – 29 [3] Nguyễn Văn Tấn (2014), Thiết kế sửdụng số thí nghiệm chương “Động lựchọc chất điểm” – Vậtlí 10 với cảmbiếnlựccảmbiến siêu âm theo quan điểm dạyhọc giải vấn đề, Luận Văn Thạc Sĩ Giáo Dục – Trường Đại họcSư Phạm TP Hồ Chí Minh, tr.20 – 23 [4] Nguyễn Bá Hải (2011), Lập trình LabView: Trình độ bản, Đại họcSư Phạm Kỹ Thuật TP Hồ Chí Minh [5] Vũ Trung Kiên (2011), Nghiêncứuthiết kế chếtạo mô hình thiết bị xác định góc đặt góc bánh xe ô tô, Luận văn Thạc sĩ kỹ thuật, Đại Học Đà Nẵng Tiếng Anh [6] Jeffery Travis, Jim Kring (2006), Labview for everyone, Prentice Hall [7] National Intrusment - Malan Shiralker (2007), Labview Graphical Course (2007), Rice University Houston Texas [8] National Instrument (1998), Instrumentation amplifier with Precision Voltage Reference, Texas Tr.13 [9] AnalogDevices (2009), Small, Low Power, 3-Axis ± g Accelerometer, U.S.A, One Technology Way Footer Page 70 of 161 Header Page 71 of 161 61 [10] Atme Corporation (2015), Atme 8-Bit Microcontroller With 4/8/16/32Kbytes In-System program Flash Datasheet, USA, San Jose [11] Nordicn Semiconductor (2008), nRFL01+Singal Chip 2.4GHz Transciver Prelimiary Product Specification v1.0 [12] http://arduino.cc Footer Page 71 of 161 62 Header Page 72 of 161 PHỤ LỤC Chức chân vi điều khiển Atmega328P CHÂN CHỨC NĂNG TÊN PC6/RESET/PCINT14 PC6: Port C, Bit PD0/RXD/PCIN16 PD0: Port D, Bit RXD: USART Input Pin PD1/TXD/PCIN17 PD1: Port D, Bit TXD: USART Output Pin PD2/INTO/PCIN18 PD2: Port D, Bit INT0: External Interrupt Input PD3/INT1/OC2B/PCIN19 PD3: Port D, Bit INT1: External Interrupt Input PD4/T0/XCK/PCIN20 PD4: Port D, Bit XCK: USART External Clock Input/Output T0: Timer/Counter External Counter Input VCC Chân điện áp GND Chân tiếp đất PB6/XTAL1/PCINT6 PB6: Port B, bit XTAL1: Chip Clock Osillator pin1 10 PB7/XTAL2/PCINT7 PB6: Port B, bit XTAL1: Chip Clock Osillator pin1 11 PD5/T1 /PCIN21 PD5: Port D, Bit 12 PD6/AIN0/PCINT22 PD6: Port D, Bit AIN0: Analog Comparator Positive Input Footer Page 72 of 161 Header Page 73 of 161 13 PD7/AIN1/PCINT23 63 PD7: Port D, Bit AIN1: Analog Comparator Positive Input 14 PDO/PCINT0 PD0: Port D, Bit 15 PB1/PCINT1 PB1: Port B, Bit 16 PB2/PCINT2 PB2: Port B, Bit 17 PB3/MOSI/PCINT3 MOSI: SPI Bus Master Output/Slave Input PB3: Port B, Bit 18 PB4/MISO/PCINT4 MOSI: SPI Bus Master Input/Slave Output PB4: Port B, Bit 19 PB5/SCK/PCINT5 SCK: SPI Bus Master Clock Input PB5: Port B, Bit 20 AVCC 21 VREF Điện áp tham chiếu 22 GND Chân tiếp đất 23 PC0/ADC0/PCINT8 PC0; Port C, Bit ADC0: ADC Input Channel 24 PC1/ADC1/PCINT8 PC1; Port C, Bit ADC1: ADC Input Channel 25 PC2/ADC2/PCINT8 PC2; Port C, Bit ADC2: ADC Input Channel 26 PC3/ADC3/PCINT8 PC3; Port C, Bit ADC3: ADC Input Channel 27 PC4/ADC4/SDA/PCINT8 PC4; Port C, Bit ADC4: ADC Input Channel Footer Page 73 of 161 Header Page 74 of 161 64 SDA: Tow wire Serial Bus Data Input/Output Line 28 PC5/ADC5/SCL/PCINT8 PC5; Port C, Bit ADC5: ADC Input Channel SCL: Tow-wire Serial Bus Clock Line 2 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chương trình nạp cho arduino uno //Code mạch thu sóng radio //Khai báo thư viện sửdụng chương trình************************ #include #include #include const uint64_t pipe = 0xE8E8F0F0E1LL; // Định nghĩa đường truyền liệu RF24 radio(9,10); // Tạo phát sóng Radio //Khai báo biến***************************************************** int cambien[4]; // Tạo mảng phần tử cho việc đọc liệu từ phát String gx, gy, gz, gt; String dulieu; //Khai báo biến chức lọc tín hiệu từ cảm biến.***************** #define filterSamples 13 int sensSmoothArray1 [filterSamples]; // array for holding raw sensor values for sensor1 int sensSmoothArray2 [filterSamples]; // array for holding raw sensor values for sensor2 int sensSmoothArray3 [filterSamples]; // array for holding raw sensor values for sensor3 int sensSmoothArray4 [filterSamples]; // array for holding raw sensor values for sensor4 int rawData1, smoothData1; // variables for sensor1 data int rawData2, smoothData2; // variables for sensor2 data int rawData3, smoothData3; // variables for sensor3 data int rawData4, smoothData4; // variables for sensor4 data //***************************************** void setup() { Serial.begin(9600); //Thiết lập tốc độ truyền liệu với máy tính radio.begin(); radio.setDataRate(RF24_2MBPS); // Thiết lập tốc độ truyền nhận liệu với mạch phát sóng 2MBPS radio.openReadingPipe(1,pipe); Footer Page 74 of 161 Header Page 75 of 161 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 65 radio.startListening(); } //*********************************************** void loop() { if ( radio.available() ) { // Đọc liệu nhận //digitalWrite(led) == HIGH; bool done = false; while (!done) { // Đọc liệu done = radio.read( cambien, sizeof(cambien) ); rawData1 = cambien[0]; rawData2 = cambien[1]; rawData3 = cambien[2]; rawData4 = cambien[3]; } } Else //Nếu không kết nối { rawData1 = 1024; rawData2 = 1024; rawData3 = 1024; rawData4 = 1024; } // xử lí nhiễu ************************************************************* smoothData1 = digitalSmooth(rawData1, sensSmoothArray1); smoothData2 = digitalSmooth(rawData2, sensSmoothArray2); smoothData3 = digitalSmooth(rawData3, sensSmoothArray3); smoothData4 = digitalSmooth(rawData4, sensSmoothArray4); // Xuất liệu qua máy tính************************************************ if ( smoothData1 < 1000) { gx = String(smoothData1) + " "; } else { gx = String(smoothData1); } if ( smoothData2 < 1000) { gy = String(smoothData2) + " "; } else { gy = String(smoothData2); } if ( smoothData3 < 1000) { gz = String(smoothData3) + " "; Footer Page 75 of 161 Header Page 76 of 161 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 66 } else { gz = String(smoothData3); } if ( smoothData4 < 1000) { gt = String(smoothData4) + " "; } else { gt = String(smoothData4); } dulieu = gx + gy + gz + gt; Serial.println(dulieu); } //*************************************************************** int digitalSmooth(int rawIn, int *sensSmoothArray){ // "int *sensSmoothArray" passes an array to the function - the asterisk indicates the array name is a pointer int j, k, temp, top, bottom; long total; static int i; // static int raw[filterSamples]; static int sorted[filterSamples]; boolean done; i = (i + 1) % filterSamples; // increment counter and roll over if necc - % (modulo operator) rolls over variable sensSmoothArray[i] = rawIn; // input new data into the oldest slot for (j=0; j sorted[j + 1]){ // numbers are out of order - swap temp = sorted[j + 1]; sorted [j+1] = sorted[j] ; sorted [j] = temp; done = 0; } } } // throw out top and bottom 15% of samples - limit to throw out at least one from top and bottom bottom = max(((filterSamples * 15) / 100), 1); top = min((((filterSamples * 85) / 100) + ), (filterSamples - 1)); // the + is to make up for asymmetry caused by integer rounding k = 0; total = 0; Footer Page 76 of 161 Header Page 77 of 161 67 115 for ( j = bottom; j< top; j++){ 116 total += sorted[j]; // total remaining indices 117 k++; 118 } 119 return total / k; // divide by number of samples 120 } 3 10 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 Chương trình nạp vi điều khiển Atmega328P //Code nạp cho arduino //Khai báo thư viện sửdụng chương trình********************** #include #include #include //Khai báo biến****************************************************** int i; float trungbinh; const uint64_t pipe = 0xE8E8F0F0E1LL; // Định nghĩa đường truyền RF24 radio(9,10); // Tạo phát Radio int cambien[4]; // Khai báo mảng phần tử để đọc tín giá trị cảmbiến // Khai báo cho biến xử lí nhiễu #define SensorPin1 #define SensorPin2 #define SensorPin3 #define SensorPin4 //**************************************************************** void setup() { Serial.begin(9600); analogReference(EXTERNAL); // Khai báo điện áp tham chiếu cho Bộ ADC vi điều khiển radio.begin(); radio.setDataRate(RF24_2MBPS); radio.openWritingPipe(pipe); } //*************************************************************** void loop() { float trungbinh; trungbinh = 0; cambien[0] = analogRead(SensorPin1); // Đọc tín hiệu truc X cảmbiến ADXl335 cambien[1] = analogRead(SensorPin2); // Đọc tín hiệu truc y cảmbiến ADXl335 cambien[2] = analogRead(SensorPin3); // Đọc tín hiệu truc z cảmbiến ADXl335 for (i=0; i