- Необходими компоненти:
- Работно обяснение:
- Обяснение на веригата:
- Обяснение на програмирането:
- Дизайн на вериги и печатни платки с помощта на EasyEDA:
- Изчисляване и поръчване на проби онлайн:
Земетресението е непредсказуемо природно бедствие, което причинява щети на живота и имуществото. Това се случва внезапно и не можем да го спрем, но можем да бъдем предупредени от него. В днешно време има много технологии, които могат да бъдат използвани за откриване на малките разтърсвания и удари, така че да можем да вземем предпазни мерки преди някои големи вибрации в земята. Тук използваме акселерометър ADXL335 за откриване на вибрациите преди земетресението. Акселерометърът ADXL335 е силно чувствителен на разклащания и вибрации, заедно с трите оси. Тук изграждаме базиран на Arduino детектор за земетресения с помощта на акселерометър.
Тук изграждаме този детектор за земетресение като Arduino Shield на PCB и също така ще покажем Графика на вибрациите на компютър, използвайки Processing.
Необходими компоненти:
- Arduino UNO
- Акселерометър ADXL335
- 16x2 LCD
- Звънец
- Транзистор BC547
- 1k резистори
- 10K ПОТ
- LED
- Захранване 9v / 12v
- Berg пръчки мъжки / женски
Акселерометър:
ПИН Описание на акселерометъра:
- Vcc 5 волта трябва да се свърже на този щифт.
- X-OUT Този щифт дава аналогов изход в посока x
- Y-OUT Този щифт дава аналогов изход в посока y
- Z-OUT Този щифт дава аналогов изход в посока z
- GND Земя
- ST Този щифт се използва за зададена чувствителност на сензора
Проверете и другите ни проекти с помощта на акселерометър:
- Игра на пинг понг с използване на Arduino
- Робот с ръчен жест, базиран на акселерометър.
- Система за предупреждение за произшествия на базата на Arduino, използваща GPS, GSM и акселерометър
Работно обяснение:
Работата с този детектор на земетресения е проста. Както споменахме по-рано, че сме използвали акселерометър за откриване на земетресения по всяка от трите оси, така че когато се появят вибрации, акселерометърът да усети тези вибрации и да ги преобразува в еквивалентна ADC стойност. След това тези стойности на ADC се четат от Arduino и се показват на 16x2 LCD. Ние също показахме тези стойности на Графика, използвайки Обработка. Научете повече за акселерометъра, като прегледате другите ни проекти за акселерометър тук.
Първо трябва да калибрираме акселерометъра, като вземем пробите от околните вибрации, когато Arduino задейства. След това трябва да извадим тези примерни стойности от действителните показания, за да получим реалните показания. Това калибриране е необходимо, за да не показва предупреждения по отношение на нормалните си околни вибрации. След намиране на реални показания, Arduino сравнява тези стойности с предварително дефинирани максимални и минимални стойности. Ако Arduino установи, че стойностите на промените са повече от или по-малко от предварително дефинираните стойности на която и да е ос в двете посоки (отрицателна и положителна), тогава Arduino задейства зумера и показва състоянието на предупреждение през 16x2 LCD и LED също е включен. Можем да регулираме чувствителността на детектора за земетресение, като променим предварително зададените стойности в кода на Arduino.
Демонстрационно видео и Arduino код са дадени в края на статията.
Обяснение на веригата:
Верига на този печатни платки Arduino Shield детектор за земетресениесъщо е проста. В този проект използвахме Arduino, който отчита аналоговото напрежение на акселерометъра и ги преобразува в цифрови стойности. Arduino също задвижва зумера, LED, 16x2 LCD и изчислява и сравнява стойностите и предприема подходящи действия. Следващата част е акселерометър, който открива вибрациите на земята и генерира аналогови напрежения в 3 оси (X, Y и Z). LCD се използва за показване на промяната в стойностите на оста X, Y и Z, както и за показване на предупредително съобщение над нея. Този LCD е прикрепен към Arduino в 4-битов режим. RS, GND и EN пиновете са директно свързани с 9, GND и 8 пина на Arduino, а останалите 4 пина за данни на LCD, а именно D4, D5, D6 и D7, са директно свързани с цифрови пинове 7, 6, 5 и 4 на Arduino. Зуммерът е свързан към щифт 12 на Arduino чрез транзистор NPN BC547. 10k пот също се използва за управление на яркостта на LCD.
Обяснение на програмирането:
В този детектор за земетресение Arduino Shield сме направили два кода: един за Arduino за откриване на земетресение и друг за обработка на IDE за нанасяне на вибрациите на земетресението върху графиката на компютъра. Ще научим за двата кода един по един:
Код на Arduino:
На първо място, ние калибрираме акселерометъра по отношение на неговата повърхност за поставяне, така че той да не показва предупреждения по отношение на нормалните си околни вибрации. При това калибриране вземаме някои проби и след това вземаме средно от тях и съхраняваме в променлива.
за (int i = 0; i
Сега, когато акселерометърът отчита, ние ще извадим тези примерни стойности от показанията, така че да може да игнорира вибрациите на околната среда.
int стойност1 = analogRead (x); // четене на x out int value2 = analogRead (y); // четене на y стойност int3 = analogRead (z); // четене на z от int xValue = xsample-value1; // намиране на промяна в x int yValue = ysample-value2; // намиране на промяна в y int zValue = zsample-value3; // намиране на промяна в z / *, показваща промяна в стойностите на оста x, y и z върху lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); забавяне (100)
След това Arduino сравнява тези калибрирани (извадени) стойности с предварително определени граници. И предприемете съответните действия. Ако стойностите са по-високи от предварително дефинираните стойности, тогава той ще издава звуков сигнал и ще нанесе графиката на вибрациите на компютър, използвайки Обработка.
/ * сравняване на промяната с предварително дефинирани граници * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = милис (); // старт на таймера buz = 1; // бръмчене / led флаг активиран} else if (buz == 1) // бръмчене флаг активиран след това предупреждаващ земетресение {lcd.setCursor (0,0); lcd.print ("Сигнал за земетресение"); if (millis ()> = start + buzTime) buz = 0; }
Код за обработка:
По-долу е приложен кода за обработка, можете да изтеглите кода от връзката по-долу:
Код за обработка на детектор за земетресение
Проектирахме графика, използвайки Обработка, за вибрации при земетресение, в която дефинирахме размера на прозореца, единици, размер на шрифта, фон, четене и показване на серийни портове, отваряне на избрания сериен порт и т.н.
// задаваме размера на прозореца: и размер на шрифта f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, вярно); f10 = createFont ("Arial", 10, вярно); f12 = createFont ("Arial", 12, вярно); f24 = createFont ("Arial", 24, вярно); размер (1200, 700); // Списък на всички налични серийни портове println (Serial.list ()); myPort = нов сериен (това, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); фон (80)
В функцията по-долу получихме данни от серийния порт и извличаме необходимите данни и след това ги картографирахме с размера на графиката.
// извличане на всички необходими стойности на трите оси: int l1 = inString.indexOf ("x =") + 2; Низ temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; Низ temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; Низ temp3 = inString.substring (l1, l1 + 3); // картографиране на стойности x, y и z с размери на графиката float inByte1 = float (temp1 + (char) 9); inByte1 = карта (inByte1, -80,80, 0, височина-80); float inByte2 = float (temp2 + (char) 9); inByte2 = карта (inByte2, -80,80, 0, височина-80); float inByte3 = float (temp3 + (char) 9); inByte3 = карта (inByte3, -80,80, 0, височина-80); float x = map (xPos, 0,1120,40, width-40);
След това начертахме единица пространство, максимални и минимални граници, стойности на x, y и z-ос.
// изчертаване на графичен прозорец, единица ударWeight (2); инсулт (175); Линия (0,0,0,100); textFont (f24); запълване (0,00,255); textAlign (НАДЯСНО); xmargin ("Графика на EarthQuake By Circuit Digest", 200 100); запълване (100); инсулт Тегло (100); линия (1050,80,1200,80);………………
След това нанасяме стойностите върху графиката, като използваме 3 различни цвята като Синьо за стойността на оста x, зеленият цвят за оста y и z е представен с червен цвят.
инсулт (0,0,255); if (y1 == 0) y1 = height-inByte1-shift; линия (x, y1, x + 2, височина-inByte1-shift); y1 = височина-вByte1-смяна; удар (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; линия (x, y2, x + 2, височина-вByte2-shift); y2 = височина-вByte2-смяна; инсулт (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; линия (x, y3, x + 2, височина-вByte3-смяна); y3 = височина-вByte3-смяна;
Също така научете повече за обработката, като преминете през другите ни проекти за обработка.
Дизайн на вериги и печатни платки с помощта на EasyEDA:
EasyEDA е не само еднократно решение за схематично улавяне, симулация на вериги и дизайн на печатни платки, те също така предлагат евтина услуга за изготвяне на прототипи и компоненти на печатни платки. Наскоро те стартираха своята услуга за снабдяване с компоненти, където имат голям запас от електронни компоненти и потребителите могат да поръчат необходимите им компоненти заедно с поръчката на печатни платки.
Докато проектирате вашите схеми и печатни платки, можете също да направите вашите схеми и платки дизайни публични, така че другите потребители да могат да ги копират или редактират и да се възползват от това, ние също направихме цялата ни схема на платки и печатни платки публична за този индикатор за земетресение Arduino UNO, проверете връзката по-долу:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
По-долу е моментната снимка на горния слой на оформлението на печатни платки от EasyEDA, можете да видите всеки слой (отгоре, отдолу, горната част, долната коприна и т.н.) на печатната платка, като изберете слоя от прозореца „Слоеве“
Можете също да видите снимка на PCB с помощта на EasyEDA:
Изчисляване и поръчване на проби онлайн:
След като завършите дизайна на печатни платки, можете да щракнете върху иконата на изхода за производство , която ще ви отведе на страницата за поръчка на печатни платки. Тук можете да видите вашата PCB в Gerber Viewer или да изтеглите Gerber файлове на вашата PCB. Тук можете да изберете броя на печатни платки, които искате да поръчате, колко медни слоя имате нужда, дебелината на печатната платка, теглото на медта и дори цвета на печатната платка. След като сте избрали всички опции, щракнете върху „Запазване в кошницата“ и завършете поръчката си. Наскоро те намалиха значително своите нива на печатни платки и сега можете да поръчате 10 бр. 2-слойна ПХБ с размер 10см х 10см само за $ 2.
Ето и печатните платки, които получих от EasyEDA:
По-долу са снимките на окончателния щит след запояване на компонентите на печатни платки: