- Požadované komponenty:
- Pracovní vysvětlení:
- Vysvětlení obvodu:
- Vysvětlení programování:
- Návrh obvodů a desek plošných spojů pomocí EasyEDA:
- Výpočet a objednávání vzorků online:
Zemětřesení je nepředvídatelná přírodní katastrofa, která způsobí škody na životech a majetku. Stává se to náhle a nemůžeme to zastavit, ale můžeme z toho být upozorněni. V dnešní době existuje mnoho technologií, které lze použít k detekci malých otřesů a klepání, abychom mohli přijmout preventivní opatření před některými významnými vibracemi na Zemi. Zde používáme akcelerometr ADXL335 k detekci vibrací před zemětřesením. Akcelerometr ADXL335 je vysoce citlivý na otřesy a vibrace spolu se všemi třemi osami. Zde budujeme Arduino detektor zemětřesení pomocí akcelerometru.
Stavíme tento detektor zemětřesení jako Arduino štít na PCB a ukážeme také vibrační graf na počítači pomocí zpracování.
Požadované komponenty:
- Arduino UNO
- Akcelerometr ADXL335
- 16x2 LCD
- Bzučák
- Tranzistor BC547
- 1k rezistory
- 10K POT
- VEDENÝ
- Napájení 9v / 12v
- Berg hole muž / žena
Akcelerometr:
Pin Popis akcelerometru:
- Na tomto pinu by se mělo připojit napájení 5 voltů Vcc.
- X-OUT Tento pin poskytuje analogový výstup ve směru x
- Y-OUT Tento pin poskytuje analogový výstup ve směru y
- Z-OUT Tento pin poskytuje analogový výstup ve směru z
- GND zem
- ST Tento kolík slouží k nastavení citlivosti snímače
Zkontrolujte také naše další projekty pomocí akcelerometru:
- Ping Pong hra pomocí Arduina
- Robot ovládaný gesty pomocí akcelerometru.
- Arduino systém varování před nehodami vozidel pomocí GPS, GSM a akcelerometru
Pracovní vysvětlení:
Práce s tímto detektorem zemětřesení je jednoduchá. Jak jsme již zmínili dříve, použili jsme akcelerometr pro detekci vibrací zemětřesení podél kterékoli ze tří os, takže kdykoli dojde k vibracím, akcelerometr detekuje tyto vibrace a převede je na ekvivalentní hodnotu ADC. Poté tyto hodnoty ADC načte Arduino a zobrazí se na 16x2 LCD. Tyto hodnoty jsme také zobrazili na Graph using Processing. Další informace o akcelerometru naleznete v dalších projektech akcelerometru zde.
Nejprve musíme kalibrovat akcelerometr odebráním vzorků okolních vibrací, kdykoli se Arduino zapne. Pak musíme odečíst tyto vzorové hodnoty od skutečných hodnot, abychom získali skutečné hodnoty. Tato kalibrace je nutná, aby se nezobrazovaly výstrahy s ohledem na normální okolní vibrace. Po nalezení skutečných hodnot Arduino porovná tyto hodnoty s předdefinovanými maximálními a minimálními hodnotami. Pokud Arduino zjistí, že hodnoty změn jsou více či méně než předdefinované hodnoty libovolné osy v obou směrech (negativní i pozitivní), Arduino spustí bzučák a zobrazí stav výstrahy na 16x2 LCD a také se rozsvítí LED. Můžeme upravit citlivost detektoru zemětřesení změnou předdefinovaných hodnot v kódu Arduino.
Demonstrační video a Arduino kód jsou uvedeny na konci článku.
Vysvětlení obvodu:
Obvod tohoto detektoru zemětřesení Arduino Shield PCBje také jednoduché. V tomto projektu jsme použili Arduino, které čte analogové napětí akcelerometru a převádí je na digitální hodnoty. Arduino také řídí bzučák, LED, 16x2 LCD a vypočítává a porovnává hodnoty a provádí příslušná opatření. Další částí je akcelerometr, který detekuje vibrace Země a generuje analogová napětí ve 3 osách (X, Y a Z). LCD se používá k zobrazení změn hodnot os X, Y a Z a také k zobrazení výstražné zprávy. Tento LCD je připojen k Arduinu ve 4bitovém režimu. Piny RS, GND a EN jsou přímo připojeny k 9, GND a 8 pinům Arduina a zbytek 4 datových pinů LCD, konkrétně D4, D5, D6 a D7 jsou přímo připojeny k digitálnímu pinu 7, 6, 5 a 4 Arduina. Bzučák je připojen k pinu 12 Arduina přes tranzistor NPN BC547. 10k hrnec se také používá k ovládání jasu LCD.
Vysvětlení programování:
V tomto Arduino Shield detektoru zemětřesení jsme vytvořili dva kódy: jeden pro Arduino pro detekci zemětřesení a druhý pro zpracování IDE pro vykreslení vibrací zemětřesení přes graf na počítači. Dozvíme se postupně oba kódy:
Arduino kód:
Nejprve kalibrujeme akcelerometr s ohledem na jeho umisťovací povrch, aby nezobrazoval výstrahy s ohledem na jeho normální okolní vibrace. V této kalibraci vezmeme několik vzorků a poté z nich vezmeme průměr a uložíme do proměnné.
pro (int i = 0; i
Nyní, kdykoli akcelerometr odečte naměřené hodnoty, odečteme tyto naměřené hodnoty od naměřených hodnot, aby mohl ignorovat vibrace okolí.
int hodnota1 = analogRead (x); // čtení x out int value2 = analogRead (y); // načítání y out int value3 = analogRead (z); // čtení z out int xValue = xsample-value1; // nalezení změny v x int yValue = ysample-value2; // nalezení změny v y int zValue = zsample-value3; // nalezení změny v z / * displying změny v hodnotách os x, yaz z přes lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); zpoždění (100)
Poté Arduino porovná tyto kalibrované (odečtené) hodnoty s předdefinovanými limity. A podle toho jednat. Pokud jsou hodnoty vyšší než předdefinované hodnoty, zapípá bzučák a vykreslí vibrační graf na počítači pomocí Zpracování.
/ * porovnání změny s předdefinovanými limity * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // start start buz = 1; // příznak bzučák / led aktivován} else if (buz == 1) // příznak bzučáku aktivován a poté upozornit na zemětřesení {lcd.setCursor (0,0); lcd.print („Upozornění na zemětřesení“); if (millis ()> = start + buzTime) buz = 0; }
Kód zpracování:
Níže je uveden zpracovatelský kód, kód si můžete stáhnout z níže uvedeného odkazu:
Kód zpracování detektoru zemětřesení
Navrhli jsme graf pomocí Zpracování pro vibrace zemětřesení, ve kterém jsme definovali velikost okna, jednotky, velikost písma, pozadí, čtení a zobrazení sériových portů, otevření vybraného sériového portu atd.
// nastavit velikost okna: a velikost 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, true); velikost (1200, 700); // Seznam všech dostupných sériových portů println (Serial.list ()); myPort = new Serial (this, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); pozadí (80)
V níže uvedené funkci jsme obdrželi data ze sériového portu a extrahovali požadovaná data a poté je mapovali s velikostí grafu.
// extrahování všech požadovaných hodnot všech tří os: int l1 = inString.indexOf ("x =") + 2; String temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; String temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Řetězec temp3 = inString.substring (l1, l1 + 3); // mapování hodnot x, yaz z rozměrů 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, šířka-40);
Poté jsme vynesli jednotkový prostor, maximální a minimální limity, hodnoty osy x, yaz.
// vykreslení okna grafu, jednotka zdvihWeight (2); mrtvice (175); Řádek (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);………………
Poté vykreslíme hodnoty přes graf pomocí 3 různých barev, jako je modrá pro hodnotu osy x, zelená barva pro osu y a z je reprezentována červenou barvou.
mrtvice (0,0255); if (y1 == 0) y1 = height-inByte1-shift; řádek (x, y1, x + 2, shift-inByte1-shift); y1 = výška-inByte1-shift; zdvih (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; řádek (x, y2, x + 2, shift-inByte2-shift); y2 = výška-inByte2-shift; zdvih (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; řádek (x, y3, x + 2, výška-vByte3-posun); y3 = shift-inByte3-shift;
Další informace o zpracování najdete také v našich dalších projektech zpracování.
Návrh obvodů a desek plošných spojů pomocí EasyEDA:
EasyEDA není jen komplexním řešením pro schematické snímání, simulaci obvodů a návrh desek plošných spojů, ale také nabízí levnou službu prototypů desek plošných spojů a sourcing komponent. Nedávno zahájili službu sourcingu komponent, kde mají velkou zásobu elektronických součástek a uživatelé si mohou objednat požadované komponenty spolu s objednávkou PCB.
Při navrhování vašich obvodů a desek plošných spojů můžete také zveřejnit své návrhy obvodů a desek plošných spojů, aby je mohli ostatní uživatelé kopírovat nebo upravovat a mohli z toho těžit. Rovněž jsme zveřejnili celé naše rozvržení obvodů a desek plošných spojů pro tento štít indikátoru zemětřesení pro Arduino UNO, zkontrolujte následující odkaz:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Níže je snímek horní vrstvy rozložení PCB od EasyEDA, můžete zobrazit libovolnou vrstvu (horní, dolní, horní, spodní, spodní atd.) Desky plošných spojů výběrem vrstvy z okna „Vrstvy“.
Můžete si také prohlédnout Foto pohled na PCB pomocí EasyEDA:
Výpočet a objednávání vzorků online:
Po dokončení návrhu desky plošných spojů můžete kliknout na ikonu Fabrication output , která vás přenese na stránku objednávky desky plošných spojů. Zde si můžete prohlédnout svoji PCB v Gerber Vieweru nebo si stáhnout Gerber soubory z vaší PCB. Zde můžete vybrat počet desek plošných spojů, které chcete objednat, kolik měděných vrstev potřebujete, tloušťku desky plošných spojů, hmotnost mědi a dokonce i barvu desky plošných spojů. Poté, co vyberete všechny možnosti, klikněte na „Uložit do košíku“ a dokončete objednávku. Nedávno výrazně snížily sazby PCB a nyní si můžete objednat 10 ks dvouvrstvých PCB o velikosti 10cm x 10cm jen za 2 $.
Zde jsou PCB, které jsem získal od EasyEDA:
Níže jsou obrázky finálního štítu po pájení součástek na desce plošných spojů: