- Wymagane składniki:
- Objaśnienie robocze:
- Objaśnienie obwodu:
- Objaśnienie programowania:
- Projektowanie obwodów i PCB za pomocą EasyEDA:
- Obliczanie i zamawianie próbek online:
Trzęsienie ziemi to nieprzewidywalna klęska żywiołowa, która powoduje szkody dla życia i mienia. Dzieje się to nagle i nie możemy tego powstrzymać, ale możemy zostać przed tym ostrzeżeni. W dzisiejszych czasach istnieje wiele technologii, które można wykorzystać do wykrywania niewielkich wstrząsów i uderzeń, abyśmy mogli podjąć środki ostrożności przed wystąpieniem niektórych poważnych wibracji na Ziemi. Tutaj używamy akcelerometru ADXL335 do wykrywania drgań sprzed trzęsienia ziemi. Akcelerometr ADXL335 jest bardzo czuły na wstrząsy i wibracje wraz z wszystkimi trzema osiami. Tutaj budujemy detektor trzęsień ziemi oparty na Arduino za pomocą akcelerometru.
Budujemy tutaj ten detektor trzęsień ziemi jako tarczę Arduino na PCB, a także pokażemy wykres wibracji na komputerze przy użyciu przetwarzania.
Wymagane składniki:
- Arduino UNO
- Akcelerometr ADXL335
- Wyświetlacz LCD 16x2
- Brzęczyk
- Tranzystor BC547
- Rezystory 1k
- 10K POT
- DOPROWADZIŁO
- Zasilacz 9v / 12v
- Berg kije męskie / żeńskie
Akcelerometr:
Pin Opis akcelerometru:
- Zasilanie Vcc 5 V powinno być podłączone do tego pinu.
- X-OUT Ten pin daje wyjście analogowe w kierunku x
- Y-OUT Ten styk daje wyjście analogowe w kierunku y
- Z-OUT Ten styk daje wyjście analogowe w kierunku z
- GND Ground
- ST Ten kołek służy do ustawiania czułości czujnika
Sprawdź również nasze inne projekty z akcelerometrem:
- Gra w ping ponga wykorzystująca Arduino
- Robot sterowany gestami dłoni oparty na akcelerometrze.
- Oparty na Arduino system ostrzegania o wypadkach samochodowych wykorzystujący GPS, GSM i akcelerometr
Objaśnienie robocze:
Działanie tego wykrywacza trzęsień ziemi jest proste. Jak wspomnieliśmy wcześniej, użyliśmy akcelerometru do wykrywania drgań trzęsień ziemi wzdłuż dowolnej z trzech osi, dzięki czemu akcelerometr wykrywa te drgania i konwertuje je na równoważną wartość ADC za każdym razem, gdy występują drgania. Następnie te wartości ADC są odczytywane przez Arduino i wyświetlane na wyświetlaczu LCD 16x2. Pokazaliśmy również te wartości na wykresie przy użyciu przetwarzania. Dowiedz się więcej o akcelerometrze, przeglądając nasze inne projekty dotyczące akcelerometru tutaj.
Najpierw musimy skalibrować akcelerometr, pobierając próbki otaczających wibracji za każdym razem, gdy Arduino włącza się. Następnie musimy odjąć te przykładowe wartości od rzeczywistych odczytów, aby uzyskać rzeczywiste odczyty. Kalibracja ta jest potrzebna, aby nie wyświetlała alertów w odniesieniu do normalnych otaczających wibracji. Po znalezieniu rzeczywistych odczytów Arduino porównuje te wartości z predefiniowanymi wartościami maksymalnymi i minimalnymi. Jeśli Arduino stwierdzi, że jakiekolwiek zmiany są większe lub mniejsze niż predefiniowane wartości dowolnej osi w obu kierunkach (ujemne i dodatnie), wówczas Arduino wyzwoli brzęczyk i pokaże stan alarmu na wyświetlaczu LCD 16x2, a także włączona zostanie dioda LED. Możemy dostosować czułość detektora trzęsień ziemi, zmieniając Predefiniowane wartości w kodzie Arduino.
Film demonstracyjny i kod Arduino są podane na końcu artykułu.
Objaśnienie obwodu:
Obwód tego czujnika trzęsienia ziemi Arduino Shield PCBjest również prosta. W tym projekcie wykorzystaliśmy Arduino, które odczytuje napięcie analogowe akcelerometru i zamienia je na wartości cyfrowe. Arduino steruje także brzęczykiem, diodą LED, wyświetlaczem LCD 16x2 oraz oblicza i porównuje wartości oraz podejmuje odpowiednie działania. Kolejna część to akcelerometr, który wykrywa drgania ziemi i generuje napięcia analogowe w 3 osiach (X, Y i Z). Wyświetlacz LCD służy do pokazywania zmian wartości osi X, Y i Z, a także do wyświetlania komunikatu ostrzegawczego. Ten wyświetlacz LCD jest podłączony do Arduino w trybie 4-bitowym. Piny RS, GND i EN są bezpośrednio połączone z pinami 9, GND i 8 Arduino, a pozostałe 4 piny danych LCD, a mianowicie D4, D5, D6 i D7, są bezpośrednio podłączone do cyfrowych pinów 7, 6, 5 i 4 Arduino. Brzęczyk jest podłączony do pinu 12 Arduino poprzez tranzystor NPN BC547. Potencjometr 10k jest również używany do kontrolowania jasności wyświetlacza LCD.
Objaśnienie programowania:
W tej osłonie Arduino wykrywacza trzęsień ziemi stworzyliśmy dwa kody: jeden dla Arduino do wykrywania trzęsienia ziemi, a drugi do przetwarzania IDE w celu wykreślenia drgań trzęsienia ziemi na wykresie na komputerze. O obu kodach dowiemy się jeden po drugim:
Kod Arduino:
Przede wszystkim kalibrujemy akcelerometr w odniesieniu do jego powierzchni, na której jest umieszczony, aby nie wyświetlał alertów w odniesieniu do normalnych otaczających drgań. W tej kalibracji pobieramy próbki, a następnie pobieramy z nich średnią i zapisujemy w zmiennej.
dla (int i = 0; i
Teraz za każdym razem, gdy akcelerometr dokonuje odczytów, odejmujemy te wartości próbek od odczytów, aby mógł ignorować wibracje otoczenia.
int wartość1 = analogRead (x); // odczyt x out int value2 = analogRead (y); // odczytywanie y int value3 = analogRead (z); // odczyt z out int xValue = xsample-value1; // znajdowanie zmiany w x int yValue = ysample-value2; // znajdowanie zmiany w y int zValue = zsample-value3; // znalezienie zmiany w z / * wskazującej zmianę wartości osi x, y i z na lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); opóźnienie (100)
Następnie Arduino porównuje te skalibrowane (odjęte) wartości z predefiniowanymi limitami. I podejmij odpowiednie działania. Jeśli wartości są wyższe niż wstępnie zdefiniowane wartości, wyemituje sygnał dźwiękowy i wykreśli wykres drgań na komputerze przy użyciu przetwarzania.
/ * porównanie zmiany z predefiniowanymi limitami * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // start licznika buz = 1; // flaga brzęczyka / diody aktywowana} else if (buz == 1) // flaga brzęczyka aktywowana i ostrzega o trzęsieniu ziemi {lcd.setCursor (0,0); lcd.print ("Ostrzeżenie o trzęsieniu ziemi"); if (millis ()> = start + buzTime) buz = 0; }
Kod przetwarzania:
Poniżej znajduje się załączony kod przetwarzania, możesz pobrać kod z poniższego linku:
Kod przetwarzania wykrywacza trzęsień ziemi
Zaprojektowaliśmy wykres wykorzystujący Przetwarzanie dla drgań trzęsień ziemi, w którym zdefiniowaliśmy rozmiar okna, jednostki, rozmiar czcionki, tło, odczyt i wyświetlanie portów szeregowych, otwarcie wybranego portu szeregowego itp.
// ustaw rozmiar okna: i rozmiar czcionki 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); rozmiar (1200, 700); // Wyświetla wszystkie dostępne porty szeregowe println (Serial.list ()); myPort = new Serial (to „COM43”, 9600); println (myPort); myPort.bufferUntil ('\ n'); tło (80)
W poniższej funkcji otrzymaliśmy dane z portu szeregowego i wyodrębniliśmy wymagane dane, a następnie zmapowaliśmy je z rozmiarem wykresu.
// wyodrębnienie wszystkich wymaganych wartości ze wszystkich trzech osi: 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); // mapowanie wartości x, y i z z wymiarami wykresu float inByte1 = float (temp1 + (char) 9); inByte1 = mapa (inByte1, -80,80, 0, wysokość-80); float inByte2 = float (temp2 + (char) 9); inByte2 = mapa (inByte2, -80,80, 0, wysokość-80); float inByte3 = float (temp3 + (char) 9); inByte3 = mapa (inByte3, -80,80, 0, wysokość-80); float x = map (xPos, 0,1120,40, width-40);
Następnie wykreśliliśmy przestrzeń jednostkową, granice maksymalne i minimalne, wartości osi x, y i z.
// okno wykresu kreślenia, jednostka strokeWeight (2); udar (175); Linia (0,0,0,100); textFont (f24); wypełnij (0,00,255); textAlign (RIGHT); xmargin („Wykres trzęsienia ziemi według analizy obwodów”, 200,100); wypełnić (100); strokeWeight (100); linia (1050,80,1200,80);………………
Następnie wykreślamy wartości na wykresie, używając 3 różnych kolorów, takich jak niebieski dla wartości na osi x, zielony kolor na osi y iz jest reprezentowany przez kolor czerwony.
udar (0,0,255); if (y1 == 0) y1 = przesunięcie wysokości w bajcie1; line (x, y1, x + 2, height-inByte1-shift); y1 = przesunięcie wysokości w bajcie1; udar (0,255,0); if (y2 == 0) y2 = przesunięcie wysokości w bajcie2; line (x, y2, x + 2, height-inByte2-shift); y2 = przesunięcie wysokości w bajcie2; udar (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; line (x, y3, x + 2, height-inByte3-shift); y3 = przesunięcie wysokości w bajcie3;
Dowiedz się również więcej o przetwarzaniu, przechodząc przez nasze inne projekty przetwarzania.
Projektowanie obwodów i PCB za pomocą EasyEDA:
EasyEDA to nie tylko kompleksowe rozwiązanie do przechwytywania schematów, symulacji obwodów i projektowania PCB, ale oferuje również niedrogie usługi prototypowania PCB i pozyskiwania komponentów. Niedawno uruchomili usługę pozyskiwania komponentów, w ramach której mają duży zapas komponentów elektronicznych, a użytkownicy mogą zamówić wymagane komponenty wraz z zamówieniem PCB.
Podczas projektowania obwodów i PCB, można również zrobić swój obwód i PCB projektuje So publiczną, że inni użytkownicy mogą kopiować lub edytować je i może przyjmować korzyści Stamtąd mamy również nasz cały układ i układów PCB publicznej dla tej Earthquake Indicator Shield Arduino UNO, sprawdź poniższy link:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Poniżej znajduje się migawka górnej warstwy układu PCB z EasyEDA, możesz wyświetlić dowolną warstwę (górną, dolną, topową, dolną itp.) PCB, wybierając warstwę z okna „Warstwy”.
Możesz również zobaczyć widok zdjęcia PCB za pomocą EasyEDA:
Obliczanie i zamawianie próbek online:
Po zakończeniu projektowania PCB, możesz kliknąć ikonę wyjścia z produkcji , która przeniesie Cię na stronę zamówienia PCB. Tutaj możesz obejrzeć swoją płytkę drukowaną w przeglądarce Gerber Viewer lub pobrać pliki Gerber swojej płytki PCB. Tutaj możesz wybrać liczbę PCB, które chcesz zamówić, ile warstw miedzi potrzebujesz, grubość PCB, wagę miedzi, a nawet kolor PCB. Po wybraniu wszystkich opcji kliknij „Zapisz w koszyku” i sfinalizuj zamówienie. Ostatnio znacznie spadły ceny płytek drukowanych i teraz można zamówić 10 sztuk 2-warstwowych płytek drukowanych o wymiarach 10 cm x 10 cm za jedyne 2 USD.
Oto PCB, które dostałem od EasyEDA:
Poniżej zdjęcia finalnej osłony po wlutowaniu elementów na PCB: