Cuprins:
- Pasul 1: Piese și materiale
- Pasul 2: Cablarea senzorului de temperatură
- Pasul 3: ieșirea senzorului de temperatură
- Pasul 4: Intrarea senzorului de apă de ploaie
- Pasul 5: ieșirea senzorului de apă de ploaie
- Pasul 6: Intrarea senzorului de vibrații
- Pasul 7: ieșirea senzorului de vibrații
- Pasul 8: Concluzie
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
În societatea modernă, o creștere a pasagerilor feroviari înseamnă că companiile feroviare trebuie să facă mai mult pentru a optimiza rețelele pentru a ține pasul cu cererea. În acest proiect, vom arăta la scară mică cum senzorii de temperatură, apă de ploaie și vibrații de pe o placă arduino pot contribui potențial la creșterea siguranței pasagerilor.
Acest Instructable va arăta pas cu pas cablarea pentru senzorii de temperatură, apă de ploaie și vibrații de pe arduino, precum și codul MATLAB necesar pentru a rula acești senzori.
Pasul 1: Piese și materiale
1. Un computer cu cea mai recentă versiune de MATLAB instalată
2. Placa Arduino
3. Senzor de temperatură
4. Senzor de apă de ploaie
5. Senzor de vibrații
6. Lumina LED roșie
7. Lumina LED albastră
8. Lumina LED verde
9. Lumina LED RBG
10. Buzzer
11. 18 fire mascul-mascul
12. 3 fire de sex feminin-masculin
13. 2 fire de sex feminin
14. 6 rezistențe de 330 ohmi
15. 1 rezistor de 100 ohmi
Pasul 2: Cablarea senzorului de temperatură
Mai sus este cablarea și codul MATLAB pentru intrarea senzorului de temperatură.
Cablurile de la sol și 5V trebuie să fie rulate doar la negativ și respectiv pozitiv o singură dată pentru întreaga placă. De aici înainte, orice conexiuni de masă vor proveni din coloana negativă și orice conexiuni de 5V vor proveni din coloana pozitivă.
Codul de mai jos poate fi copiat și lipit pentru senzorul de temperatură.
%% TEMPERATURE SENSOR% Pentru senzorul de temperatură am folosit următoarea sursă împreună cu
% Site-ul web EF230 pentru a modifica senzorul de temperatură pentru a permite utilizatorului
% intrare și 3 ieșiri de lumină LED cu grafic.
% Această schiță a fost scrisă de SparkFun Electronics, % cu mult ajutor din partea comunității Arduino.
% Adaptat la MATLAB de Eric Davishahl.
% Accesați https://learn.sparkfun.com/products/2 pentru informații despre SIK.
clar toate, clc
tempPin = 'A0'; % Declararea pinului analogic conectat la senzorul de temperatură
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');
% Definiți funcția anonimă care convertește tensiunea în temperatură
tempCfromVolts = @ (volți) (volți-0,5) * 100;
samplingDuration = 30;
samplingInterval = 2; % Secunde între citirile de temperatură
% setează vectorul timpilor de eșantionare
samplingTimes = 0: samplingInterval: samplingDuration;
% calculați numărul de eșantioane pe baza duratei și intervalului
numSamples = lungime (samplingTimes);
% prealocați variabilele temp și variabila pentru numărul de citiri pe care le va stoca
tempC = zerouri (numSamples, 1);
tempF = tempC;
% folosind caseta de dialog de intrare pentru a stoca temperaturile maxime și minime ale șinelor
dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};
dlg_title = 'Intervalele de temperatură ale șinelor';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title) + N]);
% Stocarea intrărilor de la utilizator și afișarea că intrarea a fost înregistrată
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf („Intrarea dvs. a fost înregistrată”);
h = msgbox (txt);
waitfor (h);
% Pentru buclă pentru a citi temperaturile de un anumit număr de ori.
pentru index = 1: numSamples
% Citiți tensiunea la tempPin și stocați-o ca volți variabili
volți = readVoltage (a, tempPin);
tempC (index) = tempCfromVolts (volți);
tempF (index) = tempC (index) * 9/5 + 32; % Conversia de la Celsius la Fahrenheit
% Dacă declarațiile pentru a face luminile LED specifice clipesc în funcție de condiția îndeplinită
dacă tempF (index)> = max_temp% LED roșu
writeDigitalPin (a, 'D13', 0);
pauză (0,5);
writeDigitalPin (a, 'D13', 1);
pauză (0,5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (index)> = min_temp && tempF (index) <max_temp% LED verde
writeDigitalPin (a, 'D11', 0);
pauză (0,5);
writeDigitalPin (a, 'D11', 1);
pauză (0,5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (index) <= min_temp% LED albastru
writeDigitalPin (a, 'D12', 0);
pauză (0,5);
writeDigitalPin (a, 'D12', 1);
pauză (0,5);
writeDigitalPin (a, 'D12', 0);
Sfârșit
% Afișați temperaturile pe măsură ce sunt măsurate
fprintf („Temperatura la% d secunde este% 5.2f C sau% 5.2f F. / n”, …
samplingTimes (index), tempC (index), tempF (index));
pauză (samplingInterval)% întârziere până la următoarea mostră
Sfârșit
% Plotarea citirilor de temperatură
figura 1)
complot (samplingTimes, tempF, 'r- *')
xlabel („Timp (secunde)”)
ylabel („Temperatură (F)”)
title („Citiri de temperatură de pe RedBoard”)
Pasul 3: ieșirea senzorului de temperatură
Mai sus este cablarea și codul MATLAB pentru ieșirea senzorului de temperatură.
Pentru acest proiect am folosit trei lumini LED pentru ieșirea senzorului nostru de temperatură. Am folosit un roșu pentru dacă pistele erau prea fierbinți, un albastru dacă erau prea reci și un verde dacă erau între ele.
Pasul 4: Intrarea senzorului de apă de ploaie
Mai sus este cablarea senzorului de apă de ploaie și codul MATLAB este afișat mai jos.
Senzor de apă %%
clar toate, clc
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4,80; % Tensiune atunci când nu există apă
samplingDuration = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = lungime (samplingTimes);
% Pentru buclă pentru a citi tensiunea pentru o anumită perioadă de timp (60 de secunde)
pentru index = 1: numSamples
volt2 = readVoltage (a, waterPin); % Citiți tensiunea de la pinul de apă analogic
% Dacă instrucțiunea de a suna un buzzer dacă este detectată apă. Cadere de tensiune = apa
dacă volt2 <vDry
playTone (a, 'D09', 2400)% funcție playTone de la MathWorks
% Afișați un avertisment pentru pasageri dacă este detectată apă
waitfor (warndlg („Trenul dvs. poate fi întârziat din cauza pericolelor de apă”));
Sfârșit
% Afișați tensiunea așa cum este măsurată de senzorul de apă
fprintf ('Tensiunea la% d secunde este% 5.4f V. / n', …
SamplingTimes (index), volt2);
pauză (samplingInterval)
Sfârșit
Pasul 5: ieșirea senzorului de apă de ploaie
Deasupra este cablarea unui buzzer care emite un sunet ori de câte ori cade prea multă apă pe pistă. Codul pentru buzzer este încorporat în codul pentru intrarea apei de ploaie.
Pasul 6: Intrarea senzorului de vibrații
Deasupra este cablarea senzorului de vibrații. Senzorii de vibrații pot fi importanți pentru sistemele feroviare în cazul căderii de pietre pe o cale. Codul MATLAB este postat mai jos.
Senzor de vibrații %%cleară toate, clc
PIEZO_PIN = 'A3'; % Declararea pinului analogic conectat la senzorul de vibrații a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno'); % Inițializarea timpului și intervalului pentru măsurarea eșantionării vibrațiilor Durata = 30; % Secunde samplingInterval = 1;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = lungime (samplingTimes);
% Folosind codul din următoarea sursă, l-am modificat pentru a activa un
% LED violet dacă se detectează vibrații.
% SparkFun Tinker Kit, LED RGB, scris de SparkFun Electronics, % cu mult ajutor din partea comunității Arduino
% Adaptat la MATLAB de Eric Davishahl
% Inițializarea pinului RGB
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% Pentru buclă pentru a înregistra modificările de tensiune de la senzorul de vibrații peste un
% interval de timp specific (30 de secunde)
pentru index = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
Declarație% If pentru a porni un LED purpuriu dacă se detectează vibrații
dacă volt3> 0,025
writeDigitalPin (a, RED_PIN, 1);
% Crearea unei lumini purpurii
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
else% Opriți LED-ul dacă nu este detectată nicio vibrație.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
Sfârșit
% Afișați tensiunea pe măsură ce este măsurată.
fprintf ('Tensiunea la% d secunde este% 5.4f V. / n', …
SamplingTimes (index), volt3);
pauză (samplingInterval)
Sfârșit
% Tăiați lumina atunci când măsurați vibrațiile
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
Pasul 7: ieșirea senzorului de vibrații
Deasupra este cablarea pentru lumina LED RBG utilizată. Lumina va străluci violet atunci când sunt detectate vibrații. Codul MATLAB pentru ieșire este încorporat în codul pentru intrare.
Pasul 8: Concluzie
După ce ați urmat toți acești pași, ar trebui să aveți acum un arduino cu capacitatea de a detecta temperatura, apa de ploaie și vibrațiile. În timp ce vizualizați cum funcționează acești senzori la scară mică, este ușor să vă imaginați cât de vital ar putea fi pentru sistemele feroviare în viața modernă!
Recomandat:
Utilizarea senzorilor analogici cu ESP8266: 5 pași
Utilizarea senzorilor analogici cu ESP8266: Un convertor analog-digital (ADC, A / D, A – D sau A-D) este un sistem care transformă un semnal analog într-un semnal digital. Convertoarele A / D traduc semnale electrice analogice în scopul procesării datelor. Cu produse care corespund performanței, puterii
Testarea senzorilor de temperatură - Care pentru mine ?: 15 pași (cu imagini)
Testarea senzorilor de temperatură - Care pentru mine ?: Unul dintre primii senzori pe care noii veniți în calcul fizic vor să-l încerce este ceva pentru a măsura temperatura. Patru dintre cei mai populari senzori sunt TMP36, care are ieșire analogică și are nevoie de un convertor analog la digital, DS18B20, care
Ghid pentru începători pentru utilizarea senzorilor DHT11 / DHT22 cu Arduino: 9 pași
Ghid pentru începători de utilizare a senzorilor DHT11 / DHT22 W / Arduino: Puteți citi acest tutorial și alte tutoriale uimitoare pe site-ul oficial al ElectroPeak Prezentare generală În acest tutorial, veți afla cum să configurați senzorii DHT11 și DHT22 și să măsurați temperatura și umiditatea mediului înconjurător. Aflați: DHT11 și DHT22
Contor de capacitate al rezervorului de apă de ploaie cu ultrasunete: 10 pași (cu imagini)
Contor de capacitate cu rezervor de apă de ploaie cu ultrasunete: Dacă sunteți ceva ca mine și aveți un pic de conștiință a mediului (sau sunteți doar flori de piele dornici să economisiți câțiva dolari - care sunt și eu …), este posibil să aveți un rezervor de apă de ploaie. Am un tanc pentru a recolta ploaia destul de rar întâlnită
ÎNCĂLZITOR SOLAR CU APĂ ÎNCĂLZITOR Ploaie pentru zi ploioasă .: 11 pași
SOLAR WATER-HEATER Rainy Day Bypass .: În Africa de Sud Corporația noastră de stat Electricity Corporation se numește EISHKOM. Ceea ce înseamnă OUCH-OUCH! Acum avem o nouă expresie, CAPTURA DE STAT. Nu sunt politician, dar ceea ce înțeleg este că, plătind mita corectă, acum este condus în totalitate de către