Mục lục:

Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt: 8 bước (có hình ảnh)
Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt: 8 bước (có hình ảnh)

Video: Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt: 8 bước (có hình ảnh)

Video: Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt: 8 bước (có hình ảnh)
Video: Sensor #11. Cách kiểm tra bộ đo gió dây nhiệt (MAF) @KENHKIENTHUCOTO 2024, Tháng bảy
Anonim
Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt
Sử dụng cảm biến nhiệt độ, nước mưa và rung động trên Arduino để bảo vệ đường sắt

Trong xã hội hiện đại, lượng hành khách đi tàu tăng lên đồng nghĩa với việc các công ty đường sắt phải làm nhiều hơn nữa để tối ưu hóa mạng lưới để theo kịp nhu cầu. Trong dự án này, chúng tôi sẽ giới thiệu ở quy mô nhỏ cách các cảm biến nhiệt độ, nước mưa và độ rung trên bảng arduino có thể giúp tăng độ an toàn cho hành khách.

Có thể hướng dẫn này sẽ hiển thị từng bước hệ thống dây cho các cảm biến nhiệt độ, nước mưa và rung động trên arduino cũng như hiển thị mã MATLAB cần thiết để chạy các cảm biến này.

Bước 1: Các bộ phận và vật liệu

1. Máy tính đã cài đặt phiên bản MATLAB mới nhất

2. Bảng Arduino

3. Cảm biến nhiệt độ

4. Cảm biến nước mưa

5. Cảm biến rung

6. Đèn LED đỏ

7. Đèn LED xanh lam

8. Đèn LED xanh

9. Đèn LED RBG

10. Buzzer

11. 18 Dây Nam-Nam

12. 3 Dây Nữ-Nam

13. 2 Dây Nữ-Nữ

14. 6 điện trở 330 ohm

15. 1 điện trở 100 ohm

Bước 2: Đi dây cảm biến nhiệt độ

Hệ thống dây cảm biến nhiệt độ
Hệ thống dây cảm biến nhiệt độ
Hệ thống dây cảm biến nhiệt độ
Hệ thống dây cảm biến nhiệt độ

Trên đây là hệ thống dây điện và mã MATLAB cho đầu vào cảm biến nhiệt độ.

Các dây từ nối đất và 5V chỉ cần được chạy đến cực âm và dương tương ứng một lần cho toàn bộ bo mạch. Từ đây trở đi, mọi kết nối đất sẽ đến từ cột âm và mọi kết nối 5V sẽ đến từ cột dương.

Mã dưới đây có thể được sao chép và dán cho cảm biến nhiệt độ.

%% CẢM BIẾN NHIỆT ĐỘ% Đối với cảm biến nhiệt độ, chúng tôi đã sử dụng nguồn sau cùng với

% Tài liệu trang web EF230 để sửa đổi cảm biến nhiệt độ của chúng tôi để cho phép người dùng

% đầu vào và 3 đầu ra đèn LED có biểu đồ.

% Bản phác thảo này được viết bởi SparkFun Electronics, % với rất nhiều sự trợ giúp từ cộng đồng Arduino.

% Được Eric Davishahl chuyển thể sang MATLAB.

% Truy cập https://learn.sparkfun.com/products/2 để biết thông tin về SIK.

xóa tất cả, clc

tempPin = 'A0'; % Khai báo chân analog kết nối với cảm biến nhiệt độ

a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una');

% Xác định chức năng ẩn danh chuyển đổi điện áp thành nhiệt độ

tempCfromVolts = @ (vôn) (vôn-0,5) * 100;

lấy mẫuDuration = 30;

samplingInterval = 2; % Giây giữa các lần đọc nhiệt độ

% thiết lập vectơ thời gian lấy mẫu

samplingTimes = 0: samplingInterval: lấy mẫuDuration;

% tính toán số lượng mẫu dựa trên thời lượng và khoảng thời gian

numSamples = length (samplingTimes);

% phân bổ trước các biến tạm thời và biến cho số lần đọc mà nó sẽ lưu trữ

tempC = số không (numSamples, 1);

tempF = tempC;

% sử dụng hộp thoại đầu vào để lưu trữ nhiệt độ đường ray tối đa và tối thiểu

dlg_prompts = {'Nhập Nhiệt độ Tối đa', 'Nhập Nhiệt độ Tối thiểu'};

dlg_title = 'Khoảng nhiệt độ đường sắt';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title) + N]);

% Lưu trữ đầu vào từ người dùng và hiển thị rằng đầu vào đã được ghi lại

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Đầu vào của bạn đã được ghi lại');

h = msgbox (txt);

chờ đợi (h);

% Đối với vòng lặp để đọc nhiệt độ một số lần cụ thể.

cho chỉ mục = 1: numSamples

% Đọc điện áp ở tempPin và lưu trữ dưới dạng vôn thay đổi

vôn = readVoltage (a, tempPin);

tempC (chỉ số) = tempCfromVolts (vôn);

tempF (chỉ số) = tempC (chỉ số) * 9/5 + 32; % Chuyển đổi từ độ C sang độ F

% If câu lệnh để làm cho các đèn LED cụ thể nhấp nháy tùy thuộc vào điều kiện nào được đáp ứng

if tempF (index)> = max_temp% Red LED

writeDigitalPin (a, 'D13', 0);

tạm dừng (0,5);

writeDigitalPin (a, 'D13', 1);

tạm dừng (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp% LED xanh lục

writeDigitalPin (a, 'D11', 0);

tạm dừng (0,5);

writeDigitalPin (a, 'D11', 1);

tạm dừng (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (chỉ mục) <= min_temp% LED xanh lam

writeDigitalPin (a, 'D12', 0);

tạm dừng (0,5);

writeDigitalPin (a, 'D12', 1);

tạm dừng (0,5);

writeDigitalPin (a, 'D12', 0);

kết thúc

% Hiển thị nhiệt độ khi chúng được đo

fprintf ('Nhiệt độ ở% d giây là% 5.2f C hoặc% 5.2f F. / n',…

samplingTimes (chỉ số), tempC (chỉ số), tempF (chỉ số));

tạm dừng (samplingInterval)% độ trễ cho đến mẫu tiếp theo

kết thúc

% Vẽ biểu đồ đọc nhiệt độ

Hình 1)

âm mưu (samplingTimes, tempF, 'r- *')

xlabel ('Thời gian (Giây)')

ylabel ('Nhiệt độ (F)')

title ('Đọc nhiệt độ từ RedBoard')

Bước 3: Đầu ra cảm biến nhiệt độ

Đầu ra cảm biến nhiệt độ
Đầu ra cảm biến nhiệt độ
Đầu ra cảm biến nhiệt độ
Đầu ra cảm biến nhiệt độ

Trên đây là hệ thống dây và mã MATLAB cho đầu ra cảm biến nhiệt độ.

Đối với dự án này, chúng tôi đã sử dụng ba đèn LED cho đầu ra của cảm biến nhiệt độ của chúng tôi. Chúng tôi sử dụng màu đỏ nếu các bản nhạc quá nóng, màu xanh lam nếu chúng quá lạnh và màu xanh lá cây nếu chúng ở giữa.

Bước 4: Đầu vào cảm biến nước mưa

Đầu vào cảm biến nước mưa
Đầu vào cảm biến nước mưa
Đầu vào cảm biến nước mưa
Đầu vào cảm biến nước mưa

Trên đây là cách đấu dây cho cảm biến gạt nước mưa và mã MATLAB được đăng tải bên dưới.

%% Cảm biến nước

xóa tất cả, clc

a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una');

waterPin = 'A1';

vDry = 4,80; % Điện áp khi không có nước

lấy mẫuDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: lấy mẫuDuration;

numSamples = length (samplingTimes);

% Đối với vòng lặp để đọc điện áp trong một khoảng thời gian cụ thể (60 giây)

cho chỉ mục = 1: numSamples

volt2 = readVoltage (a, waterPin); % Đọc điện áp từ tương tự chân nước

% If để phát ra tiếng kêu nếu phát hiện có nước. Điện áp rơi = nước

nếu volt2 <vDry

playTone (a, 'D09', 2400)% playTone hàm từ MathWorks

% Hiển thị cảnh báo cho hành khách nếu nước được phát hiện

waitfor (warndlg ('Chuyến tàu của bạn có thể bị hoãn do hiểm họa nước'));

kết thúc

% Hiển thị điện áp khi được đo bằng cảm biến nước

fprintf ('Điện áp ở% d giây là% 5,4f V. / n',…

samplingTimes (chỉ số), volt2);

tạm dừng (samplingInterval)

kết thúc

Bước 5: Đầu ra cảm biến nước mưa

Đầu ra cảm biến nước mưa
Đầu ra cảm biến nước mưa

Trên đây là hệ thống đấu dây cho còi kêu bíp mỗi khi có quá nhiều nước rơi trên đường đua. Mã cho bộ rung được nhúng trong mã cho đầu vào nước mưa.

Bước 6: Đầu vào cảm biến rung

Đầu vào cảm biến rung
Đầu vào cảm biến rung
Đầu vào cảm biến rung
Đầu vào cảm biến rung

Trên đây là phần đấu dây cho cảm biến rung. Cảm biến rung động có thể quan trọng đối với hệ thống đường sắt trong trường hợp đá rơi trên đường ray. Mã MATLAB được đăng bên dưới.

%% Cảm biến rung Xóa tất cả, clc

PIEZO_PIN = 'A3'; % Khai báo chân analog kết nối với cảm biến rung a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una'); % Khởi tạo thời gian và khoảng thời gian để đo rung động lấy mẫuDuration = 30; % Giây lấy mẫuInterval = 1;

samplingTimes = 0: samplingInterval: lấy mẫuDuration;

numSamples = length (samplingTimes);

% Sử dụng mã từ nguồn sau, chúng tôi đã sửa đổi nó để bật

% đèn LED màu tím nếu phát hiện thấy rung.

% SparkFun Tinker Kit, LED RGB, được viết bởi SparkFun Electronics, % với rất nhiều sự trợ giúp từ cộng đồng Arduino

% Được Eric Davishahl điều chỉnh thành MATLAB

% Khởi tạo pin RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Đối với vòng lặp để ghi lại các thay đổi điện áp từ cảm biến rung động qua

% khoảng thời gian cụ thể (30 giây)

cho chỉ mục = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% If để bật đèn LED màu tím nếu phát hiện thấy rung

nếu volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Tạo ra một ánh sáng màu tím

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else% Tắt đèn LED nếu không phát hiện thấy rung.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

kết thúc

% Hiển thị điện áp khi nó được đo.

fprintf ('Điện áp ở% d giây là% 5,4f V. / n',…

samplingTimes (chỉ số), volt3);

tạm dừng (samplingInterval)

kết thúc

% Tắt ánh sáng khi đo độ rung xong

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Bước 7: Đầu ra cảm biến rung

Đầu ra cảm biến rung
Đầu ra cảm biến rung

Trên đây là cách đấu dây cho đèn LED RBG được sử dụng. Đèn sẽ phát sáng màu tím khi phát hiện có rung động. Mã MATLAB cho đầu ra được nhúng trong mã cho đầu vào.

Bước 8: Kết luận

Sau khi làm theo tất cả các bước này, bây giờ bạn sẽ có một arduino với khả năng phát hiện nhiệt độ, nước mưa và rung động. Trong khi xem cách các cảm biến này hoạt động trên quy mô nhỏ, có thể dễ dàng hình dung chúng có thể quan trọng như thế nào đối với hệ thống đường sắt trong cuộc sống hiện đại!

Đề xuất: