- Gerekli Bileşenler:
- Çalışma Açıklaması:
- Devre Açıklaması:
- Programlama Açıklaması:
- EasyEDA kullanarak Devre ve PCB Tasarımı:
- Örnekleri çevrimiçi olarak Hesaplama ve Sipariş Etme
Deprem, can ve mala zarar veren, öngörülemeyen bir doğal afettir. Aniden olur ve onu durduramayız ama ondan uyarılabiliriz. Bugünün zamanında, yeryüzündeki bazı büyük titreşimlerden önce önlem alabilmemiz için küçük sarsıntıları ve darbeleri tespit etmek için kullanılabilecek birçok teknoloji var. Burada deprem öncesi titreşimleri tespit etmek için İvme Ölçer ADXL335 kullanıyoruz. İvmeölçer ADXL335, üç eksenin tümü ile birlikte sarsıntılara ve titreşimlere karşı oldukça hassastır. Burada Accelerometer kullanarak Arduino tabanlı bir Deprem Dedektörü inşa ediyoruz.
Bu Deprem dedektörünü PCB üzerinde Arduino Shield olarak inşa ediyoruz ve ayrıca İşleme kullanarak bilgisayarda Titreşim Grafiğini göstereceğiz.
Gerekli Bileşenler:
- Arduino UNO
- İvmeölçer ADXL335
- 16x2 LCD
- Buzzer
- BC547 transistör
- 1k Dirençler
- 10K Tencere
- LED
- Güç Kaynağı 9v / 12v
- Berg erkek / dişi sopa
İvmeölçer:
İvmeölçerin Pin Açıklaması:
- Vcc 5 volt besleme bu pime bağlanmalıdır.
- X-OUT Bu pin x yönünde bir Analog çıkış verir
- Y-OUT Bu pin y yönünde bir Analog Çıkış verir
- Z-OUT Bu pin z yönünde bir Analog Çıkış verir
- GND Zemin
- ST Bu pin, sensörün hassasiyetini ayarlamak için kullanılır.
İvmeölçeri kullanarak diğer projelerimizi de kontrol edin:
- Arduino kullanarak Ping Pong Oyunu
- İvmeölçer Tabanlı El Hareketi Kontrollü Robot.
- GPS, GSM ve İvme Ölçer kullanan Arduino Tabanlı Araç Kaza Uyarı Sistemi
Çalışma Açıklaması:
Bu Deprem Dedektörünün çalışması basittir. Daha önce bahsettiğimiz gibi, ivmeölçeri üç eksenden herhangi biri boyunca deprem titreşimlerini tespit etmek için kullandık, böylece ivmeölçer titreşimleri algılar ve bunları eşdeğer ADC değerine dönüştürür. Daha sonra bu ADC değerleri Arduino tarafından okunur ve 16x2 LCD üzerinde gösterilir. Bu değerleri İşleme kullanarak Grafikte de gösterdik. İvmeölçer hakkında daha fazla bilgiyi burada diğer İvmeölçer projelerimizi inceleyerek öğrenin.
Öncelikle , Arduino her güçlendiğinde çevredeki titreşimlerin örneklerini alarak İvme Ölçeri kalibre etmemiz gerekir. O zaman gerçek okumaları elde etmek için bu örnek değerleri gerçek okumalardan çıkarmamız gerekir. Bu kalibrasyon, normal çevredeki titreşimlerle ilgili uyarılar göstermemesi için gereklidir. Gerçek okumaları bulduktan sonra, Arduino bu değerleri önceden tanımlanmış maksimum ve minimum değerlerle karşılaştırır. Arduino herhangi bir değişiklik değerinin her iki yönde (negatif ve pozitif) herhangi bir eksenin önceden tanımlanmış değerlerinden daha fazla veya daha az olduğunu tespit ederse, Arduino sesli uyarıyı tetikler ve 16x2 LCD üzerinde uyarı durumunu gösterir ve bir LED de yanar. Arduino kodundaki Öntanımlı değerleri değiştirerek Deprem dedektörünün hassasiyetini ayarlayabiliriz.
Tanıtım Videosu ve Arduino Kodu makalenin sonunda verilmiştir.
Devre Açıklaması:
Bu Deprem dedektörünün devresi Arduino Shield PCBaynı zamanda basittir. Bu projede ivmeölçerin analog voltajını okuyan ve bunları dijital değerlere çeviren Arduino kullandık. Arduino ayrıca buzzer, LED, 16x2 LCD'yi çalıştırır ve değerleri hesaplayıp karşılaştırır ve uygun işlemi yapar. Sonraki bölüm, toprak titreşimini algılayan ve 3 eksende (X, Y ve Z) analog voltajlar üreten İvmeölçer'dir. LCD, X, Y ve Z eksenlerinin değerlerdeki değişimini ve üzerinde uyarı mesajı göstermek için kullanılır. Bu LCD, 4-bit modunda Arduino'ya bağlıdır. RS, GND ve EN pinleri doğrudan Arduino'nun 9, GND ve 8 pinlerine bağlanır ve LCD'nin geri kalan 4 veri pini olan D4, D5, D6 ve D7 doğrudan Arduino'nun 7, 6, 5 ve 4 numaralı dijital pinlerine bağlanır.. Buzzer, bir NPN BC547 transistörü aracılığıyla Arduino'nun 12 numaralı pinine bağlanır. LCD'nin parlaklığını kontrol etmek için 10k pot da kullanılır.
Programlama Açıklaması:
Bu Deprem Dedektörü Arduino Shield'de iki kod yaptık: biri Arduino'nun bir depremi algılaması için ve diğeri de deprem titreşimlerini Bilgisayardaki grafik üzerine çizmek için IDE İşleme için. Her iki kodu da tek tek öğreneceğiz:
Arduino kodu:
Öncelikle , akselerometreyi yerleştirme yüzeyine göre kalibre ediyoruz, böylece normal çevreleyen titreşimlerle ilgili uyarılar göstermesin. Bu kalibrasyonda, bazı numuneler alıyoruz ve daha sonra bunların ortalamasını alıp bir değişkene depoluyoruz.
for (int i = 0; i
İvmeölçer okuma yaptığında, bu örnek değerleri okumalardan çıkaracağız, böylece çevredeki titreşimleri göz ardı edebilir.
int değer1 = analogRead (x); // x out int değer2 okunuyor = analogRead (y); // int değer3'ü okuyor = analogRead (z); // z'yi okumak int xValue = xsample-value1; // x int yValue = ysample-value2'deki değişikliği bulmak; // y int'deki değişikliği bulmak zValue = zsample-value3; // z / * 'deki değişikliği bulmak, lcd * / lcd.setCursor (0,1) üzerinden x, y ve z ekseni değerlerindeki değişikliği gösterir; lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); gecikme (100)
Ardından Arduino, kalibre edilmiş (çıkarılmış) değerleri önceden tanımlanmış sınırlarla karşılaştırır. Ve buna göre harekete geçin. Değerler önceden tanımlanmış değerlerden yüksekse, sesli uyarıcı çalar ve İşleme kullanılarak bilgisayarda titreşim grafiği çizilir.
/ * değişikliği önceden tanımlanmış sınırlarla karşılaştırma * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = milis (); // zamanlayıcı başlat buz = 1; // buzzer / led flag etkinleştirildi} else if (buz == 1) // buzzer bayrağı etkinleştirildikten sonra deprem uyarısı {lcd.setCursor (0,0); lcd.print ("Deprem Uyarısı"); eğer (millis ()> = start + buzTime) buz = 0; }
İşlem kodu:
Aşağıda İşlem Kodu eklenmiştir, kodu aşağıdaki bağlantıdan indirebilirsiniz:
Deprem Dedektörü İşleme Kodu
Deprem titreşimleri için İşleme'yi kullanarak pencerenin boyutunu, birimlerini, yazı tipi boyutunu, arka planı, seri bağlantı noktalarını okuma ve görüntüleme, seçilen seri bağlantı noktasını açma vb. Tanımladığımız bir grafik tasarladık.
// pencere boyutunu ayarlayın: ve Yazı tipi boyutu f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, doğru); f10 = createFont ("Arial", 10, doğru); f12 = createFont ("Arial", 12, doğru); f24 = createFont ("Arial", 24, doğru); boyut (1200, 700); // Mevcut tüm seri bağlantı noktalarını listeleyin println (Serial.list ()); myPort = new Serial (bu, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); arkaplan (80)
Aşağıdaki fonksiyonda, seri porttan veri aldık ve gerekli verileri çıkardık ve ardından grafiğin boyutuyla eşledik.
// üç eksenin de gerekli tüm değerlerini çıkarmak: int l1 = inString.indexOf ("x =") + 2; Dize temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Dize temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; String temp3 = inString.substring (l1, l1 + 3); // x, y ve z değerini grafik boyutlarıyla eşleme float inByte1 = float (temp1 + (char) 9); inByte1 = harita (inByte1, -80,80, 0, yükseklik-80); float inByte2 = float (temp2 + (char) 9); inByte2 = harita (inByte2, -80,80, 0, yükseklik-80); float inByte3 = float (temp3 + (char) 9); inByte3 = harita (inByte3, -80,80, 0, yükseklik-80); float x = harita (xPos, 0,1120,40, genişlik-40);
Bundan sonra, birim uzay, maksimum ve minimum limitler, x, y ve z ekseni değerlerini çizdik.
// grafik penceresi, birim vuruş Ağırlığı (2); felç (175); Satır (0,0,0,100); textFont (f24); doldurma (0,00,255); textAlign (SAĞ); xmargin ("Devre Özetine Göre Deprem Grafiği", 200,100); doldurma (100); strok Ağırlığı (100); satır (1050,80,1200,80);………………
Bundan sonra x ekseni değeri için Mavi, y ekseni için yeşil renk ve z kırmızı renk ile temsil edilir.
inme (0,0,255); eğer (y1 == 0) y1 = yükseklik-inByte1-shift; satır (x, y1, x + 2, yükseklik-inByte1-shift); y1 = Yükseklik-inByte1-shift; inme (0,255,0); eğer (y2 == 0) y2 = Yükseklik inByte2-shift; satır (x, y2, x + 2, yükseklik-inByte2-shift); y2 = yükseklik-inByte2-shift; inme (255,0,0); eğer (y2 == 0) y3 = yükseklik-inByte3-shift; satır (x, y3, x + 2, yükseklik-inByte3-shift); y3 = yükseklik-inByte3-shift;
Diğer İşleme projelerimizden geçerek işleme hakkında daha fazla bilgi edinin.
EasyEDA kullanarak Devre ve PCB Tasarımı:
EasyEDA, şematik yakalama, devre simülasyonu ve PCB tasarımı için yalnızca tek noktadan çözüm değildir, aynı zamanda düşük maliyetli bir PCB Prototipi ve Bileşen Tedarik hizmeti de sunar. Kısa süre önce, geniş bir elektronik bileşen stoğuna sahip oldukları ve kullanıcıların PCB siparişiyle birlikte gerekli bileşenleri sipariş edebilecekleri bileşen tedarik hizmetini başlattılar.
Devrelerini ve PCB tasarlarken, ayrıca devre yapabilir ve PCB diğer kullanıcıların kopyalamak veya düzenleme onları oradan yarar alabilir ki kamu takı tasarımları, biz de bunun için bizim bütün Devre ve PCB düzenleri kamuya açıkladığımız üzere Deprem Göstergesi Kalkanı Arduino UNO, aşağıdaki bağlantıyı kontrol edin:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Aşağıda, EasyEDA'dan PCB düzeninin Üst katmanının Anlık Görüntüsü verilmiştir, 'Katmanlar' Penceresinden katmanı seçerek PCB'nin herhangi bir Katmanını (Üst, Alt, Üst ipek, alt ipek vb.) Görüntüleyebilirsiniz.
EasyEDA'yı kullanarak PCB'nin Fotoğraf görünümünü de görebilirsiniz:
Örnekleri çevrimiçi olarak Hesaplama ve Sipariş Etme
PCB tasarımını tamamladıktan sonra, sizi PCB sipariş sayfasına götürecek olan Fabrikasyon çıktısının simgesine tıklayabilirsiniz. Burada PCB'nizi Gerber Viewer'da görüntüleyebilir veya PCB'nizin Gerber dosyalarını indirebilirsiniz. Burada sipariş etmek istediğiniz PCB sayısını, kaç tane bakır katmana ihtiyacınız olduğunu, PCB kalınlığını, bakır ağırlığını ve hatta PCB rengini seçebilirsiniz. Tüm seçenekleri seçtikten sonra "Sepete Kaydet" e tıklayın ve siparişinizi tamamlayın. Son zamanlarda PCB oranlarını önemli ölçüde düşürdüler ve şimdi sadece 2 $ 'a 10 cm x 10 cm boyutunda 10 adet 2 katmanlı PCB sipariş edebilirsiniz.
EasyEDA'dan Aldığım PCB'ler:
PCB üzerindeki bileşenleri lehimledikten sonra son Kalkanın resimleri aşağıdadır: