Mündəricat:
- Addım 1: hissələr və materiallar
- Addım 2: Temperatur Sensorunun Kabelləri
- Addım 3: Temperatur Sensor Çıxışı
- Addım 4: Yağış suyu sensoru girişi
- Addım 5: Yağış Suyu Sensor Çıxışı
- Addım 6: Vibrasiya Sensor Giriş
- Addım 7: Vibrasiya Sensor Çıxışı
- Addım 8: Nəticə
Video: Dəmiryollarını Qorumaq üçün Arduino -da İstilik, Yağış Suyu və Vibrasiya Sensorlarından istifadə: 8 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
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
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ışı
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
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ışı
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ş
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ışı
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ə:
Arduino və Yağış Damlası Sensorundan istifadə edən Yağış Dedektoru: 8 addım
Arduino və Yağış Damlası Sensorundan istifadə edərək Yağış Dedektoru: Bu dərsdə bir yağış sensoru istifadə edərək yağışı necə aşkar etməyi və səs siqnalı modulu, OLED Ekran və Visuino istifadə edərək səs çıxarmağı öyrənəcəyik
Simsiz Vibrasiya Sensorlarından istifadə edərək Vətəndaş Altyapılarının Struktur Sağlamlıq Monitorinqi: 8 Addım
Simsiz Vibrasiya Sensorlarından istifadə edərək Vətəndaş Altyapılarının Struktur Sağlamlıq Monitorinqi: Köhnə binanın və mülki Altyapının pisləşməsi ölümcül və təhlükəli vəziyyətə səbəb ola bilər. Bu strukturların daimi monitorinqi məcburidir. Struktur sağlamlıq monitorinqi
NodeMcu üçün Yağış Damlası Sensorunun Arayüzü - Yeni başlayanlar üçün: 5 addım
NodeMcu üçün Yağış Damlası Sensorunun Arayüzü | Başlayanlar üçün: bu dərsdə yağış damcı sensörünün NodeMcu ilə necə əlaqələndiriləcəyini bilirsiniz
Ultrasonik Yağış Suyu Tankı Ölçmə Cihazı: 10 Adım (Şəkillərlə)
Ultrasonik Yağış Suyu Tankı Kapasite Ölçən: Əgər mənim kimi bir şeysənsə və bir az da ətraf mühit vicdanına sahibsənsə (və ya sadəcə bir neçə dollar qənaət etmək istəyən dərilərsənsə - bu da mənəm …), yağış suyu çəninə sahib ola bilərsən. Düşdüyümüz nadir yağışları yığmaq üçün bir tankım var
Yağış Suyu Sluice: 11 Addım (Şəkillərlə birlikdə)
Yağış Suyu Sulu: Güclü bir yağış fırtınası daşqınlara səbəb ola bilər: səkilər, yağış suyu quyuları, polderlər və bəndlərimiz. Bunun baş verməməsi üçün yağış suyu şluzunu icad etdik! Yağış suyu şluzu yağış suyu arasındakı məsafəni rəqəmsal olaraq hesablayır