Mô hình tự mở tắt đèn dùng cảm biến cường độ ánh sáng BH1750FVI
Trang 1LỜI MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của thế giới về mọi mặt, trong đó khoa học công nghệ nói chung và các lĩnh vực về điện tử nói riêng có nhiều phát triển vượt bậc, góp phần làm cho thế giới ngày càng hiện đại và văn minh hơn Sự phát triển của khoa học công nghệ về các thiết bị, linh kiện điện tử với các đặc điểm như độ chính xác cao, tốc độ nhanh, gọn nhẹ và hoạt động ổn định Và từ lâu, cảm biến được sử dụng như những thiết bị cảm nhận và phát hiện Nhưng vài năm gần đây, chúng mới thể hiện vai trò quan trọng trong kỹ thuật và công nghiệp, đặc biệt là trong lĩnh vực đo lường, kiểm tra và điều khiển
tự động
Từ những tầm quan trọng và ứng dụng đó, nhóm 2 đã chọn đề tài MÔ HÌNH TỰ MỞ/TẮT ĐÈN DÙNG CẢM BIẾN CƯỜNG ĐỘ ÁNH SÁNG BH1750FVI nhằm mục đích tìm hiểu, nghiên cứu về nguyên lý làm việc của các cảm biến ánh sáng nói chung và thiết bị cảm biến cường độ ánh sáng BH1750FVI nói riêng Bên cạnh đó một phần cũng tìm hiểu quá trình hoạt động
và điều khiển, truy xuất của thiết bị màn hình LCD, Arduino và có thể mô phỏng ứng dụng thực tế
Mặc dù rất cố gắng để hoàn thành mô hình nhưng cũng không thiếu những sai sót, mong thầy và các bạn đóng góp ý kiến để có thể hoàn hiện hơn
về sản phẩm Qua đây, nhóm 2 cũng chân thành cảm ơn thầy Nguyễn Kim Suyên, thuộc Khoa Điện – Điện tử, Trường Cao đẳng Công Thương TP.HCM phụ trách môn học “Đo lường và cảm biến” và đã hướng dẫn nhóm 2 thực hiện
mô hình này
Người thực hiện (Nhóm 2)
Trang 2MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ CẢM BIẾN BH1750FVI 3
1.1 KHÁI NIỆM CHUNG VỀ CẢM BIẾN 3 1.2 KHÁI NIỆM VỀ CƯỜNG ĐỘ ÁNH SÁNG (HAY ĐỘ RỌI) 3
2.2 SƠ ĐỒ LẮP MẠCH VÀ MÔ HÌNH NỐI DÂY THỰC TẾ 7 2.3 QUÁ TRÌNH LẬP TRÌNH CODE CHO ARDUINO 8
Trang 3Tín hiệu điện
Đại lượng
vật lý Cảm biến
CHƯƠNG 1 TỔNG QUAN VỀ CẢM BIẾN BH1750FVI
1.1 KHÁI NIỆM CHUNG VỀ CẢM BIẾN
Cảm biến là thiết bị dùng để cảm nhận biến đổi các đại lượng vật lý thành tín hiệu điện và có thể xử lý được
1.2 KHÁI NIỆM VỀ CƯỜNG ĐỘ ÁNH SÁNG (HAY ĐỘ RỌI)
Lux (Ký hiệu : lx) là đơn vị độ rọi trong hệ SI Nó được sử dụng trong trắc quang học để đánh giá cường độ ánh sáng cảm nhận được Đây là một đơn
vị dẫn suất trong hệ SI, nghĩa là nó được định nghĩa từ các đơn vị “cơ bản” hơn Cụ thể, đo độ rọi bằng quang thông trên diện tích :
1 lx = 1 lm/m2
lm (lumen) : đơn vị đo quang thông trong SI
1.3 KHÁI QUÁT VỀ BH1750FVI
Cảm biến cường độ ánh sáng là một loại cảm biến thuộc về cảm biến quang, hoạt động cảm nhận ánh sáng dựa vào thiết bị cảm biến
Cảm biến cường độ ánh sáng BH1750FVI được sử dụng để đo cường độ ánh sáng theo đơn vị “lux” Cảm biến có ADC nội và bộ tiền xử lý nên giá trị được
Trang 4xuất ra là giá trị trực tiếp cường độ ánh sáng lux mà không phải qua bất kỳ xử lý hay tính toán nào thông qua giao tiếp I2C
THÔNG SỐ :
Nguồn : 3 – 5V
Các chân giao tiếp (5 chân ) : VCC – ADD – SDA – SCL – GND
Giao tiếp : I2C
Khoảng đo : 0 – 65535 lux
Kích cỡ : 21*16*3.3 mm
SƠ ĐỒ HOẠT ĐỘNG :
MỘT SỐ VÍ DỤ VỀ ĐỘ RỌI CỦA ÁNH SÁNG :
Buổi tối và ánh trăng : 0 – 1 lux
Trời nhiều mây trong nhà : 5 – 50 lux
Trời nhiều mây ngoài trời : 50 – 500 lux
Trời nắng trong nhà : 100 – 1000 lux
Trang 5CHƯƠNG 2 QUÁ TRÌNH THỰC HIỆN
2.1 CÁC LINH KIỆN SỬ DỤNG
1 Cảm biến cường độ ánh sáng (lux) BH1750FVI : Dùng để nhận ánh sáng từ bên ngoài thông qua cảm biến
2 Board Arduino Nano (Atmega328) : Kết nối với cảm biến, màn hình LCD, BH1750FVI và điều khiển đèn
3 LCD 16x02 : Xuất ra giá trị cường độ ánh sáng và thông báo đèn mở/tắt
Trang 64 Led : Thay thế đèn cho mô hình
5 Biến trở 10K : Dùng để điều chỉnh độ tương phản của LCD
6 Điện trở : 330 x 2 : Hạn dòng cho Led và đèn LCD
7 Bus cắm Testboard : Kết nối các linh kiện thành mạch điều khiển
8 Testboard : Làm đế cắm cho linh kiện và bus cắm
9 Phần mềm nạp code cho arduino : Arduino IDE
Trang 72.2 SƠ ĐỒ LẮP MẠCH VÀ MÔ HÌNH NỐI DÂY
Sử dụng nguồn 5V bằng cáp truyền dữ liệu cho Arduino Nano từ Laptop hoặc sạc USB nguồn 5V Cũng có thể cấp nguồn 5V bằng PIN cho Aruduino Nano thông qua chân Vin và GND của board
Trang 82.3 QUÁ TRÌNH LẬP TRÌNH CODE CHO ARDUINO
Sử dụng phần mềm Arduino IDE để tiến hành nạp code cho Arduino
Cắm cáp truyền dữ liệu của Arduino vào Laptop/PC
Kiểm tra Driver cho máy tính, nếu máy chƣa có driver, tiến hành tải và cài driver cho máy (CH340)
Khởi động phần mềm
Arduino IDE, trên thanh
công cụ chọn Sketch để
nạp thƣ viện BH1750FVI
Trang 9Chọn Tool trên thanh công cụ để chọn sử dụng Arduino Nano
Tiến hành lập trình code :
// Chuong trinh do cuong do anh sang de dieu khien den => xuat ra LCD
#include <BH1750FVI.h> // Sensor Library
#include <Wire.h> // I2C Library
#include <LiquidCrystal.h> // LCD Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
uint16_t Light_Intensity=0;
BH1750FVI LightSensor;
void setup() {
lcd.begin(16, 2);
LightSensor.begin();
LightSensor.SetAddress(Device_Address_H);
LightSensor.SetMode(Continuous_H_resolution_Mode);
pinMode(9, OUTPUT); // Dinh nghia nguon 5V cho chan D9 de dieu khien led lcd.setCursor(0, 0); // Dua con tro LCD den o 1 hang 1
lcd.print("BH1750FVI Sensor");
lcd.setCursor(1, 1); // Dua con tro LCD den o 2 hang 2
lcd.print("Please Wait ");
Trang 10delay(3000); // Cho 3 giay
lcd.clear(); // Xoa man hinh LCD
}
void loop() {
lcd.clear();
lcd.setCursor(0, 0); // Dua con tro LCD den o 1 hang 1
lcd.print("Ev = ");
Light_Intensity = LightSensor.GetLightIntensity(); // Gan ham tinh do anh sang cho bien lcd.print(Light_Intensity); // Xuat ra LCD gia tri cuong do anh sang lcd.setCursor(11, 0); // Dua con tro LCD den o 12 dong 1
lcd.print("(lux)");
lcd.setCursor(0, 1); // Dua con tro LCD den o 2 cot 1
lcd.print("Light : ");
digitalWrite(9, LOW); // Khoi tao mac dinh led tat
if(Light_Intensity < 100) {
lcd.print("ON"); // Thong bao led sang
digitalWrite(9, HIGH); // Cap nguon 5V cho chan D9 => led sang
}
else {
lcd.print("OFF"); // Thong bao led tat
digitalWrite(9, LOW); // Ngat nguon 5V cho chan D9 => led tat
}
delay(100); // Thoi gian gian cach moi lan thay doi cuong do anh sang }
Thƣ viện BH1750FVI.h
// This library for Digital Light sensor BH1750FVI
#ifndef BH1750FVI_h
#define BH1750FVI_h
#include "Arduino.h"
#include "Wire.h"
#define Device_Address_L 0x23 // Device address when address pin LOW
#define Device_Address_H 0x5C // Device address when address pin LOW
//all command here taken from Data sheet OPECODE Table page 5
#define Power_Down 0x00
#define Power_On 0x01
#define reset 0x07
#define Continuous_H_resolution_Mode 0x10
Trang 11#define OneTime_H_resolution_Mode2 0x21
#define OneTime_L_resolution_Mode 0x23//As well as address value
#define AddrPin 17 // Address pin enable
class BH1750FVI {
public:
BH1750FVI();
void begin(void);
void Sleep(void);
void SetMode(uint8_t MODE);
void Reset(void);
void SetAddress(uint8_t add);
uint16_t GetLightIntensity(void);
private:
void I2CWriteTo(uint8_t DataToSend);
byte address_value;
boolean state;
};
#endif
Tiến hành nạp code cho Arduino Nano :
Trang 12Quá trình nạp code thành công
Ghi chú : Mô hình này hoạt động khi cảm biến nhận ánh sáng thì sẽ xuất ra màn
hình LCD giá trị cường độ ánh sáng (với đơn vị là “lux”) và thông báo đèn đang
mở hay tắt Ở đây, code đặt định mức là 100 lux, nếu giá trị cường độ ánh sáng
Ev < 100 thì đèn tự mở và ngược lại nếu Ev ≥ 100 thì đèn tự tắt
MÔ HÌNH THỰC TẾ
Trang 13CHƯƠNG 3 KẾT LUẬN VÀ ỨNG DỤNG
Như vậy, quá trình thực hiện MÔ HÌNH TỰ MỞ/TẮT ĐÈN DÙNG CẢM
BIẾN CƯỜNG ĐỘ ÁNH SÁNG BH1750FVI của nhóm 2 đã hoàn thành Mô
hình hoạt động khi Arduino được cấp nguồn 5V
Từ việc thực hiên mô hình,chung ta có thể ứng dụng để điều khiển tự động mở/tắt đèn trong nhà, cửa hàng, mà không phải bỏ công đi mở đèn
Có thể sử dụng để nhận biết cường độ ánh sáng là bao nhiêu để ứng dụng vào việc nghiên cứu các chuyên đề khoa học về ánh sáng
Ứng dụng trong việc chiếu sáng nông nghiệp cũng như chăn nuôi, trồng trọt
Bên cạnh đó còn được sử dụng trong y học ánh sáng
Trang 14TÀI LIỆU THAM KHẢO
Trong quá trình thực hiện, nhóm có sử dụng mộ số tài liệu tham khảo :
1 Code mẫu“BH1750FVI”
2 Hướng dẫn lập trình Arduino từ arduino.vn
3 Datasheet BH1750FVI
4 Datasheet Arduino Nano (V2.3)