Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
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
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
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
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
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
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
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:
Pierwsze kroki z bezprzewodowymi czujnikami temperatury i wibracji dalekiego zasięgu: 7 kroków
Pierwsze kroki z bezprzewodowymi czujnikami temperatury i wibracji dalekiego zasięgu: Czasami wibracje są przyczyną poważnych problemów w wielu zastosowaniach. Od wałów maszyn i łożysk po wydajność dysków twardych, wibracje powodują uszkodzenie maszyny, wczesną wymianę, niską wydajność i poważnie wpływają na dokładność. Monitorowanie
Używanie płytki czujników Complex Arts do kontroli czystych danych przez Wi-Fi: 4 kroki (ze zdjęciami)
Używanie płytki czujników Complex Arts do kontroli czystych danych przez Wi-Fi: Czy kiedykolwiek chciałeś poeksperymentować z kontrolą gestów? Wprawiać rzeczy w ruch machnięciem ręki? Kontroluj muzykę jednym ruchem nadgarstka? Ten Instruktaż pokaże Ci, jak! Płytka czujnika Complex Arts (complexarts.net) to wszechstronny mikroc
Testowanie czujników temperatury – który dla mnie?: 15 kroków (ze zdjęciami)
Testowanie czujników temperatury - który dla mnie?: Jednym z pierwszych czujników, które nowicjusze w dziedzinie komputerów fizycznych chcą wypróbować, jest urządzenie do pomiaru temperatury. Cztery z najpopularniejszych czujników to TMP36, który ma wyjście analogowe i wymaga przetwornika analogowo-cyfrowego, DS18B20, który
Robot autonomiczny Wallace - część 4 - dodanie czujników odległości na podczerwień i czujników „wzmacniacza”: 6 kroków
Robot autonomiczny Wallace – część 4 – Dodaj czujniki odległości na podczerwień i czujniki „wzmacniacza”: Witam, dzisiaj rozpoczynamy kolejny etap ulepszania możliwości Wallace'a. W szczególności staramy się poprawić jego zdolność wykrywania i omijania przeszkód za pomocą czujników odległości na podczerwień, a także wykorzystać możliwości kontrolera silnika Roboclaw
Ultradźwiękowy miernik pojemności zbiornika wody deszczowej: 10 kroków (ze zdjęciami)
Ultradźwiękowy miernik pojemności zbiornika na deszczówkę: Jeśli jesteś podobny do mnie i masz trochę świadomości ekologicznej (lub jesteś po prostu krzesiwami chętnymi do zaoszczędzenia kilku dolarów - to też ja…), możesz mieć zbiornik na deszczówkę. Mam zbiornik do zbierania dość rzadkiego deszczu, w którym dostajemy