色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用加速度計構建一個基于Arduino的地震探測器

科技觀察員 ? 來源:circuitdigest ? 作者:薩達姆 ? 2023-01-25 15:57 ? 次閱讀

地震是一種不可預測的自然災害,會對生命和財產造成損害。它突然發生,我們無法阻止它,但我們可以從中得到警報。在當今時代,有許多技術可以用來檢測微小的震動和敲擊,以便我們可以在地球發生一些重大振動之前采取預防措施。在這里,我們使用加速度計ADXL335來檢測地震前的振動。加速度計ADXL335對所有三個軸的振動和振動都非常敏感。在這里,我們正在 使用加速度計構建一個基于Arduino的地震探測器

我們在這里構建這個 地震探測器作為PCB上的Arduino屏蔽, 還將使用處理在計算機上顯示振動圖。

Arduino地震探測器盾牌所需的組件

加速度計:

加速度計的引腳說明:

  1. Vcc 5 伏電源應在此引腳連接。
  2. X-OUT 此引腳在 x 方向上提供模擬輸出
  3. Y-OUT 此引腳在 y 方向上提供模擬輸出
  4. Z-OUT 該引腳在 z 方向上提供模擬輸出
  5. 接地
  6. ST 此引腳用于設置傳感器的靈敏度

加速度計加速度計-ADXL335

工作說明:

這個Arduino地震探測器的工作非常簡單。正如我們之前提到的,我們已經使用加速度計來檢測沿三個軸中的任何一個的地震振動,以便每當振動發生時,加速度計都會感知振動并將其轉換為等效的ADC值。然后,這些ADC值由Arduino讀取,并通過16x2 LCD顯示。我們還使用處理在圖形上顯示了這些值。通過在此處瀏覽我們的其他加速度計項目,了解有關加速度計的更多信息

首先,我們需要通過在 Arduino 通電時采集周圍振動的樣本來 校準加速度計 。然后我們需要從實際讀數中減去這些樣本值以獲得真實讀數。需要進行此校準,以便它不會顯示有關其正常周圍振動的警報。找到真實讀數后,Arduino將這些值與預定義的最大值和最小值進行比較。如果Arduino發現任何變化值大于或小于兩個方向(負和正)上任何軸的預定義值,則Arduino會觸發蜂鳴器并通過16x2 LCD顯示警報狀態,并且LED也打開。我們可以通過更改Arduino代碼中的預定義值來調整地震探測器的靈敏度。

阿杜伊諾地震指示器工作框圖

使用加速度計的地震指示器 arduino 盾牌

電路說明:

這個地震探測器Arduino Shield PCB的電路也很簡單.在這個項目中,我們使用了Arduino來讀取加速度計的模擬電壓并將其轉換為數字值。Arduino還驅動蜂鳴器,LED,16x2 LCD,并計算和比較值并采取適當的措施。下一部分是加速度計,它檢測大地振動并在 3 個軸(X、Y 和 Z)上產生模擬電壓。LCD用于顯示X,Y和Z軸的值變化,并在其上顯示警報消息。此LCD以4位模式連接到Arduino。RS、GND 和 EN 引腳直接連接到 Arduino 的 9、GND 和 8 個引腳,LCD 的其余 4 個數據引腳(即 D4、D5、D6 和 D7)直接連接到 Arduino 的數字引腳 7、6、5 和 4。蜂鳴器通過 NPN BC547 晶體管連接到 Arduino 的引腳 12。10k電位器也用于控制LCD的亮度。

使用加速度計的地震指示器 arduino 屏蔽電路圖

編程說明:

在這個Arduino地震探測器項目中,我們制作了 兩個代碼 :一個用于Arduino檢測地震,另一個用于處理IDE,用于在計算機上繪制圖形上的地震振動。我們將一一了解這兩個代碼:

Arduino 代碼

首先,我們根據加速度的放置表面校準加速度計,使其不會顯示有關其正常周圍振動的警報。在此校準中,我們采集一些樣本,然后取平均值并存儲在變量中。

