- Vereiste componenten:
- Werkende uitleg:
- Circuit uitleg:
- Programmering Toelichting:
- Circuit- en PCB-ontwerp met EasyEDA:
- Monsters online berekenen en bestellen:
Een aardbeving is een onvoorspelbare natuurramp die schade toebrengt aan levens en eigendommen. Het gebeurt plotseling en we kunnen het niet stoppen, maar we kunnen er wel van worden gewaarschuwd. In de huidige tijd zijn er veel technologieën die kunnen worden gebruikt om de kleine schokken en stoten te detecteren, zodat we voorzorgsmaatregelen kunnen nemen voorafgaand aan enkele grote trillingen op aarde. Hier gebruiken we Accelerometer ADXL335 om de trillingen van vóór de aardbeving te detecteren. Accelerometer ADXL335 is zeer gevoelig voor schokken en trillingen samen met alle drie de assen. Hier bouwen we een op Arduino gebaseerde aardbevingsdetector met behulp van Accelerometer.
We bouwen hier deze aardbevingsdetector als een Arduino-schild op PCB en zullen ook de trillingsgrafiek op de computer laten zien met behulp van Processing.
Vereiste componenten:
- Arduino UNO
- Versnellingsmeter ADXL335
- 16x2 LCD
- Zoemer
- BC547-transistor
- 1k weerstanden
- 10K POT
- LED
- Voeding 9v / 12v
- Berg sticks mannelijk / vrouwelijk
Versnellingsmeter:
Pin Beschrijving van accelerometer:
- Vcc 5 volt voeding moet op deze pin worden aangesloten.
- X-OUT Deze pin geeft een analoge uitgang in x-richting
- Y-OUT Deze pin geeft een analoge uitgang in y-richting
- Z-OUT Deze pin geeft een analoge uitgang in z-richting
- GND Aarde
- ST Deze pin wordt gebruikt om de gevoeligheid van de sensor in te stellen
Bekijk ook onze andere projecten met Accelerometer:
- Pingpongspel met Arduino
- Op versnellingsmeter gebaseerde robot met handgebaren.
- Op Arduino gebaseerd waarschuwingssysteem voor voertuigongevallen met behulp van GPS, GSM en Accelerometer
Werkende uitleg:
De werking van deze aardbevingsdetector is eenvoudig. Zoals we eerder vermeldden, hebben we Accelerometer gebruikt voor het detecteren van trillingen van aardbevingen langs een van de drie assen, zodat wanneer trillingen optreden, de accelerometer die trillingen detecteert en deze omzet in een gelijkwaardige ADC-waarde. Vervolgens worden deze ADC-waarden door Arduino gelezen en weergegeven op het 16x2 LCD-scherm. We hebben deze waarden ook weergegeven in Graph met behulp van Processing. Lees meer over Accelerometer door hier onze andere Accelerometer-projecten te bekijken.
Eerst moeten we de versnellingsmeter kalibreren door de monsters van omringende trillingen te nemen wanneer Arduino wordt ingeschakeld. Vervolgens moeten we die voorbeeldwaarden aftrekken van de werkelijke metingen om de echte metingen te krijgen. Deze kalibratie is nodig om te voorkomen dat er waarschuwingen worden weergegeven met betrekking tot de normale trillingen in de omgeving. Na het vinden van echte metingen, vergelijkt Arduino deze waarden met vooraf gedefinieerde max- en min-waarden. Als Arduino merkt dat de waarden van wijzigingen meer dan of minder zijn dan de vooraf gedefinieerde waarden van een as in beide richtingen (negatief en positief), triggert Arduino de zoemer en toont de status van de waarschuwing via het 16x2 LCD-scherm en wordt ook een LED ingeschakeld. We kunnen de gevoeligheid van de aardbevingsdetector aanpassen door de vooraf gedefinieerde waarden in de Arduino-code te wijzigen.
Demonstratievideo en Arduino-code worden aan het einde van het artikel gegeven.
Circuit uitleg:
Circuit van deze aardbevingsdetector Arduino Shield PCBis ook eenvoudig. In dit project hebben we Arduino gebruikt die de analoge spanning van de accelerometer uitleest en deze omzet in digitale waarden. Arduino stuurt ook de zoemer, LED, 16x2 LCD aan en berekent en vergelijkt waarden en neemt passende maatregelen. Het volgende deel is een versnellingsmeter die trillingen van de aarde detecteert en analoge spanningen genereert in 3 assen (X, Y en Z). LCD wordt gebruikt om de verandering in waarden van de X-, Y- en Z-as weer te geven en er ook een waarschuwingsbericht over te tonen. Dit LCD-scherm is in 4-bit-modus aan Arduino bevestigd. RS-, GND- en EN-pinnen zijn rechtstreeks verbonden met 9, GND en 8-pinnen van Arduino en de rest van 4 datapinnen van LCD, namelijk D4, D5, D6 en D7, zijn rechtstreeks verbonden met digitale pin 7, 6, 5 en 4 van Arduino. De zoemer is via een NPN BC547 transistor verbonden met pin 12 van Arduino. Een 10k pot wordt ook gebruikt om de helderheid van het LCD-scherm te regelen.
Programmering Toelichting:
In dit Arduino-schild voor aardbevingsdetector hebben we twee codes gemaakt: een voor Arduino om een aardbeving te detecteren en een andere voor Processing IDE om de aardbevingsvibraties over de grafiek op de computer uit te zetten. We zullen een voor een over beide codes leren:
Arduino-code:
Allereerst kalibreren we de versnellingsmeter met betrekking tot het plaatsingsoppervlak, zodat deze geen waarschuwingen toont met betrekking tot de normale omringende trillingen. Bij deze kalibratie nemen we enkele monsters en nemen we er vervolgens een gemiddelde van en slaan we op in een variabele.
voor (int i = 0; i
Telkens wanneer Accelerometer metingen uitvoert, zullen we die monsterwaarden van de metingen aftrekken, zodat het trillingen uit de omgeving kan negeren.
int waarde1 = analogRead (x); // lezen x uit int waarde2 = analogRead (y); // lezen y uit int waarde3 = analogRead (z); // lezen z uit int xValue = xsample-value1; // verandering vinden in x int yValue = ysample-value2; // vinden verandering in y int zValue = zsample-value3; // het vinden van verandering in z / * het weergeven van verandering in x-, y- en z-aswaarden via lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); vertraging (100)
Vervolgens vergelijkt Arduino die gekalibreerde (afgetrokken) waarden met vooraf gedefinieerde limieten. En dienovereenkomstig actie ondernemen. Als de waarden hoger zijn dan de vooraf gedefinieerde waarden, zal het de zoemer laten horen en de trillingsgrafiek op de computer plotten met behulp van Processing.
/ * vergelijking van verandering met vooraf gedefinieerde limieten * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // timer start buz = 1; // zoemer / led-vlag geactiveerd} else if (buz == 1) // zoemer-vlag geactiveerd en waarschuwt voor aardbeving {lcd.setCursor (0,0); lcd.print ("Earthquake Alert"); if (millis ()> = start + buzTime) buz = 0; }
Verwerkingscode:
Hieronder is de verwerkingscode bijgevoegd, u kunt de code downloaden via onderstaande link:
Verwerkingscode aardbevingsdetector
We hebben een grafiek ontworpen met Processing, voor trillingen van aardbevingen, waarin we de grootte van het venster, eenheden, lettergrootte, achtergrond, lezen en weergeven van seriële poorten, open geselecteerde seriële poort enz.
// stel de venstergrootte in: en lettergrootte 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); maat (1200, 700); // Maak een lijst van alle beschikbare seriële poorten println (Serial.list ()); myPort = nieuwe serieel (dit, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); achtergrond (80)
In onderstaande functie hebben we gegevens ontvangen van de seriële poort en de vereiste gegevens extraheren en deze vervolgens in kaart gebracht met de grootte van de grafiek.
// extraheren van alle vereiste waarden van alle drie de assen: 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; String temp3 = inString.substring (l1, l1 + 3); // mapping x-, y- en z-waarde met grafiekdimensies float inByte1 = float (temp1 + (char) 9); inByte1 = kaart (inByte1, -80,80, 0, hoogte-80); float inByte2 = float (temp2 + (char) 9); inByte2 = kaart (inByte2, -80,80, 0, hoogte-80); float inByte3 = float (temp3 + (char) 9); inByte3 = kaart (inByte3, -80,80, 0, hoogte-80); zweven x = kaart (xPos, 0,1120,40, breedte-40);
Hierna hebben we eenheidsruimte, max en min limieten, waarden van x, y en z-as geplot.
// plotten grafiekvenster, eenheid strokeWeight (2); beroerte (175); Lijn (0,0,0,100); textFont (f24); vullen (0,00,255); textAlign (RIGHT); xmargin ("Aardbevinggrafiek door Circuit Digest", 200,100); vullen (100); strokeWeight (100); lijn (1050,80,1200,80);………………
Hierna plotten we de waarden over de grafiek door 3 verschillende kleuren te gebruiken, zoals blauw voor x-aswaarde, groene kleur voor y-as en z wordt weergegeven door rode kleur.
beroerte (0,0,255); if (y1 == 0) y1 = hoogte-inByte1-verschuiving; lijn (x, y1, x + 2, hoogte-inByte1-verschuiving); y1 = hoogte-inByte1-verschuiving; beroerte (0,255,0); if (y2 == 0) y2 = hoogte-inByte2-verschuiving; lijn (x, y2, x + 2, hoogte-inByte2-verschuiving); y2 = hoogte-inByte2-verschuiving; beroerte (255,0,0); if (y2 == 0) y3 = hoogte-inByte3-verschuiving; lijn (x, y3, x + 2, hoogte-inByte3-verschuiving); y3 = hoogte-inByte3-verschuiving;
Lees ook meer over verwerking door onze andere verwerkingsprojecten te doorlopen.
Circuit- en PCB-ontwerp met EasyEDA:
EasyEDA is niet alleen de one-stop-oplossing voor schematische opname, circuitsimulatie en PCB-ontwerp, ze bieden ook een goedkope PCB-prototype en Components Sourcing-service. Ze hebben onlangs hun component sourcing-service gelanceerd, waar ze een grote voorraad elektronische componenten hebben en gebruikers hun vereiste componenten samen met de PCB-bestelling kunnen bestellen.
Terwijl u uw circuits en PCB's ontwerpt, kunt u ook uw circuit- en PCB-ontwerpen openbaar maken, zodat andere gebruikers ze kunnen kopiëren of bewerken en daar hun voordeel mee kunnen doen.We hebben ook onze hele circuit- en PCB-lay-outs openbaar gemaakt voor dit Earthquake Indicator Shield voor Arduino UNO, check de onderstaande link:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Hieronder ziet u de momentopname van de bovenste laag van de PCB-lay-out van EasyEDA, u kunt elke laag (boven, onder, bovenzijde, onderzijde, enz.) Van de PCB bekijken door de laag in het venster 'Lagen' te selecteren.
U kunt ook de fotoweergave van de printplaat bekijken met EasyEDA:
Monsters online berekenen en bestellen:
Nadat u het ontwerp van de PCB hebt voltooid, kunt u op het pictogram van Fabrication-output klikken, waarna u naar de PCB-bestelpagina gaat. Hier kunt u uw print in Gerber Viewer bekijken of Gerber-bestanden van uw print downloaden. Hier kunt u het aantal PCB's selecteren dat u wilt bestellen, hoeveel koperlagen u nodig heeft, de PCB-dikte, het kopergewicht en zelfs de PCB-kleur. Nadat u alle opties heeft geselecteerd, klikt u op "Opslaan in winkelwagen" en rondt u uw bestelling af. Onlangs hebben ze hun PCB-tarieven aanzienlijk verlaagd en nu kunt u 10 stuks 2-laags PCB's met een afmeting van 10 cm x 10 cm bestellen voor slechts $ 2.
Hier zijn de PCB's die ik van EasyEDA heb gekregen:
Hieronder staan de foto's van Final Shield na het solderen van de componenten op PCB: