- Būtini komponentai:
- Darbinis paaiškinimas:
- Grandinės paaiškinimas:
- Programavimo paaiškinimas:
- Grandinių ir PCB dizainas naudojant „EasyEDA“:
- Mėginių apskaičiavimas ir užsakymas internetu:
Žemės drebėjimas yra nenuspėjama stichinė nelaimė, padaranti žalos gyvybėms ir turtui. Tai atsitinka staiga ir mes negalime to sustabdyti, bet galime būti įspėti. Šiandien yra daugybė technologijų, kurios gali būti naudojamos mažiems drebėjimams ir smūgiams aptikti, kad galėtume imtis atsargumo priemonių prieš kai kurias dideles žemės vibracijas. Čia mes naudojame akcelerometrą ADXL335, kad nustatytume vibracijas prieš žemės drebėjimą. Akselerometras ADXL335 yra labai jautrus smūgiams ir vibracijoms kartu su visomis trimis ašimis. Čia mes statome „ Arduino“ pagrindu veikiantį žemės drebėjimo detektorių, naudodami akselerometrą.
Mes statome šį žemės drebėjimo detektorių kaip „Arduino Shield“ PCB ir taip pat rodysime vibracijų grafiką kompiuteryje, naudojant „Processing“.
Būtini komponentai:
- „Arduino UNO“
- Akselerometras ADXL335
- 16x2 LCD ekranas
- Buzeris
- BC547 tranzistorius
- 1k rezistoriai
- 10K POT
- LED
- Maitinimo šaltinis 9v / 12v
- Bergas klijuoja vyrą / moterį
Akselerometras:
Kaištis Akselerometro aprašymas:
- Prie šio kaiščio turėtų prisijungti 5 V voltų maitinimas.
- X-OUT Šis kaištis suteikia analoginę išvestį x kryptimi
- Y-OUT Šis kaištis suteikia analoginę išvestį y kryptimi
- Z-OUT Šis kaištis suteikia analoginę išvestį z kryptimi
- BND žemė
- ST Šis kaištis naudojamas nustatyti jutiklio jautrumą
Taip pat patikrinkite kitus mūsų projektus naudodami akselerometrą:
- „Ping Pong“ žaidimas naudojant „Arduino“
- Akselerometru paremtas robotas, valdomas rankomis.
- „Arduino“ pagrįsta transporto priemonių avarinių perspėjimų sistema naudojant GPS, GSM ir akselerometrą
Darbinis paaiškinimas:
Šio žemės drebėjimo detektoriaus veikimas yra paprastas. Kaip jau minėjome anksčiau, mes naudojome akselerometrą žemės drebėjimo virpesiams palei bet kurią iš trijų ašių aptikti, kad kai tik įvyktų vibracija, akselerometras pajaustų tą vibraciją ir paverstų ją lygiaverte ADC verte. Tada šias ADC reikšmes nuskaito „Arduino“ ir parodo per 16x2 LCD ekraną. Mes taip pat parodėme šias vertes diagramoje, naudodami apdorojimą. Sužinokite daugiau apie akselerometrą vykdydami kitus mūsų akselerometro projektus čia.
Pirmiausia turime sukalibruoti akselerometrą imdami aplinkinių vibracijų pavyzdžius, kai tik „Arduino Powers“ įsijungia. Tada turime atimti tas pavyzdines vertes iš faktinių rodmenų, kad gautume tikrus rodmenis. Šis kalibravimas reikalingas, kad jis neparodytų įspėjimų apie įprastą aplinkinę vibraciją. Radęs tikrus rodmenis, „Arduino“ lygina šias reikšmes su iš anksto nustatytomis maks. Ir min. Vertėmis. Jei „Arduino“ pastebi, kad pokyčių vertės yra didesnės arba mažesnės, nei iš anksto nustatytos bet kurios ašies vertės abiem kryptimis (neigiamos ir teigiamos), tada „Arduino“ suaktyvina garsinį signalą ir rodo įspėjimo būseną per 16x2 LCD ekraną, taip pat įjungtas šviesos diodas. Mes galime reguliuoti žemės drebėjimo detektoriaus jautrumą, pakeisdami iš anksto nustatytas reikšmes „Arduino“ kode.
Parodomasis vaizdo įrašas ir „Arduino“ kodas pateikiami straipsnio pabaigoje.
Grandinės paaiškinimas:
Šio žemės drebėjimo detektoriaus „Arduino Shield PCB“ grandinėtaip pat paprasta. Šiame projekte mes panaudojome „Arduino“, kuris nuskaito akselerometro analoginę įtampą ir paverčia jas skaitmeninėmis reikšmėmis. „Arduino“ taip pat valdo garsinį signalą, šviesos diodą, 16x2 LCD ekraną ir apskaičiuoja bei lygina vertes ir imasi atitinkamų veiksmų. Kita dalis yra akselerometras, kuris nustato žemės vibraciją ir sukuria analoginę įtampą 3 ašyse (X, Y ir Z). Skystųjų kristalų ekranas naudojamas X, Y ir Z ašių verčių pokyčiams rodyti ir per jį įspėjimo pranešimams rodyti. Šis LCD ekranas prie „Arduino“ prijungtas 4 bitų režimu. RS, GND ir EN kaiščiai yra tiesiogiai prijungti prie 9, GND ir 8 „Arduino“ kaiščių, o likusieji 4 LCD duomenų kaiščiai, būtent D4, D5, D6 ir D7, yra tiesiogiai prijungti prie „Arduino“ skaitmeninių kaiščių 7, 6, 5 ir 4. Švilpukas yra prijungtas prie 12 „Arduino“ kaiščio per NPN BC547 tranzistorių. 10k puodas taip pat naudojamas LCD ryškumui reguliuoti.
Programavimo paaiškinimas:
Šiame žemės drebėjimo detektoriuje „Arduino Shield“ sukūrėme du kodus: vieną „Arduino“ aptiko žemės drebėjimą, o kitą - „IDE“ apdorojimui, kad žemės drebėjimo vibracijos būtų pavaizduotos per kompiuterio grafiką. Mes sužinosime apie abu kodus po vieną:
„Arduino“ kodas:
Visų pirma, mes kalibruojame akselerometrą atsižvelgiant į jo dedamą paviršių, kad jis nerodytų įspėjimų apie įprastas jo aplinkines vibracijas. Atlikdami šį kalibravimą, imame keletą mėginių, tada imame jų vidurkį ir laikome kintamajame.
už (int i = 0; i
Dabar, kai akselerometras ima rodmenis, mes atimsime tas imties vertes iš rodmenų, kad jis galėtų nepaisyti aplinkos vibracijos.
int reikšmė1 = analogasRead (x); // nuskaityti x iš int reikšmė2 = analogRead (y); // skaitoma y int reikšmė3 = analogRead (z); // z skaitymas int xValue = xsample-value1; // x int pokyčio radimas yValue = ysample-value2; // y int pokyčio radimas zValue = zsample-value3; // surasti z / * pokytį, nurodant x, y ir z ašies verčių pokyčius per lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); vėlavimas (100)
Tada „Arduino“ lygina tas kalibruotas (atimtas) reikšmes su iš anksto nustatytomis ribomis. Ir atitinkamai imkitės veiksmų. Jei reikšmės yra didesnės nei iš anksto nustatytos vertės, jis pypsės garsiniu signalu ir pavaizduos vibracijos grafiką kompiuteryje naudodamas „Processing“.
/ * pokyčių palyginimas su iš anksto nustatytomis ribomis * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = milis (); // laikmačio pradžia buz = 1; // įjungta „buzzer / led flag“} kita, jei (buz == 1) // įjungta „buzzer“ vėliava, tada įspėja apie žemės drebėjimą {lcd.setCursor (0,0); lcd.print („Įspėjimas apie žemės drebėjimą“); if (milis ()> = pradžia + buzTime) buz = 0; }
Apdorojimo kodas:
Žemiau pateikiamas apdorojimo kodas, kurį galite atsisiųsti iš žemiau pateiktos nuorodos:
Žemės drebėjimų detektoriaus apdorojimo kodas
Mes sukūrėme žemės drebėjimo vibracijų grafiką naudodami „Processing“, kuriame apibrėžėme lango dydį, vienetus, šrifto dydį, foną, nuosekliųjų prievadų skaitymą ir rodymą, atidarytą pasirinktą nuoseklųjį prievadą ir kt.
// nustatykite lango dydį: ir šrifto dydį f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, tiesa); f10 = createFont ("Arial", 10, tiesa); f12 = createFont ("Arial", 12, tiesa); f24 = createFont ("Arial", 24, tiesa); dydis (1200, 700); // Išvardinkite visus galimus nuoseklius prievadus println (Serial.list ()); „myPort“ = nauja serija (tai, „COM43“, 9600); println („myPort“); myPort.bufferUntil ('\ n'); fonas (80)
Žemiau esančioje funkcijoje mes gavome duomenis iš nuoseklaus prievado ir ištraukėme reikiamus duomenis, tada suskirstėme juos pagal grafiko dydį.
// išskiriamos visos reikalingos visų trijų ašių reikšmės: int l1 = inString.indexOf ("x =") + 2; Stygos temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Stygos temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Styginių temp3 = inString.pakraipa (l1, l1 + 3); // susieti x, y ir z reikšmes su grafiko matmenimis float inByte1 = float (temp1 + (char) 9); inByte1 = žemėlapis (inByte1, -80,80, 0, aukštis-80); float inByte2 = plūduriuojantis (temp2 + (char) 9); inByte2 = žemėlapis (inByte2, -80,80, 0, aukštis-80); float inByte3 = plūduriuojantis (temp3 + (char) 9); inByte3 = žemėlapis (inByte3, -80,80, 0, aukštis-80); plūdė x = žemėlapis (xPos, 0,1120,40, plotis-40);
Po to mes nubraižėme vieneto erdvę, max ir min ribas, x, y ir z ašies vertes.
// braižymo grafiko langas, vieneto taktasWeight (2); insultas (175); Linija (0,0,0,100); textFont (f24); užpildyti (0,00,255); textAlign (RIGHT); xmargin („EarthQuake Graph By Circuit Digest“, 200,100); užpildyti (100); insultasSvoris (100); linija (1050,80,1200,80);………………
Po to mes apskaičiuojame vertes per grafiką, naudodami 3 skirtingas spalvas kaip mėlyną x ašies vertei, žalią spalvą y ašiai ir z vaizduoja raudona spalva.
insultas (0,0255); if (y1 == 0) y1 = aukštis-inBaitas-1; linija (x, y1, x + 2, aukštis-inByte1-shift); y1 = aukščio-Baitų-1 poslinkis; smūgis (0,255,0); if (y2 == 0) y2 = aukštis-inByte2-shift; linija (x, y2, x + 2, aukštis-inByte2-shift); y2 = aukščio-inByte2-shift; smūgis (255,0,0); if (y2 == 0) y3 = aukštis-inByte3-shift; linija (x, y3, x + 2, aukštis-inByte3-shift); y3 = aukštis-inByte3-shift;
Taip pat sužinokite daugiau apie apdorojimą vykdydami kitus mūsų apdorojimo projektus.
Grandinių ir PCB dizainas naudojant „EasyEDA“:
„EasyEDA“ yra ne tik vieno langelio scheminio fiksavimo, grandinės modeliavimo ir PCB projektavimo sprendimas, bet ir pigių PCB prototipų ir komponentų tiekimo paslauga. Jie neseniai pradėjo savo komponentų tiekimo paslaugą, kur turi daug elektroninių komponentų atsargų, o vartotojai gali užsisakyti reikalingus komponentus kartu su PCB užsakymu.
Kurdami savo grandines ir PCB, jūs taip pat galite paviešinti savo grandinių ir PCB dizainus, kad kiti vartotojai galėtų juos nukopijuoti ar redaguoti ir galėtų iš jų pasinaudoti. Mes taip pat paskelbėme visus mūsų grandinių ir PCB išdėstymus šiam žemės drebėjimo indikatorių skydui „Arduino UNO“, patikrinkite šią nuorodą:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Žemiau pateikiama „EasyEDA“ PCB išdėstymo viršutinio sluoksnio momentinė nuotrauka. Galite peržiūrėti bet kurį PCB sluoksnį (viršutinį, apatinį, viršutinį silkinį, dugno pieną ir kt.), Pasirinkdami sluoksnį iš lango „Sluoksniai“.
Taip pat galite pamatyti PCB nuotraukos vaizdą naudodami „EasyEDA“:
Mėginių apskaičiavimas ir užsakymas internetu:
Baigę kurti PCB, galite spustelėti „ Fabrication output“ piktogramą, kuri pateks į PCB užsakymo puslapį. Čia galite peržiūrėti savo PCB „Gerber Viewer“ arba atsisiųsti „Gerber“ failus iš savo PCB. Čia galite pasirinkti norimų užsisakyti PCB skaičių, kiek jums reikia vario sluoksnių, PCB storį, vario svorį ir net PCB spalvą. Pasirinkę visas parinktis, spustelėkite „Išsaugoti krepšelyje“ ir atlikite užsakymą. Neseniai jie labai sumažino savo PCB normas ir dabar galite užsisakyti 10 vnt. 2-sluoksnių PCB su 10 cm x 10 cm dydžio tik už 2 USD.
Štai PCB, kuriuos gavau iš „EasyEDA“:
Žemiau pateikiamos galutinio skydo nuotraukos, litavus komponentus ant PCB: