Vng cm bin hng ngoi SArduino Training 2018
Vòng cảm biến hồng ngoại SArduino Training 2018 cho THPT Saigon Institute of Technology Biên soạn: IT Saigon. Tech - 2018 1
Cảm biến hồng ngoại ( module TCRT 5000 ) Nguyên lý: • Gồm một mắt phát và thu hồng ngoại. • Khi nhân được tín hiệu hồng ngoại từ đèn phát thì đèn thu sẽ hoạt động. • Khi có ánh sáng hồng ngoại từ led phát, nếu có một vật cản, ánh sáng sẽ được phản xạ lại led thu. • Ứng dụng: dùng trong các ứng dụng phát hiện vật cản, xe dò đường, . . • Datasheet: https: //www. vishay. co m/docs/83760/tcrt 5000. pdf 2
Nguyên lý hoạt động 3
Vòng cảm biến 16 mắt hồng ngoại a. Mặt dưới b. Mặt trên c. Gắn vào xe • Vòng cảm biến có đường kính : 24 cm • Gồm 16 mắt hồng ngoại, bố trí xung quanh vòng tròn • Mỗi mắt cách nhau một góc : 22. 5 độ 4
Bảng kết nối chân cảm biến Mạch Arduino U 0 – U 15 A 0 – A 15 5
Bảng kết nối chân cảm biến(tt) Mạch cảm biến Mạch Arduino 0 V GND 5 V 5 V 6
Sơ đồ bố trí cảm biến 1 h án B U 5 U 4 U 3 U 6 U 2 U 7 U 1 U 0 U 8 Bánh 3 U 15 U 9 U 14 U 10 2 B á nh *Robot nhìn từ trên xuống U 11 U 12 U 13 7
*Lưu ý: Pseudo code là chương trình đề xuất, người dùng cần điều chỉnh cú pháp và chỉnh sửa cho phù hợp với ngôn ngữ mình sử dụng Đọc tín hiệu analog Pseudo code (code giả)* analog. Read (sensor. Pin); //Khi đó giá trị sensor. Val sẽ thay đổi theo khoảng (liên tục) từ 0 -1023. //Nghĩa là nếu sensor. Val > 511. 5 có thể xem như cảm biến bắt đầu nằm //trên vùng màu đen, và ngược lại sensor. Val < 511. 5 có thể xem như cảm //biến bắt đầu nằm trên vùng màu trắng … 8
Code mẫu Pascal {Chuong trinh doc gia tri analog từ cảm biến U 0} uses STArduino; const cambien_0 = A 0; procedure setup; begin serial. Begin(9600); pin. Mode(cambien_0, INPUT); end; begin value: = analog. Read(cambien_0); serial. Print. String('Value: '); serial. Println. Long(value); delay(50); end; begin setup; loop; end. procedure loop; var value: integer; 9
Code mẫu Arduino IDC (C/C++) /* Chuong trinh doc gia tri analog từ cảm biến U 0 */ void loop(){ int value; value = analog. Read (cambien_0); #define cambien_0 A 0 Serial. print (“Value: “); Serial. print (value); void setup(){ } Serial. begin(9600); Serial. print (“n”); pin. Mode(cambien_0, INPUT); delay (50); } 10
*Lưu ý: Pseudo code là chương trình đề xuất, người dùng cần điều chỉnh cú pháp và chỉnh sửa cho phù hợp với ngôn ngữ mình sử dụng Gợi ý: Nếu đọc nhiều cảm biến (n) nên dùng mảng và vòng lặp thay vì dùng nhiều (n) câu lệnh analog. Read giống nhau: Pseudo Code (Code giả)*: //Khai báo mảng n chân cảm biến và n giá trị cảm biến int cambien[n] = {A 0, A 1, …, An}; int value[n]; //Tạo 1 vòng lặp để lấy các giá trị cảm biến for (int i = 0; i <= n; i++){ value[i] = analog. Read(cambien[i]); } 11
- Slides: 11