- Požadované komponenty:
- Pracovné vysvetlenie:
- Vysvetlenie obvodu:
- Vysvetlenie programovania:
- Dizajn obvodov a DPS pomocou EasyEDA:
- Výpočet a objednávanie vzoriek online:
Zemetrasenie je nepredvídateľná prírodná katastrofa, ktorá spôsobuje škody na životoch a majetku. Stáva sa to náhle a nemôžeme to zastaviť, ale môžeme z toho byť upozornení. V dnešnej dobe existuje veľa technológií, ktoré možno použiť na detekciu malých otrasov a klepaní, aby sme mohli prijať preventívne opatrenia pred niektorými významnými vibráciami v zemi. Tu používame akcelerometer ADXL335 na detekciu vibrácií pred zemetrasením. Akcelerometer ADXL335 je vysoko citlivý na otrasy a vibrácie spolu so všetkými tromi osami. Tu budujeme Arduino detektor zemetrasenia pomocou akcelerometra.
Staviame tento detektor zemetrasenia ako štít Arduino na doske plošných spojov a ukážeme tiež vibračný graf na počítači pomocou technológie Processing.
Požadované komponenty:
- Arduino UNO
- Akcelerometer ADXL335
- 16x2 LCD
- Bzučiak
- Tranzistor BC547
- 1k rezistory
- 10K POT
- LED
- Napájanie 9v / 12v
- Tyčinky Berg muž / žena
Akcelerometer:
Pin Popis akcelerometra:
- Na tomto kolíku by sa malo pripájať 5 voltové napájanie Vcc.
- X-OUT Tento pin poskytuje analógový výstup v smere x
- Y-OUT Tento pin poskytuje analógový výstup v smere y
- Z-OUT Tento pin poskytuje analógový výstup v smere z
- GND zem
- ST Tento pin slúži na nastavenie citlivosti snímača
Skontrolujte tiež naše ďalšie projekty pomocou akcelerometra:
- Ping Pong hra pomocou Arduina
- Robot riadený gestami pomocou akcelerometra.
- Systém varovania o nehode vozidla založený na Arduine pomocou GPS, GSM a akcelerometra
Pracovné vysvetlenie:
Práca tohto detektora zemetrasenia je jednoduchá. Ako sme už spomenuli skôr, použili sme akcelerometer na detekciu vibrácií zemetrasenia pozdĺž ktorejkoľvek z troch osí, takže kedykoľvek vibrácie nastanú, akcelerometer zaznamená tieto vibrácie a prevedie ich na ekvivalentnú hodnotu ADC. Potom tieto hodnoty ADC prečíta Arduino a zobrazí ich na displeji 16x2 LCD. Tieto hodnoty sme tiež zobrazili na grafe pomocou Processing. Viac informácií o akcelerometri sa dozviete tu.
Najskôr musíme kalibrovať akcelerometer tak, že odoberieme vzorky okolitých vibrácií, kedykoľvek sa Arduino zapne. Potom musíme tieto skutočné hodnoty odčítať od skutočných hodnôt, aby sme získali skutočné hodnoty. Táto kalibrácia je potrebná, aby nezobrazovala výstrahy týkajúce sa bežných vibrácií okolia. Po nájdení skutočných hodnôt Arduino porovnáva tieto hodnoty s preddefinovanými maximálnymi a minimálnymi hodnotami. Ak Arduino zistí, že akékoľvek zmeny sú hodnoty väčšie alebo menšie ako preddefinované hodnoty ktorejkoľvek osi v obidvoch smeroch (záporné aj kladné), Arduino spustí bzučiak a zobrazí stav výstrahy na 16x2 LCD a tiež sa rozsvieti LED. Citlivosť detektora zemetrasenia môžeme upraviť zmenou preddefinovaných hodnôt v kóde Arduino.
Ukážkové video a Arduino kód sú uvedené na konci článku.
Vysvetlenie obvodu:
Obvod tohto detektoru zemetrasenia Arduino Shield PCBje tiež jednoduchý. V tomto projekte sme použili Arduino, ktoré sníma analógové napätie akcelerometra a prevádza ich na digitálne hodnoty. Arduino tiež riadi bzučiak, LED, 16x2 LCD a počíta a porovnáva hodnoty a prijíma príslušné opatrenia. Ďalšou časťou je akcelerometer, ktorý detekuje vibrácie zeme a generuje analógové napätie v 3 osiach (X, Y a Z). LCD sa používa na zobrazovanie zmien hodnôt osí X, Y a Z a tiež na zobrazovanie výstražných správ. Tento LCD je pripojený k Arduinu v 4-bitovom režime. Piny RS, GND a EN sú priamo pripojené k 9, GND a 8 pinom Arduina a zvyšné 4 dátové piny LCD, konkrétne D4, D5, D6 a D7, sú priamo pripojené k digitálnemu pinu 7, 6, 5 a 4 Arduina. Bzučiak je pripojený k pinu 12 Arduina cez tranzistor NPN BC547. 10k hrniec sa používa aj na ovládanie jasu LCD.
Vysvetlenie programovania:
V tomto Arduino Shield detektore zemetrasenia sme vytvorili dva kódy: jeden pre Arduino na detekciu zemetrasenia a druhý pre spracovanie IDE na vykreslenie vibrácií zemetrasenia nad grafom v počítači. Dozvieme sa postupne oba kódy:
Arduino kód:
Najskôr kalibrujeme akcelerometer s ohľadom na jeho umiestnenú plochu, aby nezobrazoval výstrahy týkajúce sa jeho bežných vibrácií v okolí. Pri tejto kalibrácii odoberieme niekoľko vzoriek, potom z nich urobíme priemer a uložíme ich do premennej.
pre (int i = 0; i
Teraz, kedykoľvek akcelerometer urobí namerané hodnoty, odčítame tieto vzorové hodnoty od nameraných hodnôt, aby mohol ignorovať vibrácie okolia.
int hodnota1 = analogRead (x); // načítanie x out int hodnota2 = analogRead (y); // načítanie y out int hodnota3 = analogRead (z); // načítanie z out int xValue = xsample-value1; // nájdenie zmeny v x int yValue = ysample-value2; // nájdenie zmeny v y int zValue = zsample-value3; // hľadanie zmeny v z / * displying zmeny v hodnotách osi x, yaz z nad lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); oneskorenie (100)
Potom Arduino porovnáva tieto kalibrované (odčítané) hodnoty s preddefinovanými limitmi. A podľa toho konať. Ak sú hodnoty vyššie ako preddefinované hodnoty, vydá zvukový signál a vydá vibračný graf do počítača pomocou nástroja Processing.
/ * porovnanie zmeny s preddefinovanými limitmi * / if (xValue <minValue - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // spustenie časovača = 1; // aktivovaný bzučiak / indikátor LED} else if (buz == 1) // aktivovaný príznak bzučiaka a potom varovanie pred zemetrasením {lcd.setCursor (0,0); lcd.print („Upozornenie na zemetrasenie“); if (millis ()> = start + buzTime) buz = 0; }
Kód spracovania:
Ďalej je uvedený priložený spracovateľský kód, ktorý si môžete stiahnuť z nasledujúceho odkazu:
Kód spracovania detektora zemetrasenia
Navrhli sme graf pomocou Spracovania pre vibrácie zemetrasenia, v ktorom sme definovali veľkosť okna, jednotky, veľkosť písma, pozadie, čítanie a zobrazovanie sériových portov, otvorenie vybraného sériového portu atď.
// nastav veľkosť okna: a veľkosť písma f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, true); f10 = createFont ("Arial", 10, true); f12 = createFont ("Arial", 12, true); f24 = createFont ("Arial", 24, pravda); veľkosť (1 200, 700); // Zoznam všetkých dostupných sériových portov println (Serial.list ()); myPort = nové sériové číslo (toto, „COM43“, 9600); println (myPort); myPort.bufferUntil ('\ n'); pozadie (80)
V nasledujúcej funkcii sme prijali údaje zo sériového portu, extrahovali sme požadované údaje a následne ich namapovali na veľkosť grafu.
// extrahovanie všetkých požadovaných hodnôt všetkých troch osí: int l1 = inString.indexOf ("x =") + 2; Reťazec temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Reťazec temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Reťazec temp3 = inString.substring (l1, l1 + 3); // mapovanie hodnôt x, yaz z rozmerov grafu float inByte1 = float (temp1 + (char) 9); inByte1 = mapa (inByte1, -80,80, 0, výška-80); float inByte2 = float (temp2 + (char) 9); inByte2 = mapa (inByte2, -80,80, 0, výška-80); float inByte3 = float (temp3 + (char) 9); inByte3 = mapa (inByte3, -80,80, 0, výška-80); float x = mapa (xPos, 0,1120,40, šírka-40);
Potom sme zakreslili jednotkový priestor, limity max a min, hodnoty osi x, yaz.
// vykreslenie okna grafu, jednotka strokeWeight (2); mŕtvica (175); Riadok (0,0,0 100); textFont (f24); výplň (0,00,255); textAlign (PRAVÝ); xmargin („EarthQuake Graph By Circuit Digest“, 200 100); výplň (100); zdvihWeight (100); linka (1050,80,1200,80);………………
Potom vykreslíme hodnoty nad graf pomocou 3 rôznych farieb, ako je modrá pre hodnotu osi x, zelená farba pre os y a z je reprezentovaná červenou farbou.
mŕtvica (0,0255); if (y1 == 0) y1 = height-inByte1-shift; riadok (x, y1, x + 2, výška-vByte1-posun); y1 = výška-vByte1-posun; zdvih (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; riadok (x, y2, x + 2, výška-vByte2-posun); y2 = výška-vByte2-posun; zdvih (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; riadok (x, y3, x + 2, shift-inByte3-shift); y3 = výška-vByte3-posun;
Prečítajte si ďalšie informácie o spracovaní prostredníctvom ďalších našich spracovateľských projektov.
Dizajn obvodov a DPS pomocou EasyEDA:
EasyEDA nie je iba komplexným riešením pre schematické snímanie, simuláciu obvodov a návrh dosiek plošných spojov, ponúka tiež nízkonákladovú službu prototypov dosiek plošných spojov a sourcingu komponentov. Nedávno spustili službu získavania komponentov, kde majú veľkú zásobu elektronických komponentov a používatelia si môžu objednať požadované komponenty spolu s objednávkou PCB.
Pri navrhovaní vašich obvodov a dosiek plošných spojov môžete tiež zverejniť svoje návrhy obvodov a dosiek plošných spojov, aby ich ostatní používatelia mohli kopírovať alebo upravovať a využívať ich výhody. Pre tento štít indikátora zemetrasenia sme tiež zverejnili celé naše usporiadania obvodov a dosiek plošných spojov pre Arduino UNO, skontrolujte nasledujúci odkaz:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Nižšie je uvedený obrázok vrchnej vrstvy rozloženia PCB z EasyEDA. Môžete si zobraziť ľubovoľnú vrstvu (vrchná, spodná, vrchná vrstva, spodná vrstva atď.) PCB výberom vrstvy z okna „Vrstvy“.
Môžete tiež vidieť Foto pohľad na DPS pomocou EasyEDA:
Výpočet a objednávanie vzoriek online:
Po dokončení návrhu DPS môžete kliknúť na ikonu Výstup výroby , ktorá vás prevedie na stránku objednávky DPS. Tu si môžete pozrieť svoju DPS v prehliadači Gerber Viewer alebo si stiahnuť súbory Gerber z vašej DPS. Tu môžete zvoliť počet DPS, ktoré chcete objednať, koľko vrstiev medi potrebujete, hrúbku DPS, hmotnosť medi a dokonca aj farbu DPS. Po výbere všetkých možností kliknite na tlačidlo „Uložiť do košíka“ a dokončite objednávku. Nedávno výrazne poklesli sadzby PCB a teraz si môžete objednať 10 ks dvojvrstvových PCB s rozmermi 10 cm x 10 cm len za 2 doláre.
Tu sú PCB, ktoré som získal od EasyEDA:
Nižšie sú uvedené obrázky konečného štítu po spájkovaní komponentov na PCB: