- Nepieciešamās sastāvdaļas:
- Darba skaidrojums:
- Ķēdes skaidrojums:
- Programmēšanas skaidrojums:
- Ķēdes un PCB dizains, izmantojot EasyEDA:
- Paraugu aprēķināšana un pasūtīšana tiešsaistē:
Zemestrīce ir neprognozējama dabas katastrofa, kas nodara kaitējumu dzīvībai un īpašumam. Tas notiek pēkšņi, un mēs to nevaram apturēt, bet mūs no tā var brīdināt. Mūsdienās ir daudz tehnoloģiju, kuras var izmantot nelielu satricinājumu un triecienu noteikšanai, lai mēs varētu veikt piesardzības pasākumus pirms dažām lielām vibrācijām uz zemes. Šeit mēs izmantojam akselerometru ADXL335, lai noteiktu vibrācijas pirms zemestrīces. Akselerometrs ADXL335 ir ļoti jutīgs pret vibrācijām un vibrācijām kopā ar visām trim asīm. Šeit mēs veidojam Arduino bāzes zemestrīču detektoru, izmantojot akselerometru.
Mēs šeit būvējam šo zemestrīces detektoru kā Arduino Shield uz PCB, kā arī parādīsim vibrāciju diagrammu datorā, izmantojot Processing.
Nepieciešamās sastāvdaļas:
- Arduino UNO
- Akselerometrs ADXL335
- 16x2 LCD
- Buzzer
- BC547 tranzistors
- 1k rezistori
- 10K POT
- LED
- Barošanas avots 9v / 12v
- Bergs pielīmē tēviņu / mātīti
Akselerometrs:
Akselerometra apraksts:
- Pie šīs tapas ir jāpievienojas Vcc 5 voltu barošanai.
- X-OUT Šī tapa nodrošina analogo izvadi x virzienā
- Y-OUT Šī tapa dod analogo izvadi y virzienā
- Z-OUT Šī tapa nodrošina analogo izvadi z virzienā
- GND zeme
- ST Šī tapa izmantota sensora jutības iestatīšanai
Pārbaudiet arī citus mūsu projektus, izmantojot akselerometru:
- Spēle Ping Pong, izmantojot Arduino
- Akselerometra vadīts robots ar rokas žestu.
- Arduino bāzes transportlīdzekļu trauksmes trauksmes sistēma, izmantojot GPS, GSM un akselerometru
Darba skaidrojums:
Šī zemestrīču detektora darbība ir vienkārša. Kā mēs jau iepriekš minējām, mēs esam izmantojuši akselerometru, lai noteiktu zemestrīču vibrācijas pa jebkuru no trim asīm, lai ikreiz, kad rodas vibrācijas, akselerometrs nojaustu, ka vibrācijas, un pārveido tās par līdzvērtīgu ADC vērtību. Tad šīs ADC vērtības nolasa Arduino un parāda 16x2 LCD ekrānā. Šīs vērtības mēs esam parādījuši arī diagrammā, izmantojot apstrādi. Uzziniet vairāk par akselerometru, veicot citus mūsu akselerometra projektus šeit.
Vispirms mums jākalibrē akselerometrs, ņemot apkārtējo vibrāciju paraugus ikreiz, kad Arduino Powers palielinās. Tad mums jāatskaita šīs parauga vērtības no faktiskajiem rādījumiem, lai iegūtu reālos rādījumus. Šī kalibrēšana ir nepieciešama, lai tajā netiktu rādīti brīdinājumi attiecībā uz tās parastajām apkārtējām vibrācijām. Pēc reālu rādījumu atrašanas Arduino salīdzina šīs vērtības ar iepriekš definētām max un min vērtībām. Ja Arduino konstatē, ka izmaiņas ir lielākas vai mazākas par iepriekš noteiktām jebkuras ass vērtībām abos virzienos (negatīvos un pozitīvos), tad Arduino iedarbina skaņas signālu un parāda trauksmes stāvokli 16x2 LCD ekrānā, kā arī ieslēdzas arī LED. Mēs varam pielāgot zemestrīces detektora jutīgumu, mainot iepriekš noteiktās vērtības Arduino kodā.
Demonstrācijas video un Arduino kods ir doti raksta beigās.
Ķēdes skaidrojums:
Šī zemestrīces detektora shēma Arduino Shield PCBir arī vienkārša. Šajā projektā mēs izmantojām Arduino, kas nolasa akselerometra analogo spriegumu un pārvērš tos digitālajās vērtībās. Arduino arī darbina skaņas signālu, LED, 16x2 LCD un aprēķina, salīdzina vērtības un veic atbilstošas darbības. Nākamā daļa ir akselerometrs, kas nosaka zemes vibrāciju un ģenerē analogo spriegumu 3 asīs (X, Y un Z). LCD tiek izmantots, lai parādītu X, Y un Z ass vērtību izmaiņas, kā arī brīdinājuma ziņojumu. Šis LCD ir pievienots Arduino 4 bitu režīmā. RS, GND un EN tapas ir tieši savienotas ar Arduino 9, GND un 8 tapām, un pārējās 4 LCD datu tapas, proti, D4, D5, D6 un D7, ir tieši savienotas ar Arduino digitālo tapu 7, 6, 5 un 4. Skaņas signāls ir savienots ar Arduino 12. kontaktu caur NPN BC547 tranzistoru. 10k katls tiek izmantots arī LCD spilgtuma kontrolei.
Programmēšanas skaidrojums:
Šajā zemestrīču detektorā Arduino Shield mēs esam izveidojuši divus kodus: vienu Arduino, lai noteiktu zemestrīci, un otru, lai apstrādātu IDE, lai iezemētu zemestrīces vibrācijas virs datora grafika. Mēs uzzināsim par abiem kodiem pa vienam:
Arduino kods:
Pirmkārt, mēs kalibrējam akselerometru attiecībā pret tā novietošanas virsmu, lai tas nerādītu brīdinājumus attiecībā uz tā parastajām apkārtējām vibrācijām. Veicot šo kalibrēšanu, mēs ņemam dažus paraugus un pēc tam ņemam tos vidēji un uzglabājam mainīgajā.
par (int i = 0; i
Ikreiz, kad akselerometrs ņem rādījumus, mēs no rādījumiem atņemsim šīs parauga vērtības, lai tas varētu ignorēt apkārtējās vides vibrācijas.
int vērtība1 = analogRead (x); // nolasot x ārējo vērtību2 = analogRead (y); // nolasot y vērtību int3; analogRead (z); // z nolasīšana int xValue = xsample-value1; // izmaiņu atrašana x int yValue = ysample-value2; // izmaiņu atrašana y int zValue = zsample-value3; // izmaiņu atrašana z / *, norādot izmaiņas x, y un z ass vērtībās virs lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); kavēšanās (100)
Tad Arduino salīdzina šīs kalibrētās (atņemtās) vērtības ar iepriekš definētām robežām. Un attiecīgi rīkojieties. Ja vērtības ir augstākas par iepriekš definētām vērtībām, tas iepīkstas skaņas signālu un vibrācijas diagrammu uzzīmēs datorā, izmantojot Processing.
/ * salīdzinot izmaiņas ar iepriekš noteiktām robežām * / ja (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = milis (); // taimera sākums buz = 1; // aktivizēts zummeris / led karodziņš} cits if (buz == 1) // aktivizēts zummera karodziņš, pēc tam brīdinot zemestrīci {lcd.setCursor (0,0); lcd.print ("Brīdinājums par zemestrīci"); if (milis ()> = sākums + buzTime) buz = 0; }
Apstrādes kods:
Zemāk ir pievienots apstrādes kods, kuru varat lejupielādēt no saites:
Zemes zemestrīču detektoru apstrādes kods
Mēs esam izstrādājuši diagrammu, izmantojot Processing, zemestrīču vibrācijām, kurā mēs definējām loga lielumu, vienības, fonta lielumu, fonu, lasot un parādot sērijas portus, atvērtu izvēlēto sērijas portu utt.
// iestatiet loga izmēru: un Fonta lielums f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, taisnība); f10 = createFont ("Arial", 10, taisnība); f12 = createFont ("Arial", 12, taisnība); f24 = createFont ("Arial", 24, taisnība); izmērs (1200, 700); // Uzskaitiet visus pieejamos sērijas portus println (Serial.list ()); myPort = jauna sērija (šī, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); fons (80)
Zemāk esošajā funkcijā mēs esam saņēmuši datus no sērijas porta un izņēmuši nepieciešamos datus un pēc tam tos kartējuši ar diagrammas lielumu.
// visu trīs asiņu visu nepieciešamo vērtību iegūšana: int l1 = inString.indexOf ("x =") + 2; Virknes temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Virknes temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Virknes temp3 = inString.substring (l1, l1 + 3); // x, y un z vērtību kartēšana ar grafika izmēriem float inByte1 = float (temp1 + (char) 9); inByte1 = karte (inByte1, -80,80, 0, augstums-80); float inByte2 = pludiņš (temp2 + (char) 9); inByte2 = karte (inByte2, -80,80, 0, augstums-80); float inByte3 = pludiņš (temp3 + (char) 9); inByte3 = karte (inByte3, -80,80, 0, augstums-80); pludiņš x = karte (xPos, 0,1120,40, platums-40);
Pēc tam mēs esam uzzīmējuši telpas vienību, max un min robežas, x, y un z ass vērtības.
// grafika grafika logs, vienības gājiensWeight (2); insults (175); Līnija (0,0,0,100); textFont (f24); pildījums (0,00,255); textAlign (RIGHT); xmargin ("EarthQuake Graph By Circuit Digest", 200,100); aizpildīt (100); insultsSvars (100); līnija (1050,80,1200,80);………………
Pēc tam mēs attēlojam vērtības virs grafika, izmantojot 3 dažādas krāsas kā zilu x ass vērtībai, zaļu krāsu y asij un z attēlo sarkana krāsa.
gājiens (0,0255); ja (y1 == 0) y1 = augstums-inBait1-nobīde; līnija (x, y1, x + 2, augstums-inByte1-nobīde); y1 = augstums-inByte1-nobīde; gājiens (0,255,0); if (y2 == 0) y2 = augstums-inByte2-nobīde; līnija (x, y2, x + 2, augstums-inByte2-shift); y2 = augstums-inByte2-nobīde; insults (255,0,0); ja (y2 == 0) y3 = augstums-inByte3-nobīde; līnija (x, y3, x + 2, augstums-inByte3-shift); y3 = nobīde augstums -Byte3;
Uzziniet arī vairāk par apstrādi, veicot citus mūsu apstrādes projektus.
Ķēdes un PCB dizains, izmantojot EasyEDA:
EasyEDA ir ne tikai vienas pieturas risinājums shematiskai uztveršanai, ķēdes simulācijai un PCB projektēšanai, bet arī zemu izmaksu PCB prototipa un komponentu piegādes pakalpojums. Viņi nesen uzsāka savu komponentu iegādes pakalpojumu, kur viņiem ir liels elektronisko komponentu krājums, un lietotāji var pasūtīt nepieciešamos komponentus kopā ar PCB pasūtījumu.
Veidojot ķēdes un PCB, jūs varat arī padarīt savu shēmu un PCB dizainu publisku, lai citi lietotāji varētu tos kopēt vai rediģēt un gūt labumu no tā. Mēs esam arī darījuši zināmus visus mūsu shēmas un PCB izkārtojumus šim zemestrīces indikatoru vairogam Arduino UNO, pārbaudiet zemāk esošo saiti:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Zemāk ir redzams EasyEDA PCB izkārtojuma augšējā slāņa momentuzņēmums. Jūs varat apskatīt jebkuru PCB slāni (augšējo, apakšējo, augšējo pienu, pudeļu pienu utt.), Atlasot slāni no loga “Slāņi”.
Izmantojot EasyEDA, varat arī redzēt PCB fotoattēlu skatu:
Paraugu aprēķināšana un pasūtīšana tiešsaistē:
Pabeidzot PCB dizainu, varat noklikšķināt uz Fabrication output ikonas, kas jūs aizvedīs uz PCB pasūtījuma lapu. Šeit jūs varat apskatīt savu PCB Gerber Viewer vai lejupielādēt Gerber failus no sava PCB. Šeit jūs varat izvēlēties PCB skaitu, kuru vēlaties pasūtīt, cik vara slāņu jums vajag, PCB biezumu, vara svaru un pat PCB krāsu. Kad esat atlasījis visas opcijas, noklikšķiniet uz “Saglabāt grozā” un pabeidziet pasūtījumu. Nesen viņi ir ievērojami pazeminājuši savu PCB līmeni, un tagad jūs varat pasūtīt 10 gab. 2-slāņu PCB ar izmēru 10 cm x 10 cm tikai par 2 ASV dolāriem.
Šeit ir PCB, kurus es saņēmu no EasyEDA:
Zemāk ir redzami pēdējā Shield attēli pēc komponentu lodēšanas uz PCB: