Spisu treści:

Używanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych: 8 kroków (ze zdjęciami)
Używanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych: 8 kroków (ze zdjęciami)

Wideo: Używanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych: 8 kroków (ze zdjęciami)

Wideo: Używanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych: 8 kroków (ze zdjęciami)
Wideo: Pomiary temperatury oleju i wody silnika Bizona SW400 Czujniki i wskaźniki Naprawa i diagnostyka 2024, Lipiec
Anonim
Wykorzystanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych
Wykorzystanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych

We współczesnym społeczeństwie wzrost liczby pasażerów kolei oznacza, że przedsiębiorstwa kolejowe muszą robić więcej, aby zoptymalizować sieci, aby nadążyć za popytem. W tym projekcie pokażemy na małą skalę, jak czujniki temperatury, wody deszczowej i wibracji na płycie arduino mogą potencjalnie pomóc w zwiększeniu bezpieczeństwa pasażerów.

Ta instrukcja pokaże krok po kroku okablowanie czujników temperatury, wody deszczowej i wibracji w arduino, a także pokaże kod MATLAB wymagany do uruchomienia tych czujników.

Krok 1: Części i materiały

1. Komputer z zainstalowaną najnowszą wersją MATLAB

2. Płytka Arduino

3. Czujnik temperatury

4. Czujnik wody deszczowej

5. Czujnik wibracji

6. Czerwone światło LED

7. Niebieskie światło LED

8. Zielone światło LED

9. Światło LED RGB

10. Brzęczyk

11. 18 przewodów męsko-męskich

12. 3 przewody żeńsko-męskie

13. 2 przewody żeńsko-żeńskie

14. 6 rezystorów 330 omów

15. 1 rezystor 100 omów

Krok 2: Okablowanie czujnika temperatury

Okablowanie czujnika temperatury
Okablowanie czujnika temperatury
Okablowanie czujnika temperatury
Okablowanie czujnika temperatury

Powyżej znajduje się również okablowanie i kod MATLAB dla wejścia czujnika temperatury.

Przewody z masy i 5V wystarczy poprowadzić odpowiednio do minusa i plusa raz dla całej płytki. Odtąd wszystkie połączenia uziemiające będą pochodzić z kolumny ujemnej, a wszelkie połączenia 5 V będą pochodzić z kolumny dodatniej.

Poniższy kod można skopiować i wkleić do czujnika temperatury.

%% CZUJNIK TEMPERATURY % Dla czujnika temperatury użyliśmy następującego źródła wraz z

% Materiał strony internetowej EF230 do modyfikacji naszego czujnika temperatury, aby umożliwić użytkownikowi

% wejścia i 3 wyjścia światła LED z wykresem.

%Ten szkic został napisany przez SparkFun Electronics, % z dużą pomocą społeczności Arduino.

% Przystosowany do MATLAB przez Erica Davishahla.

% Odwiedź https://learn.sparkfun.com/products/2, aby uzyskać informacje o SIK.

wyczyść wszystko, clc

tempPin = 'A0'; % Deklaracja pinu analogowego podłączonego do czujnika temperatury

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

% Zdefiniuj funkcję anonimową, która zamienia napięcie na temperaturę

tempCfromVolts = @(wolty) (wolty-0,5)*100;

pobieranie próbekCzas trwania = 30;

interwał próbkowania = 2; % Sekund pomiędzy odczytami temperatury

%ustaw wektor czasów próbkowania

samplingTimes = 0:samplingInterval:samplingDuration;

% oblicz liczbę próbek na podstawie czasu trwania i interwału

numSamples = length(samplingTimes);

%wstępnie przydziel zmienne tymczasowe i zmienne dla liczby odczytów, które będą przechowywane

tempC = zera (liczba próbek, 1);

tempF = tempC;

% za pomocą okna dialogowego wprowadzania danych do przechowywania maksymalnej i minimalnej temperatury szyny

dlg_prompts = {'Wprowadź maksymalną temperaturę', 'Wpisz minimalną temperaturę'};

dlg_title = 'Przedziały temperatury szyny';

N=22;

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

% Przechowywanie danych wejściowych od użytkownika i wyświetlanie, że dane wejściowe zostały zarejestrowane

max_temp = str2double(dlg_ans{1})

min_temp = str2double(dlg_ans{2})

txt = sprintf('Twoje dane wejściowe zostały zarejestrowane');

h=msgbox(txt);

czekaj na(h);

% Pętla For odczytuje temperatury określoną liczbę razy.

dla indeksu = 1:liczbaPróbek

% Odczytaj napięcie w tempPin i zapisz jako zmienne wolty

wolty = odczytaj napięcie(a, tempPin);

tempC(indeks) = tempCfromVolts(wolty);

tempF(indeks) = tempC(indeks)*9/5+32; % Konwersja z Celsjusza na Fahrenheita

% Jeśli komunikaty, które mają sprawić, że określone diody LED będą migać w zależności od spełnienia warunku

jeśli tempF (indeks) >= max_temp % Czerwona dioda LED

writeDigitalPin(a, 'D13', 0);

pauza (0,5);

writeDigitalPin(a, 'D13', 1);

pauza (0,5);

writeDigitalPin(a, 'D13', 0);

elseif tempF(indeks) >= min_temp && tempF(indeks) < max_temp % Zielona dioda LED

writeDigitalPin(a, 'D11', 0);

pauza (0,5);

writeDigitalPin(a, 'D11', 1);

pauza (0,5);

writeDigitalPin(a, 'D11', 0);

elseif tempF (indeks) <= min_temp % Niebieska dioda LED

writeDigitalPin(a, 'D12', 0);

pauza (0,5);

writeDigitalPin(a, 'D12', 1);

pauza (0,5);

writeDigitalPin(a, 'D12', 0);

kończyć się

% Wyświetlaj temperatury w miarę ich pomiaru

fprintf('Temperatura w %d sekundach wynosi %5.2f C lub %5.2f F.\n', …

czasy próbkowania(indeks), tempC(indeks), tempF(indeks));

pause(samplingInterval) %opóźnienie do następnej próbki

kończyć się

% Wykreślanie odczytów temperatury

figurka(1)

plot(czasypróbkowania, tempF, 'r-*')

xlabel('Czas (sekundy)')

ylabel('Temperatura (F)')

title('Odczyty temperatury z RedBoard')

Krok 3: Wyjście czujnika temperatury

Wyjście czujnika temperatury
Wyjście czujnika temperatury
Wyjście czujnika temperatury
Wyjście czujnika temperatury

Powyżej znajduje się okablowanie i kod MATLAB dla wyjścia czujnika temperatury.

W tym projekcie wykorzystaliśmy trzy diody LED na wyjściu naszego czujnika temperatury. Użyliśmy czerwonego, jeśli tory były zbyt gorące, niebieskiego, jeśli były zbyt zimne, i zielonego, jeśli były pomiędzy.

Krok 4: Wejście czujnika wody deszczowej

Wejście czujnika wody deszczowej
Wejście czujnika wody deszczowej
Wejście czujnika wody deszczowej
Wejście czujnika wody deszczowej

Powyżej znajduje się okablowanie czujnika wody deszczowej, a kod MATLAB znajduje się poniżej.

%% Czujnik wody

wyczyść wszystko, clc

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

waterPin = „A1”;

vSuchy = 4,80; % napięcia przy braku wody

próbkowanieCzas trwania = 60;

interwał próbkowania = 2;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = length(samplingTimes);

% Dla pętli do odczytu napięcia przez określony czas (60 sekund)

dla indeksu = 1:liczbaPróbek

volt2 = odczytaj napięcie(a, waterPin); % Odczytane napięcie z analogowego pinu wodnego

% Jeśli stwierdzenie, aby włączyć brzęczyk w przypadku wykrycia wody. Spadek napięcia = woda

jeśli nap2 < vSuchy

playTone(a, 'D09', 2400) % funkcja playTone z MathWorks

% Wyświetlaj ostrzeżenie pasażerom w przypadku wykrycia wody

waitfor(warndlg('Twój pociąg może być opóźniony z powodu zagrożenia wodnego'));

kończyć się

% Wyświetlaj napięcie mierzone przez czujnik wody

fprintf('Napięcie w %d sekundach wynosi %5.4f V.\n', …

czasy próbkowania (indeks), wolt2);

pauza (interwał próbkowania)

kończyć się

Krok 5: Wyjście czujnika wody deszczowej

Wyjście czujnika wody deszczowej
Wyjście czujnika wody deszczowej

Powyżej znajduje się okablowanie brzęczyka, który emituje sygnał dźwiękowy, gdy na tor spadnie zbyt dużo wody. Kod brzęczyka jest wbudowany w kod wejścia wody deszczowej.

Krok 6: Wejście czujnika wibracji

Wejście czujnika wibracji
Wejście czujnika wibracji
Wejście czujnika wibracji
Wejście czujnika wibracji

Powyżej znajduje się okablowanie czujnika wibracji. Czujniki drgań mogą mieć znaczenie dla systemów kolejowych w przypadku spadających kamieni na tor. Kod MATLAB znajduje się poniżej.

%% Czujnik wibracji Wyczyść wszystko, clc

PIEZO_PIN = 'A3'; % Deklaracja pinu analogowego podłączonego do czujnika drgań a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Inicjowanie czasu i interwału pomiaru próbkowania drgańCzas trwania = 30; % Sekund próbkowania Interwał = 1;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = length(samplingTimes);

% Korzystając z kodu z następującego źródła zmodyfikowaliśmy go, aby włączyć a

% fioletowa dioda LED w przypadku wykrycia wibracji.

% SparkFun Tinker Kit, RGB LED, napisany przez SparkFun Electronics, % z dużą pomocą społeczności Arduino

% dostosowany do MATLAB przez Erica Davishahla

% Inicjalizacja pinu RGB

CZERWONY_PIN = 'D5';

ZIELONY_PIN = 'D6';

NIEBIESKI_PIN = 'D7';

% Dla pętli do rejestrowania zmian napięcia z czujnika drgań przez a

% określony przedział czasu (30 sekund)

dla indeksu = 1:liczbaPróbek

volt3 = odczytaj napięcie(a, PIEZO_PIN);

% Jeśli oświadczenie o włączeniu fioletowej diody LED w przypadku wykrycia wibracji

jeśli wolt3>0,025

writeDigitalPin(a, CZERWONY_PIN, 1);

% Tworzenie fioletowego światła

writeDigitalPin(a, ZIELONY_PIN, 0);

writeDigitalPin(a, NIEBIESKI_PIN, 1);

else % Wyłącz diodę LED, jeśli nie wykryto wibracji.

writeDigitalPin(a, CZERWONY_PIN, 0);

writeDigitalPin(a, ZIELONY_PIN, 0);

writeDigitalPin(a, NIEBIESKI_PIN, 0);

kończyć się

% Wyświetla mierzone napięcie.

fprintf('Napięcie w %d sekundach wynosi %5.4f V.\n', …

czasy próbkowania (indeks), wolt3);

pauza (interwał próbkowania)

kończyć się

% Odcięcie światła podczas pomiaru drgań

writeDigitalPin(a, CZERWONY_PIN, 0);

writeDigitalPin(a, ZIELONY_PIN, 0);

writeDigitalPin(a, NIEBIESKI_PIN, 0);

Krok 7: Wyjście czujnika wibracji

Wyjście czujnika wibracji
Wyjście czujnika wibracji

Powyżej znajduje się okablowanie zastosowanego światła LED RBG. Po wykryciu wibracji lampka zaświeci się na fioletowo. Kod MATLAB dla wyjścia jest osadzony w kodzie wejścia.

Krok 8: Wniosek

Po wykonaniu wszystkich tych kroków powinieneś mieć teraz arduino z możliwością wykrywania temperatury, wody deszczowej i wibracji. Obserwując, jak te czujniki działają na małą skalę, łatwo sobie wyobrazić, jak ważne mogą być one dla systemów kolejowych we współczesnym życiu!

Zalecana: