Table of Contents

Seismograf

Autor: Filipescu Dragos-George

Grupa: 333CD

Indrumator: Otelea Ionut-Gabriel

Introducere

Un seismograf este un aparat care măsoară și înregistrează mișcările solului, în scopul analizei mișcărilor seismice provocate de cutremure de pământ, explozii și alte surse. Scopul acestui proiect este implementarea unui astfel de aparat pentru uz personal, al carui functie principala va fi avertizarea persoanelor de cutremure sufcient de puternice, pentru ca acestea sa poata lua masurile corespunzatoare, precum si scrierea masuratorilor pe un mediu de stocare extern (un card SD in acest caz), pentru o posibila analiza asupra lor.

Descriere generală

La pornirea placutei, se vor initializa display-ul LCD si cardul SD, iar accelerometrul va lua un numar de masuratori pentru a determina acceleratiile initiale, fata de care va calcula modificari ale acceleratiilor pe cele 3 axe pentru a determina intensitatea unui cutremur.

Dupa terminarea fazei de “calibrare”, placa va cere continuu date de la accelerometru, si va face diferenta intre ele si masuratorile initiale pentru a determina intensitatea unui cutremur. Daca intensitatea cutremurului este considerata suficient de mare, placa va activa un buzzer pentru a alerta persoanele din jur. De asemenea, placa va afisa, pe un display LCD, un grafic prin care sa se poata vizualiza activitatea seismica masurata, si va scrie periodic masuratorile pe un card SD.

Determinarea intensitatii activitaii seismice se face conform acestui tabel de pe Wikipedia:

https://en.wikipedia.org/wiki/Peak_ground_acceleration#Correlation_with_the_Mercalli_scale.

Hardware Design

Piese folosite:

Schema hardware

Prima versiune functionala (test LCD)

Versiunea finala (seismograma pe dsiplay LCD)

Software Design

Codul pentru placuta a fost dezvoltat in Arduino IDE, folosind bibliotecile Adafruit_GFX.h, Adafruit_ILI9341.h, Wire.h, SD.h si SPI.h.

Pentru o precizie mai buna, am folosit algoritmul Kahan Summation pentru a face media primelor SAMPLE_SIZE valori masurate de accelerometru, astfel incat masuratorile ulterioare sa aiba un punct de referinta cat mai precis.

Pe langa procesul de calibrare, in setup se initializeaza si timer-ul 1, care va emite o intrerupere software la fiecare secunda, iar la FILE_SAVE_INTERVAL secunde, se vor scrie date in cardul SD.

LED-ul se va aprinde pentru a semnala scrierea datelor pe card, pentru ca acesta sa nu fie scos din slot, ceea ce ar risca coruperea cardului. LED-ul se va stinge cand datele au fost scrise si fisierul inchis.

In vederea scrierii datelor in cardul SD, masuratorile sunt pastrate in 4 buffere de 20 de valori fiecare, care vor stoca valorile acceleratiilor pe cele 3 axe, precum si magnitudinea vectorului V = X + Y + Z, unde X, Y si Z sunt vectorii ce reprezinta acceleratiile pe cele 3 axe.

Concluzii

Per total, a fost un proiect interesant, insa precizia redusa a accelerometrului folosit lasa de dorit in ce priveste estimarea intensitatii unui cutremur real. Daca ar fi sa refac proiectul, as folosi un accelerometru pe 32 de biti, ceea ce ar oferi destula precizie pentru a lucra cu scala Mercalli folosita in cod. De asemenea, as incerca sa implementez functiile de afisaj si scriere in card “de mana”, fara bibliotecile mentionate anterior, pentru a reduce consumul de memorie. Astfel as putea stoca mai multe valori in buffere, ceea ce ar insemna mai multe valori salvate pe card.

Download

seismograf.zip

Bibliografie/Resurse

draw.io, site-ul utilizat pentru schema bloc si schema hardware

SD.h, biblioteca pentru cardul SD

Adafruit_ILI9341.h, biblioteca pentru dsiplay-ul LCD

Adafruit_GFX.h, dependinta pentru Adafruit_ILI9341.h

SPI.h, dependinta pentru Adafruit_GFX.h si SD.h

Wire.h, biblioteca folosita pentru comunicarea cu accelerometrul

Export to PDF