- Các thành phần bắt buộc:
- Giải thích làm việc:
- Giải thích mạch:
- Giải thích lập trình:
- Thiết kế mạch và PCB sử dụng EasyEDA:
- Tính toán và đặt hàng mẫu trực tuyến:
Động đất là một thiên tai khó lường, gây thiệt hại về người và của. Nó xảy ra đột ngột và chúng ta không thể ngăn chặn nó nhưng chúng ta có thể được cảnh báo về nó. Trong thời đại ngày nay, có rất nhiều công nghệ có thể được sử dụng để phát hiện những rung lắc và chấn động nhỏ, để chúng ta có thể đề phòng trước một số rung động lớn của trái đất. Ở đây chúng tôi đang sử dụng Gia tốc kế ADXL335 để phát hiện các rung động trước trận động đất. Gia tốc kế ADXL335 có độ nhạy cao với rung và rung cùng với cả ba trục. Ở đây chúng tôi đang xây dựng một Máy dò động đất dựa trên Arduino sử dụng Gia tốc kế.
Chúng tôi đang xây dựng máy phát hiện Động đất này như một Lá chắn Arduino trên PCB và cũng sẽ hiển thị Biểu đồ Rung động trên máy tính bằng Xử lý.
Các thành phần bắt buộc:
- Arduino UNO
- Gia tốc kế ADXL335
- LCD 16x2
- Buzzer
- Bóng bán dẫn BC547
- 1k điện trở
- LẨU 10K
- Đèn LED
- Nguồn điện 9v / 12v
- Berg gậy nam / nữ
Gia tốc kế:
Mô tả Pin của máy đo gia tốc:
- Nguồn cung cấp Vcc 5 volt nên kết nối tại chân này.
- X-OUT Chân này cung cấp đầu ra Analog theo hướng x
- Y-OUT Chân này cung cấp đầu ra Analog theo hướng y
- Z-OUT Chân này cung cấp đầu ra Analog theo hướng z
- GND Ground
- ST Chân này được sử dụng để đặt độ nhạy của cảm biến
Cũng kiểm tra các dự án khác của chúng tôi bằng Accelerometer:
- Trò chơi Ping Pong sử dụng Arduino
- Robot điều khiển bằng cử chỉ bằng tay dựa trên gia tốc kế.
- Hệ thống cảnh báo tai nạn xe dựa trên Arduino sử dụng GPS, GSM và Accelerometer
Giải thích làm việc:
Hoạt động của máy dò động đất này rất đơn giản. Như chúng tôi đã đề cập trước đó rằng chúng tôi đã sử dụng Gia tốc kế để phát hiện rung động động đất dọc theo bất kỳ trục nào trong ba trục để bất cứ khi nào rung động xảy ra, gia tốc kế sẽ cảm nhận được rung động đó và chuyển đổi chúng thành giá trị ADC tương đương. Sau đó, các giá trị ADC này được đọc bởi Arduino và hiển thị trên màn hình LCD 16x2. Chúng tôi cũng đã hiển thị các giá trị này trên Đồ thị sử dụng Xử lý. Tìm hiểu thêm về Gia tốc kế bằng cách xem qua các dự án Gia tốc kế khác của chúng tôi tại đây.
Trước tiên, chúng ta cần hiệu chỉnh Gia tốc kế bằng cách lấy các mẫu dao động xung quanh bất cứ khi nào Arduino Tăng sức mạnh. Sau đó, chúng ta cần trừ các giá trị mẫu đó khỏi số đọc thực tế để có được số đọc thực. Việc hiệu chuẩn này là cần thiết để nó không hiển thị cảnh báo đối với các rung động bình thường xung quanh. Sau khi tìm các giá trị đọc thực, Arduino so sánh các giá trị này với các giá trị tối đa và tối thiểu được xác định trước. Nếu Arduino tìm thấy bất kỳ giá trị thay đổi nào lớn hơn hoặc ít hơn thì các giá trị được xác định trước của bất kỳ trục nào theo cả hai hướng (âm và dương) thì Arduino sẽ kích hoạt còi và hiển thị trạng thái cảnh báo trên màn hình LCD 16x2 và đèn LED cũng được bật. Chúng ta có thể điều chỉnh độ nhạy của máy dò Động đất bằng cách thay đổi các giá trị Định trước trong mã Arduino.
Video trình diễn và Mã Arduino được đưa ra ở cuối bài viết.
Giải thích mạch:
Mạch của máy dò động đất này Arduino Shield PCBcũng đơn giản. Trong dự án này, chúng tôi đã sử dụng Arduino để đọc điện áp tương tự của gia tốc kế và chuyển đổi chúng thành các giá trị kỹ thuật số. Arduino cũng điều khiển bộ rung, đèn LED, màn hình LCD 16x2 và tính toán, so sánh các giá trị và thực hiện hành động thích hợp. Phần tiếp theo là Gia tốc kế phát hiện rung động của trái đất và tạo ra điện áp tương tự theo 3 trục (X, Y và Z). LCD được sử dụng để hiển thị sự thay đổi của trục X, Y và Z trong các giá trị và cũng hiển thị thông báo cảnh báo trên đó. Màn hình LCD này được gắn vào Arduino ở chế độ 4 bit. Các chân RS, GND và EN được kết nối trực tiếp với các chân 9, GND và 8 của Arduino và phần còn lại của 4 chân dữ liệu của LCD là D4, D5, D6 và D7 được kết nối trực tiếp với chân số 7, 6, 5 và 4 của Arduino. Bộ rung được kết nối với chân 12 của Arduino thông qua một bóng bán dẫn NPN BC547. Một nồi 10k cũng được sử dụng để kiểm soát độ sáng của màn hình LCD.
Giải thích lập trình:
Trong Lá chắn Arduino của Máy dò động đất này, chúng tôi đã tạo hai mã: một mã dành cho Arduino để phát hiện động đất và mã khác dành cho Xử lý IDE để lập biểu đồ rung động động đất qua biểu đồ trên Máy tính. Chúng ta sẽ lần lượt tìm hiểu về cả hai mã:
Mã Arduino:
Trước hết, chúng tôi hiệu chỉnh gia tốc kế đối với bề mặt đặt của nó, để nó sẽ không hiển thị cảnh báo đối với những rung động bình thường xung quanh. Trong hiệu chuẩn này, chúng tôi lấy một số mẫu và sau đó lấy giá trị trung bình của chúng và lưu trữ trong một biến.
for (int i = 0; i
Giờ đây, bất cứ khi nào Gia tốc kế nhận các số đọc, chúng tôi sẽ trừ các giá trị mẫu đó khỏi số đọc để nó có thể bỏ qua các rung động xung quanh.
int value1 = analogRead (x); // đọc x ra int value2 = analogRead (y); // đọc y ra int value3 = analogRead (z); // đọc z out int xValue = xsample-value1; // tìm thay đổi trong x int yValue = ysample-value2; // tìm thay đổi trong y int zValue = zsample-value3; // tìm thay đổi trong z / * thay đổi liên quan đến các giá trị trục x, y và z trên lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); trì hoãn (100)
Sau đó, Arduino so sánh các giá trị đã được hiệu chuẩn (đã trừ) đó với các giới hạn được xác định trước. Và thực hiện hành động phù hợp. Nếu các giá trị cao hơn giá trị được xác định trước thì nó sẽ phát ra tiếng bíp và vẽ biểu đồ rung trên máy tính bằng Xử lý.
/ * so sánh thay đổi với các giới hạn được xác định trước * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = mili (); // bộ định thời bắt đầu buz = 1; // cờ buzzer / led được kích hoạt} else if (buz == 1) // cờ buzzer được kích hoạt rồi cảnh báo động đất {lcd.setCursor (0,0); lcd.print ("Cảnh báo Động đất"); if (millis ()> = start + buzTime) buz = 0; }
Mã xử lý:
Dưới đây là Mã xử lý đính kèm, bạn có thể tải mã từ liên kết dưới đây:
Mã xử lý máy dò động đất
Chúng tôi đã thiết kế một biểu đồ sử dụng Xử lý, cho các rung động động đất, trong đó chúng tôi xác định kích thước của cửa sổ, đơn vị, cỡ chữ, nền, đọc và hiển thị các cổng nối tiếp, mở cổng nối tiếp đã chọn, v.v.
// thiết lập kích thước cửa sổ: 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); kích thước (1200, 700); // Liệt kê tất cả các cổng nối tiếp có sẵn println (Serial.list ()); myPort = new Serial (this, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); nền (80)
Trong hàm dưới đây, chúng tôi đã nhận dữ liệu từ cổng nối tiếp và trích xuất dữ liệu cần thiết và sau đó ánh xạ nó với kích thước của biểu đồ.
// trích xuất tất cả các giá trị bắt buộc của cả ba trục: 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); // ánh xạ giá trị x, y và z với kích thước đồ thị 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);
Sau đó, chúng tôi đã vẽ biểu đồ không gian đơn vị, giới hạn tối đa và tối thiểu, giá trị của x, y và trục z.
// cửa sổ đồ thị ploting, đơn vị strokeWeight (2); đột quỵ (175); Dòng (0,0,0,100); textFont (f24); điền (0,00,255); textAlign (RIGHT); xmargin ("EarthQuake Graph By Circuit Digest", 200,100); điền (100); strokeWeight (100); dòng (1050,80,1200,80);………………
Sau đó, chúng tôi vẽ các giá trị trên biểu đồ bằng cách sử dụng 3 màu khác nhau như Xanh lam cho giá trị trục x, màu xanh lục cho trục y và z được biểu thị bằng màu đỏ.
đột quỵ (0,0,255); if (y1 == 0) y1 = height-inByte1-shift; dòng (x, y1, x + 2, height-inByte1-shift); y1 = height-inByte1-shift; nét (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; dòng (x, y2, x + 2, height-inByte2-shift); y2 = height-inByte2-shift; đột quỵ (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; dòng (x, y3, x + 2, height-inByte3-shift); y3 = height-inByte3-shift;
Cũng tìm hiểu thêm về quá trình xử lý bằng cách xem qua các dự án Xử lý khác của chúng tôi.
Thiết kế mạch và PCB sử dụng EasyEDA:
EasyEDA không chỉ là giải pháp duy nhất để chụp sơ đồ, mô phỏng mạch và thiết kế PCB, họ còn cung cấp dịch vụ Tìm nguồn cung ứng linh kiện và nguyên mẫu PCB với chi phí thấp. Gần đây, họ đã tung ra dịch vụ tìm nguồn cung ứng linh kiện, nơi họ có một lượng lớn linh kiện điện tử và người dùng có thể đặt hàng các thành phần cần thiết của họ cùng với đơn đặt hàng PCB.
Trong khi thiết kế mạch và PCB của bạn, bạn cũng có thể đặt thiết kế mạch và PCB của mình ở chế độ công khai để người dùng khác có thể sao chép hoặc chỉnh sửa chúng và có thể hưởng lợi từ đó, chúng tôi cũng đã công khai toàn bộ bố cục Mạch và PCB cho Tấm chắn chỉ báo động đất này cho Arduino UNO, hãy kiểm tra liên kết dưới đây:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Dưới đây là Ảnh chụp nhanh của lớp trên cùng của bố cục PCB từ EasyEDA, bạn có thể xem bất kỳ Lớp nào (Trên cùng, Dưới cùng, Topsilk, bottom, v.v.) của PCB bằng cách chọn lớp tạo thành Cửa sổ 'Lớp'.
Bạn cũng có thể xem Chế độ xem ảnh của PCB bằng EasyEDA:
Tính toán và đặt hàng mẫu trực tuyến:
Sau khi hoàn thành việc thiết kế PCB, bạn có thể nhấp vào biểu tượng của đầu ra Chế tạo , sẽ đưa bạn đến trang đặt hàng PCB. Tại đây, bạn có thể xem PCB của mình trong Gerber Viewer hoặc tải xuống các tệp Gerber trên PCB của bạn. Tại đây bạn có thể chọn số lượng PCB mà bạn muốn đặt hàng, bao nhiêu lớp đồng bạn cần, độ dày PCB, trọng lượng đồng và thậm chí cả màu sắc của PCB. Sau khi bạn đã chọn tất cả các tùy chọn, hãy nhấp vào “Lưu vào giỏ hàng” và hoàn tất đơn đặt hàng của bạn. Gần đây, họ đã giảm đáng kể tỷ lệ PCB và bây giờ bạn có thể đặt hàng 10 chiếc PCB 2 lớp với kích thước 10cm x 10cm chỉ với 2 đô la.
Đây là PCB tôi nhận được từ EasyEDA:
Dưới đây là những hình ảnh của Shield cuối cùng sau khi hàn các thành phần trên PCB: