- Potrebne komponente:
- Radno objašnjenje:
- Objašnjenje sklopa:
- Objašnjenje programiranja:
- Dizajn sklopova i PCB-a pomoću EasyEDA-e:
- Izračun i naručivanje uzoraka putem interneta:
Potres je nepredvidljiva prirodna katastrofa koja nanosi štetu životima i imovini. To se događa iznenada i ne možemo to zaustaviti, ali iz toga možemo biti upozoreni. U današnje vrijeme postoji mnogo tehnologija koje se mogu koristiti za otkrivanje malih podrhtavanja i udaraca, tako da možemo poduzeti mjere pred neke veće vibracije u zemlji. Ovdje koristimo akcelerometar ADXL335 za otkrivanje vibracija prije potresa. Akcelerometar ADXL335 vrlo je osjetljiv na tresenja i vibracije zajedno sa sve tri osi. Ovdje gradimo detektor potresa temeljen na Arduinu pomoću akcelerometra.
Ovdje gradimo ovaj detektor potresa kao Arduino štit na PCB-u, a prikazat ćemo i Grafikon vibracija na računalu pomoću Obrade.
Potrebne komponente:
- Arduino UNO
- Akcelerometar ADXL335
- LCD 16x2
- Zujalica
- Tranzistor BC547
- 1k otpornici
- 10K LONAC
- LED
- Napajanje 9v / 12v
- Berg štapići muško / žensko
Brzinomjer:
Pin Opis mjerača ubrzanja:
- Vcc 5-voltno napajanje trebalo bi se spojiti na ovom pinu.
- X-OUT Ovaj pin daje analogni izlaz u smjeru x
- Y-OUT Ovaj pin daje analogni izlaz u smjeru y
- Z-OUT Ovaj pin daje analogni izlaz u smjeru z
- GND Tlo
- ST Ovaj pin služi za podešavanje osjetljivosti senzora


Također provjerite i ostale naše projekte pomoću akcelerometra:
- Ping Pong igra koristeći Arduino
- Robot pod nadzorom gestova zasnovan na akcelerometru.
- Sustav za upozoravanje na nezgode na bazi Arduina koji koristi GPS, GSM i akcelerometar
Radno objašnjenje:
Rad ovog detektora potresa jednostavan je. Kao što smo ranije spomenuli, akcelerometar smo koristili za otkrivanje potresnih vibracija duž bilo koje od tri osi, tako da akcelerometar kad god se pojave vibracije osjeti te vibracije i pretvori ih u ekvivalentnu ADC vrijednost. Zatim ove vrijednosti ADC čita Arduino i prikazuje ih na LCD-u 16x2. Te smo vrijednosti također prikazali na Grafu koristeći Processing. Saznajte više o akcelerometru prolazeći kroz ostale naše projekte akcelerometra ovdje.
Prvo moramo kalibrirati akcelerometar uzimajući uzorke okolnih vibracija kad god se Arduino uključi. Zatim trebamo oduzeti te uzorke vrijednosti od stvarnih očitanja kako bismo dobili stvarna očitanja. Ova je kalibracija potrebna kako ne bi prikazivala upozorenja u vezi s normalnim okolnim vibracijama. Nakon pronalaska stvarnih očitanja, Arduino uspoređuje ove vrijednosti s unaprijed definiranim maksimalnim i minimalnim vrijednostima. Ako Arduino utvrdi da su vrijednosti promjena više ili manje od unaprijed definiranih vrijednosti bilo koje osi u oba smjera (negativne i pozitivne), tada Arduino aktivira zujalicu i prikazuje status upozorenja na LCD-u 16x2 i LED također također uključenom. Osjetljivost detektora potresa možemo prilagoditi promjenom unaprijed definiranih vrijednosti u Arduino kodu.


Demonstracijski video i Arduino kôd dati su na kraju članka.
Objašnjenje sklopa:
Strujni krug ovog PCB-a Arduino Shield detektora potresaje također jednostavno. U ovom smo projektu koristili Arduino koji očitava analogni napon akcelerometra i pretvara ih u digitalne vrijednosti. Arduino također pokreće zujalicu, LED, 16x2 LCD i izračunava i uspoređuje vrijednosti i poduzima odgovarajuće mjere. Sljedeći je dio akcelerometar koji otkriva vibracije zemlje i generira analogne napone u 3 osi (X, Y i Z). LCD se koristi za prikaz promjene vrijednosti X, Y i Z osi, a također prikazuje poruku upozorenja preko nje. Ovaj je LCD priključen na Arduino u 4-bitnom načinu. RS, GND i EN pinovi izravno su povezani s 9, GND i 8 pinova Arduina, a ostale 4 podatkovne pinove LCD-a, naime D4, D5, D6 i D7, izravno su povezane s digitalnim pinom 7, 6, 5 i 4 Arduina. Zujalica je spojena na pin 12 Arduina kroz NPN BC547 tranzistor. Za upravljanje svjetlinom LCD-a koristi se i posuda od 10.000 ks.

Objašnjenje programiranja:
U ovom detektoru potresa Arduino Shield napravili smo dva koda: jedan za Arduino za otkrivanje potresa i drugi za obradu IDE za crtanje vibracija potresa preko grafa na računalu. Učit ćemo jedan po jedan o oba koda:
Arduino kôd:
Prije svega, kalibriramo akcelerometar s obzirom na njegovu površinu za postavljanje, tako da neće prikazivati upozorenja s obzirom na svoje normalne okolne vibracije. U ovoj kalibraciji uzimamo neke uzorke, a zatim ih uzimamo u prosjeku i pohranjujemo u varijablu.
za (int i = 0; i
Sad kad god akcelerometar odredi očitanja, oduzeti ćemo one uzorke vrijednosti od očitanja kako bi mogao zanemariti vibracije okoline.
int vrijednost1 = analogRead (x); // čitanje x out vrijednosti int2 = analogRead (y); // očitavanje y vrijednosti int value3 = analogRead (z); // čitanje z iz int xValue = xsample-value1; // pronalaženje promjene u x int yValue = ysample-value2; // pronalaženje promjene u y int zValue = zsample-value3; // pronalaženje promjene u z / * s prikazom promjene vrijednosti x, y i z osi preko lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); kašnjenje (100)
Tada Arduino uspoređuje te kalibrirane (oduzete) vrijednosti s unaprijed definiranim granicama. I poduzeti mjere u skladu s tim. Ako su vrijednosti veće od unaprijed definiranih vrijednosti, oglasit će se zvučnim signalom i iscrtati grafikon vibracija na računalo pomoću Obrada.
/ * uspoređivanje promjene s unaprijed definiranim ograničenjima * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = milis (); // start tajmera buz = 1; // aktivirana zujalica / vodena zastavica} else if (buz == 1) // aktivirana zastava zujalice, a zatim upozorava na potres {lcd.setCursor (0,0); lcd.print ("Upozorenje o potresu"); if (millis ()> = start + vrijeme zujanja) buz = 0; }
Kôd za obradu:
Ispod je priložen kôd za obradu, koji možete preuzeti s donje veze:
Kod za obradu detektora zemljotresa
Dizajnirali smo grafikon koristeći Processing (Obrada) za zemljotresne vibracije u kojem smo definirali veličinu prozora, jedinice, veličinu fonta, pozadinu, čitanje i prikaz serijskih portova, otvaranje odabranih serijskih porta itd.
// postavimo veličinu prozora: i veličinu fonta f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, istina); f10 = createFont ("Arial", 10, istina); f12 = createFont ("Arial", 12, istina); f24 = createFont ("Arial", 24, istina); veličina (1200, 700); // Popis svih dostupnih serijskih portova println (Serial.list ()); myPort = novi serijski (ovo, "COM43", 9600); println (mojPort); myPort.bufferUntil ('\ n'); pozadina (80)
U donjoj funkciji primili smo podatke iz serijskog porta i izdvojili potrebne podatke, a zatim ih mapirali s veličinom grafa.
// izdvajanje svih potrebnih vrijednosti sve tri osi: int l1 = inString.indexOf ("x =") + 2; Niz temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Niz temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Niz temp3 = inString.substring (l1, l1 + 3); // mapiranje vrijednosti x, y i z s dimenzijama grafa float inByte1 = float (temp1 + (char) 9); inByte1 = karta (inByte1, -80,80, 0, visina-80); float inByte2 = float (temp2 + (char) 9); inByte2 = karta (inByte2, -80,80, 0, visina-80); float inByte3 = float (temp3 + (char) 9); inByte3 = karta (inByte3, -80,80, 0, visina-80); float x = karta (xPos, 0,1120,40, širina-40);
Nakon toga smo ucrtali jedinični prostor, maksimum i min ograničenja, vrijednosti x, y i z-osi.
// crtanje prozora grafikona, jedinični potezWeight (2); moždani udar (175); Linija (0,0,0,100); textFont (f24); ispuniti (0,00,255); textAlign (DESNO); xmargin ("EarthQuake Graph By Circuit Digest", 200.100); ispuniti (100); potezna težina (100); linija (1050,80,1200,80);………………
Nakon toga grafički prikazujemo vrijednosti pomoću 3 različite boje kao što su Plava za vrijednost x osi, zelena za y os i z je predstavljena crvenom bojom.
moždani udar (0,0,255); if (y1 == 0) y1 = visina-uByte1-shift; linija (x, y1, x + 2, pomak visine uByte1); y1 = visina-uByte1-pomaku; moždani udar (0,255,0); if (y2 == 0) y2 = shift-visina-uByte2; linija (x, y2, x + 2, pomak visine uByte2); y2 = pomak visine-uByte2; moždani udar (255,0,0); if (y2 == 0) y3 = visina-uByte3-shift; linija (x, y3, x + 2, pomak visine uByte3); y3 = visina-uByte3-pomaku;
Također saznajte više o obradi kroz druge naše procese obrade.
Dizajn sklopova i PCB-a pomoću EasyEDA-e:
EasyEDA nije samo rješenje na jednom mjestu za shematsko hvatanje, simulaciju sklopa i dizajn PCB-a, oni također nude jeftinu uslugu izvođenja prototipa i komponenata PCB-a. Nedavno su pokrenuli svoju uslugu nabave komponenata gdje imaju veliku zalihu elektroničkih komponenata, a korisnici mogu naručiti njihove potrebne komponente zajedno s narudžbom PCB-a.
Dok dizajnirate svoje sklopove i PCB-ove, također možete učiniti svoj dizajn kruga i PCB-a javnim, tako da ih drugi korisnici mogu kopirati ili uređivati i od toga imati koristi, također smo učinili cijeli svoj raspored krugova i PCB-a javnim za ovaj štitnik indikatora potresa za Arduino UNO, provjerite donju poveznicu:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Ispod je Snimka gornjeg sloja izgleda PCB-a tvrtke EasyEDA, možete pregledati bilo koji sloj (gornji, donji, gornji dio dna, dno itd.) PCB-a odabirom sloja iz prozora "Slojevi".

Pregled fotografija na tiskanim pločama možete vidjeti i pomoću EasyEDA-e:

Izračun i naručivanje uzoraka putem interneta:
Nakon dovršetka dizajna PCB-a možete kliknuti ikonu izlaza za izradu koja će vas odvesti na stranicu za narudžbu PCB-a. Ovdje možete pregledati svoju PCB u pregledniku Gerber Viewer ili preuzeti Gerber datoteke s PCB-a. Ovdje možete odabrati broj PCB-a koje želite naručiti, koliko slojeva bakra trebate, debljinu PCB-a, težinu bakra, pa čak i boju PCB-a. Nakon što odaberete sve opcije, kliknite "Spremi u košaricu" i dovršite narudžbu. Nedavno su znatno smanjili stope PCB-a, a sada možete naručiti 10 kom dvoslojnih PCB-a veličine 10 cm x 10 cm samo za 2 dolara.

Evo PCB-a koje sam dobio od EasyEDA-e:


Ispod su slike završnog štita nakon lemljenja komponenata na PCB:


