Mündəricat:

Dəmiryollarını Qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə: 8 addım (şəkillərlə)
Dəmiryollarını Qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə: 8 addım (şəkillərlə)

Video: Dəmiryollarını Qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə: 8 addım (şəkillərlə)

Video: Dəmiryollarını Qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə: 8 addım (şəkillərlə)
Video: "AZƏRBAYCAN DƏMİRYOLLARI" QSC-DƏ HAQSIZLIQ BAŞ ALIB GEDİR 2024, Iyul
Anonim
Dəmiryollarını qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə
Dəmiryollarını qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə

Müasir cəmiyyətdə, dəmir yolu sərnişinlərinin artması, dəmiryolu şirkətlərinin tələbi ödəmək üçün şəbəkələri optimallaşdırmaq üçün daha çox iş görmələri deməkdir. Bu layihədə bir arduino lövhəsindəki temperatur, yağış suyu və vibrasiya sensorlarının sərnişinlərin təhlükəsizliyini artırmağa necə kömək edə biləcəyini kiçik miqyasda göstərəcəyik.

Bu Təlimat, arduino üzərindəki temperatur, yağış suyu və titrəmə sensorlarının naqillərini addım-addım göstərəcək və bu sensorları işə salmaq üçün lazım olan MATLAB kodunu göstərəcək.

Addım 1: hissələr və materiallar

1. MATLAB -ın ən son versiyası quraşdırılmış kompüter

2. Arduino lövhəsi

3. Temperatur Sensoru

4. Yağış Suyu Sensoru

5. Vibrasiya Sensoru

6. Qırmızı LED İşıq

7. Mavi LED İşıq

8. Yaşıl LED İşıq

9. RBG LED işığı

10. Buzzer

11. 18 Kişi-Kişi Telləri

12. 3 Qadın-Kişi Teli

13. 2 Qadın-Dişi Tel

14. 6 330 ohm müqavimət

15. 100 ohm müqavimət

Addım 2: Temperatur Sensorunun Kabelləri

Temperatur Sensor Kabelləri
Temperatur Sensor Kabelləri
Temperatur Sensor Kabelləri
Temperatur Sensor Kabelləri

Yuxarıda, temperatur sensoru girişi üçün naqillər və MATLAB kodu da var.

Yerdən və 5V -dən olan tellər, bütün lövhə üçün yalnız bir dəfə mənfi və pozitiv olaraq çəkilməlidir. Buradan etibarən, hər hansı bir torpaq bağlantısı mənfi sütundan, hər hansı bir 5V bağlantısı isə müsbət sütundan gələcək.

Aşağıdakı kod, temperatur sensoru üçün kopyalanıb yapışdırıla bilər.

Temperatur sensoru üçün aşağıdakı mənbədən istifadə etdik

İstifadəçiyə icazə vermək üçün temperatur sensörümüzü dəyişdirmək üçün EF230 veb saytı materialı

% giriş və bir qrafik ilə 3 LED işıq çıxışı.

Bu eskiz SparkFun Electronics tərəfindən yazılmışdır.

Arduino icmasının köməyi ilə.

Eric Davishahl tərəfindən MATLAB uyğunlaşdırılmışdır.

SIK məlumat üçün https://learn.sparkfun.com/products/2 ziyarət edin.

hamısını sil, clc

tempPin = 'A0'; Temp sensoru bağlı analog pin elan

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

Gərginliyi temperatura çevirən anonim funksiyanı təyin edin

tempCfromVolts = @(volt) (volt-0.5)*100;

samplingDuration = 30;

samplingInterval = 2; Temperatur oxunuşları arasında saniyə

nümunə götürmə vaxtının vektorunu qurun

samplingTimes = 0: samplingInterval: samplelingDuration;

%müddəti və aralığına əsasən nümunələrin sayını hesablayır

numSamples = uzunluq (samplingTimes);