for(int i=0;i
  {
    xsample+=analogRead(x);
    ysample+=analogRead(y);
    zsample+=analogRead(z);
  }

  xsample/=samples;   // taking avg for x
  ysample/=samples;   // taking avg for y
  zsample/=samples;   // taking avg for z
  
  delay(3000);
  lcd.clear();
  lcd.print("Calibrated");
  delay(1000);
  lcd.clear();
  lcd.print("Device Ready");
  delay(1000);
  lcd.clear();
  lcd.print(" X     Y     Z   ");

現在,每當加速度計獲取讀數時,我們都會從讀數中減去這些樣本值,以便它可以忽略周圍的振動。

int value1=analogRead(x);   // reading x out
    int value2=analogRead(y);   //reading y out
    int value3=analogRead(z);   //reading z out

    int xValue=xsample-value1;    // finding change in x
    int yValue=ysample-value2;    // finding change in y
    int zValue=zsample-value3;    // finding change in z

  /*displying change in x,y and z axis values over lcd*/
    lcd.setCursor(0,1);
    lcd.print(zValue);
    lcd.setCursor(6,1);
    lcd.print(yValue);
    lcd.setCursor(12,1);
    lcd.print(zValue);
    delay(100)

然后Arduino將這些校準(減去)值與預定義的限制進行比較。并采取相應的行動。如果值高于預定義的值,則它將發出蜂鳴器嗶嗶聲并使用處理在計算機上繪制振動圖。

/* comparing change with predefined limits*/
    if(xValue < minVal || xValue > maxVal  || yValue < minVal || yValue > maxVal  || zValue < minVal || zValue > maxVal)
    { 
      if(buz == 0)
      start=millis();   // timer start
       buz=1;       // buzzer / led flag activated
    } 

   else if(buz == 1)        // buzzer flag activated then alerting earthquake
   {
      lcd.setCursor(0,0);
      lcd.print("Earthquake Alert   ");
      if(millis()>= start+buzTime)    
      buz=0;
   }

處理代碼:

我們使用處理設計了一個用于地震振動的圖表,其中我們定義了窗口的大小、單位、字體大小、背景、讀取和顯示串行端口、打開選定的串行端口等。

// set the window size:  and Font size
  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);
  size(1200, 700);        
 
 // List all the available serial ports
 println(Serial.list());
 myPort = new Serial(this, "COM43", 9600);
 println(myPort);
 myPort.bufferUntil('\\n');
 background(80)

在下面的函數中,我們從串行端口接收數據并提取所需的數據,然后將其映射到圖形的大小。

// extracting all required values of all three axis:
 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 and z value with graph dimensions
 float inByte1 = float(temp1+(char)9); 
 inByte1 = map(inByte1, -80,80, 0, height-80);
 float inByte2 = float(temp2+(char)9); 
 inByte2 = map(inByte2,-80,80, 0, height-80);
 float inByte3 = float(temp3+(char)9); 
 inByte3 = map(inByte3,-80,80, 0, height-80);
 float x=map(xPos,0,1120,40,width-40);

在此之后,我們繪制了單位空間、最大和最小限制、x、y 和 z 軸的值。

//ploting graph window, unit 
  strokeWeight(2);
  stroke(175);                        
  Line(0,0,0,100);
  textFont(f24);       
  fill(0,00,255);
  textAlign(RIGHT);
  xmargin("EarthQuake Graph By Circuit Digest",200,100); 
  
   fill(100); 
   strokeWeight(100);
   line(1050,80,1200,80);
   .... ....
   ..........

在此之后,我們使用 3 種不同的顏色在圖形上繪制值,例如 x 軸值的藍色、y 軸的綠色和紅色表示的 z。

stroke(0,0,255);         
   if(y1 == 0)
   y1=height-inByte1-shift;
   line(x, y1, x+2, height-inByte1-shift) ;
   y1=height-inByte1-shift;
   
   stroke(0,255,0);            
   if(y2 == 0)
   y2=height-inByte2-shift;
   line(x, y2, x+2, height-inByte2-shift) ;
   y2=height-inByte2-shift;
   
   stroke(255,0,0);             
   if(y2 == 0)
   y3=height-inByte3-shift;
   line(x, y3, x+2, height-inByte3-shift) ;
   y3=height-inByte3-shift;

#include // lcd Header

LiquidCrystal lcd(9,8,7,6,5,4); // pins for LCD Connection

#define buzzer 12 // buzzer pin

#define led 13 //led pin

#define x A0 // x_out pin of Accelerometer

#define y A1 // y_out pin of Accelerometer

#define z A2 // z_out pin of Accelerometer

/ variables /

int xsample=0;

int ysample=0;

int zsample=0;

long start;

int buz=0;

/ Macros /

#define samples 50

#define maxVal 20 // max change limit

#define minVal -20 // min change limit

#define buzTime 5000 // buzzer on time

void setup()

{

lcd.begin(16,2); //initializing lcd

Serial.begin(9600); // initializing serial

delay(1000);

lcd.print("EarthQuake ");

lcd.setCursor(0,1);

lcd.print("Detector ");

delay(2000);

lcd.clear();

lcd.print("Circuit Digest ");

lcd.setCursor(0,1);

lcd.print("Saddam Khan ");

delay(2000);

lcd.clear();

lcd.print("Calibrating.....");

lcd.setCursor(0,1);

lcd.print("Please wait...");

pinMode(buzzer, OUTPUT);

pinMode(led, OUTPUT);

buz=0;

digitalWrite(buzzer, buz);

digitalWrite(led, buz);

for(int i=0;i

{

xsample+=analogRead(x);

ysample+=analogRead(y);

zsample+=analogRead(z);

}

xsample/=samples; // taking avg for x

ysample/=samples; // taking avg for y

zsample/=samples; // taking avg for z

delay(3000);

lcd.clear();

lcd.print("Calibrated");

delay(1000);

lcd.clear();

lcd.print("Device Ready");

delay(1000);

lcd.clear();

lcd.print(" X Y Z ");

}

void loop()

{

int value1=analogRead(x);   // reading x out

int value2=analogRead(y);   //reading y out

int value3=analogRead(z);   //reading z out


int xValue=xsample-value1;    // finding change in x

int yValue=ysample-value2;    // finding change in y

int zValue=zsample-value3;    // finding change in z

/ displying change in x,y and z axis values over lcd /

lcd.setCursor(0,1);

lcd.print(zValue);

lcd.setCursor(6,1);

lcd.print(yValue);

lcd.setCursor(12,1);

lcd.print(zValue);

delay(100);

/* comparing change with predefined limits*/

if(xValue < minVal || xValue > maxVal  || yValue < minVal || yValue > maxVal  || zValue < minVal || zValue > maxVal)

{ 

  if(buz == 0)

  start=millis();   // timer start

   buz=1;       // buzzer / led flag activated

}

else if(buz == 1) // buzzer flag activated then alerting earthquake

{

lcd.setCursor(0,0);

  lcd.print("Earthquake Alert   ");

  if(millis()>= start+buzTime)    

  buz=0;

}

else

{

  lcd.clear();

  lcd.print(" X     Y     Z   ");

}


digitalWrite(buzzer, buz);    // buzzer on and off command

digitalWrite(led, buz);   // led on and off command

/ sending values to processing for plot over the graph /

Serial.print("x=");

Serial.println(xValue);

Serial.print("y=");

Serial.println(yValue);

Serial.print("z=");

Serial.println(zValue);  

Serial.println(" $");

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 探測器
    +關注

    關注

    14

    文章

    2633

    瀏覽量

    73007
  • 加速度計
    +關注

    關注

    6

    文章

    701

    瀏覽量

    45892
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    186969
收藏 人收藏

    評論

    相關推薦

    MEMS加速度計性能成熟

    結果。這表明,MEMS加速度計非常適合新型狀態監測產品的重新構建輸出通道,特別是可實現基于半導體元件的全新概念,這些概念可在單個+5 V電源上運行,例如無線智能傳感。從表面上看,第
    發表于 10-29 17:11

    2476-100加速度計

    ,密封,低噪聲的SDI 1522型表面安裝加速度計,在氣候室內分別進行了測試,編程,校準和驗證以確保在熱揮發條件下的最大精度。 2470和2476包含初始校準報告詳細測試性能數據。板載穩壓和內部
    發表于 05-27 19:18

    2460-010加速度計

    的噪聲和長期穩定性是絕對要求。2460包含3英尺長的集成電纜,并且在操作上與2466相同,它具有連接,可輕松定制電纜的長度和位置。每個SDI三軸加速度計均具有三
    發表于 05-28 14:41

    2422H-400加速度計

    在零到中頻應用中經歷過大或快速的溫度過高溫度變化或長時間保持極端高溫或低溫。SDI 2422H型包含三正交安裝的高級加速度計LCC,使它們對-55至+ 125°C的溫度變化和梯度更加不敏感,并大大
    發表于 05-28 14:44

    2227-050加速度計模塊

    獲得專利的電容式硅感測元件和密封LCC封裝的高精度,定制CMOS集成電路。差分輸出MEMS加速度計的電壓在PCB上轉換為與施加的電流成比例的電流加速。可以為2227模塊提供熱校準參
    發表于 05-28 14:56

    1410L-100加速度計

    `1410型是款集成式加速度計,可用于零至中頻儀器應用測量加速。每個微型密封包裝結合了微機械電容感應元件和包括檢測放大器和sigma-的定制集成電路Delta A / D轉換。對溫
    發表于 05-28 15:01

    1527J-010加速度計

    `1527型是款小型,輕巧的集成MEMS加速度計,用于用于要求高重復性,低重復性的戰術級慣性應用噪聲,以及在-55至+ 125°C的環境中的長期穩定性。 1527型加速度計是由美國SDI完全
    發表于 05-28 15:04

    1521L-200加速度計

    `1521型是款低成本通用集成MEMS加速度計,適用于零至中頻需要極低噪聲和可靠長期穩定性的工業應用。每個微型密封密封封裝結合了MEMS電容式感應元件和包含感應的定制集成電路放大器和差分輸出級
    發表于 05-28 15:08

    設計具有成本效益的加速度計

    等低成本 MEMS 加速度計稍貴(約 40 美元)。也許對于某些應用我們可以避免使用 ADXL355 并節省更多的錢;知道是否可行的唯方法是比較兩傳感。為了比較這兩
    發表于 08-23 06:20

    文帶你了解加速度計

    加速度計到底是什么?本文將對加速度計進行簡單介紹。
    發表于 07-07 10:52 ?1.4w次閱讀

    選擇加速度計的技巧

    加速度計,是測量運載體線加速度的儀表。加速度計由檢測質量(也稱敏感質量)、支承、電位、彈簧、阻尼和殼體組成。
    發表于 09-17 11:46 ?10次下載
    選擇<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>加速度計</b>的技巧

    MEMS加速度計的概念,MEMS加速度計的原理

    MEMS加速度計的概念 加速度計種慣性傳感,能夠測量物體的加速力。加速力就是當物體在
    發表于 06-01 11:28 ?4483次閱讀

    加速度計的安裝方法分享

    在本文中,了解安裝加速度計的不同方法、它們對加速度計頻率響應的影響以及安裝MEMS加速度計的解決方案。
    的頭像 發表于 04-16 16:35 ?5405次閱讀
    <b class='flag-5'>加速度計</b>的安裝方法分享

    使用Arduino加速度計構建簡單且便宜的計步器

    在本教程中,我們將使用 Arduino加速度計構建簡單且便宜的 DIY 計步器。該計步器將計算腳步的數量并將其顯示在16x2 LCD
    的頭像 發表于 08-19 15:15 ?4820次閱讀
    使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>加速度計</b><b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單且便宜的計步器

    mems加速度計的量程是指什么

    Mems加速度計(Micro Electro Mechanical Systems Accelerometer)是種微型化的加速度傳感,可以測量物體在三
    的頭像 發表于 12-15 10:21 ?1722次閱讀
    主站蜘蛛池模板: 国内精品视频在线播放一区| 亚洲破处女| 国产跪地吃黄金喝圣水合集| 一二三四免费中文在线1| 三级黄色在线看| 暖暖日本免费播放| 看 视频一一级毛片| 国色天香社区视频免费高清3| 大香网伊人久久综合观看| www色视频在线观看| H狠狠躁死你H| 超碰久久国产vs| 国自产精品手机在线视频| 精品一成人岛国片在线观看| 久久爽狠狠添AV激情五月 | 无码天堂亚洲国产AV久久| 台湾18成人影院| 在线观看免费av网站| jizzzz亚洲丰满xxxx| 国产精品女上位好爽在线短片| 久久亚洲精品成人| 人妻精品久久无码专区| 亚洲久久少妇中文字幕| 中文字幕永久在线| 97成人在线视频| 宝贝好紧好爽再搔一点试視頻| z0000性欧美| yellow日本高清在线| 嘟嘟嘟影院免费观看视频| 超碰免费视频公开97| 国产精品人成在线播放新网站 | 在线免费观看国产视频| 亚洲人视频在线观看| 最近日本免费观看MV免费| adc高清在线观看| WWW国产亚洲精品久久久日本| 办公室中文BD| 菲律宾毛片| 国产亚洲综合视频| 皮皮在线精品亚洲| 2020精品极品国产色在线|