saxlayacaq oxunuşların sayına görə temp dəyişənlərini və dəyişəni əvvəlcədən təyin edin

tempC = sıfır (numSamples, 1);

tempF = tempC;

Maksimum və min qatar istiliyini saxlamaq üçün giriş informasiya qutusundan istifadə

dlg_prompts = {'Maksimum Temp daxil edin', 'Min Temp daxil edin'};

dlg_title = 'Dəmir İstiliyinin Aralıqları';

N = 22;

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

İstifadəçinin girişlərinin saxlanması və girişin qeydə alındığını göstərmək

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Girişiniz qeyd edildi');

h = msgbox (txt);

gözləyin (h);

Loop üçün temperatur müəyyən dəfə oxumaq üçün.

index = 1 üçün: numSamples

TempPin -də gərginliyi oxuyun və dəyişən volt olaraq saxlayın

volt = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

tempF (indeks) = tempC (indeks)*9/5+32; Celsius -dan Fahrenheit -ə çevirin

Xüsusi LED işıqları etmək üçün ifadələr hansı şərt yerinə yetirildiyindən asılı olaraq yanıb sönər

əgər tempF (index)> = max_temp % Qırmızı LED

writeDigitalPin (a, 'D13', 0);

fasilə (0,5);

writeDigitalPin (a, 'D13', 1);

fasilə (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Yaşıl LED

writeDigitalPin (a, 'D11', 0);

fasilə (0,5);

writeDigitalPin (a, 'D11', 1);

fasilə (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Mavi LED

writeDigitalPin (a, 'D12', 0);

fasilə (0,5);

writeDigitalPin (a, 'D12', 1);

fasilə (0,5);

writeDigitalPin (a, 'D12', 0);

bitmək

Onlar ölçülür kimi temperatur göstərin

fprintf (' %d saniyədə temperatur %5.2f C və ya %5.2f F. / n',…

samplingTimes (index), tempC (index), tempF (index));

pauza (samplingInterval) %növbəti nümunəyə qədər gecikmə

bitmək

Temperatur oxunuşlarının çəkilməsi

rəqəm (1)

süjet (samplingTimes, tempF, 'r-*')

xlabel ('Zaman (Saniyə)')

ylabel ('Temperatur (F)')

başlıq ('RedBoard -dan temperatur oxunuşları')

Addım 3: Temperatur Sensor Çıxışı

Temperatur Sensorunun Çıxışı
Temperatur Sensorunun Çıxışı
Temperatur Sensorunun Çıxışı
Temperatur Sensorunun Çıxışı

Yuxarıda, temperatur sensoru çıxışı üçün naqillər və MATLAB kodu verilmişdir.

Bu layihə üçün temperatur sensörümüzün çıxışı üçün üç LED işıq istifadə etdik. Parçalar çox isti olarsa qırmızı, çox soyuq olsalar mavi, aralarında olsalar yaşıl rəng istifadə etdik.

Addım 4: Yağış suyu sensoru girişi

Yağış suyu sensoru girişi
Yağış suyu sensoru girişi
Yağış suyu sensoru girişi
Yağış suyu sensoru girişi

Yuxarıda yağış suyu sensoru üçün naqillər var və MATLAB kodu aşağıda yerləşdirilib.

%% Su sensoru

hamısını sil, clc

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

waterPin = 'A1';

vDry = 4.80; Su olmadıqda gərginlik

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = uzunluq (samplingTimes);

Döngünün müəyyən bir müddət ərzində gərginliyi oxuması üçün (60 saniyə)

index = 1 üçün: numSamples

volt2 = readVoltage (a, waterPin); Su pin analoqundan gərginliyi oxuyun

Su aşkar edildikdə bir zil səsi ifadəsi. Gərginlik düşməsi = su

əgər volt2 <vDry

playTone (a, 'D09', 2400) % MathWorks -dən playTone funksiyası

Su aşkar edildikdə sərnişinlərə xəbərdarlıq göstərin

waitfor (warningdlg ('Qatarınız su təhlükəsi səbəbindən gecikə bilər'));

bitmək

Su sensoru ilə ölçülən gərginliyi göstərin

fprintf (' %d saniyədə gərginlik %5.4f V. / n',…

samplingTimes (indeks), volt2);

fasilə (nümunə götürmə Aralıq)

bitmək

Addım 5: Yağış Suyu Sensor Çıxışı

Yağış Suyu Sensorunun Çıxışı
Yağış Suyu Sensorunun Çıxışı

Yolda çox su düşəndə bip səsi verən bir siqnalın naqilləri yuxarıdadır. Buzzer kodu, yağış suyu girişinin koduna daxil edilmişdir.

Addım 6: Vibrasiya Sensor Giriş

Vibrasiya Sensor Giriş
Vibrasiya Sensor Giriş
Vibrasiya Sensor Giriş
Vibrasiya Sensor Giriş

Yuxarıda vibrasiya sensoru üçün naqillər var. Titrəmə sensorları, yolda qayaların düşməsi halında dəmir yolu sistemləri üçün əhəmiyyətli ola bilər. MATLAB kodu aşağıda yerləşdirilmişdir.

%% Titrəmə Sensoru hamısını təmizləyin, clc

PIEZO_PIN = 'A3'; A = arduino ('/dev/tty.usbserial-DA017PNO', 'uno') vibrasiya sensoru ilə əlaqəli analoq pinin elan edilməsi; Vibrasiya nümunə götürmə müddətini ölçmək üçün vaxt və intervalın işə salınmasıDuration = 30; % Saniyə nümunə götürmə Aralığı = 1;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = uzunluq (samplingTimes);

Aşağıdakı mənbədən kodu istifadə edərək, onu açmaq üçün dəyişdirdik

Vibrasiya aşkar edilərsə bənövşəyi LED.

SparkFun Tinker Kit, RGB LED, SparkFun Electronics tərəfindən yazılmış, Arduino icmasının köməyi ilə

Eric Davishahl tərəfindən MATLAB uyğunlaşdırılmışdır

RGB pininin işə salınması

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

Döngü üçün bir üzərində vibrasiya sensoru gərginlik dəyişikliklər qeyd etmək üçün

% xüsusi vaxt aralığı (30 saniyə)

index = 1 üçün: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

Vibrasiya aşkar edildikdə bənövşəyi bir LED açmaq üçün ifadə

volt3> 0.025 olduqda

writeDigitalPin (a, RED_PIN, 1);

Bənövşəyi bir işıq yaratmaq

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

başqa % Titrəmə aşkar edilmədikdə LED -i söndürün.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

bitmək

Ölçülən kimi gərginliyi göstərin.

fprintf (' %d saniyədə gərginlik %5.4f V. / n',…

samplingTimes (indeks), volt3);

fasilə (nümunə götürmə Aralıq)

bitmək

Titrəmələri ölçərkən işığı kəsin

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Addım 7: Vibrasiya Sensor Çıxışı

Vibrasiya Sensorunun Çıxışı
Vibrasiya Sensorunun Çıxışı

Yuxarıda istifadə olunan RBG LED işığının naqilləri var. Titrəmə aşkar edildikdə işıq bənövşəyi yanacaq. Çıxış üçün MATLAB kodu giriş kodu daxilindədir.

Addım 8: Nəticə

Bütün bu addımları izlədikdən sonra temperaturu, yağış suyunu və titrəmələri aşkar edə bilən bir arduino sahibi olmalısınız. Kiçik miqyasda bu sensorların necə işlədiyinə baxarkən, müasir həyatda dəmir yolu sistemləri üçün nə qədər həyati əhəmiyyət kəsb edə biləcəyini təsəvvür etmək asandır!

Tövsiyə: