Lần này chúng ta sẽ giải quyết việc kết nối gia tốc kế ba trục tương tự ADXL335 với Arduino.
Cần thiết
- - Arduino;
- - gia tốc kế ADXL335;
- - một máy tính cá nhân với môi trường phát triển Arduino IDE.
Hướng dẫn
Bước 1
Gia tốc kế được sử dụng để xác định véc tơ gia tốc. Gia tốc kế ADXL335 có ba trục, và nhờ đó, nó có thể xác định vectơ gia tốc trong không gian ba chiều. Do lực hấp dẫn cũng là một vectơ, nên gia tốc kế có thể xác định hướng riêng của nó trong không gian ba chiều so với tâm Trái đất.
Hình minh họa hiển thị hình ảnh từ hộ chiếu (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) cho gia tốc kế ADXL335. Dưới đây là các trục tọa độ của độ nhạy của gia tốc kế liên quan đến vị trí hình học của thân thiết bị trong không gian, cũng như bảng giá trị điện áp từ 3 kênh gia tốc kế tùy thuộc vào hướng của nó trong không gian. Dữ liệu trong bảng được cung cấp cho một cảm biến ở trạng thái nghỉ.
Chúng ta hãy xem xét kỹ hơn những gì gia tốc kế cho chúng ta thấy. Ví dụ: để cảm biến nằm ngang, trên bàn. Khi đó hình chiếu của vectơ gia tốc sẽ bằng 1g dọc theo trục Z, hay Zout = 1g. Hai trục còn lại sẽ có các số không: Xout = 0 và Yout = 0. Khi cảm biến được quay "nằm ngửa", nó sẽ được hướng theo hướng ngược lại so với vectơ trọng lực, tức là. Zout = -1g. Tương tự, các phép đo được thực hiện trên cả ba trục. Rõ ràng là gia tốc kế có thể được định vị như mong muốn trong không gian, vì vậy chúng tôi sẽ lấy các số đọc khác 0 từ cả ba kênh.
Nếu đầu dò bị lắc mạnh dọc theo trục Z thẳng đứng, giá trị Zout sẽ lớn hơn "1g". Gia tốc tối đa có thể đo được là "3g" theo mỗi trục theo hướng bất kỳ (nghĩa là cả với "cộng" và "trừ").
Bước 2
Tôi nghĩ rằng chúng ta đã tìm ra nguyên lý hoạt động của gia tốc kế. Bây giờ chúng ta hãy nhìn vào sơ đồ kết nối.
Chip gia tốc kế tương tự ADXL335 khá nhỏ và được đặt trong một gói BGA, và rất khó để gắn nó lên bảng ở nhà. Do đó, tôi sẽ sử dụng mô-đun GY-61 làm sẵn với gia tốc kế ADXL335. Các mô-đun như vậy trong các cửa hàng trực tuyến của Trung Quốc có giá gần một xu.
Để cấp nguồn cho gia tốc kế, cần cung cấp điện áp +3, 3 V cho chân VCC của mô-đun. Các kênh đo cảm biến được kết nối với các chân tương tự của Arduino, ví dụ, "A0", "A1" và " A2”. Đây là toàn bộ mạch:)
Bước 3
Hãy tải bản phác thảo này vào bộ nhớ Arduino. Chúng tôi sẽ đọc các kết quả đọc từ các đầu vào tương tự trên ba kênh, chuyển đổi chúng thành điện áp và xuất chúng ra cổng nối tiếp.
Arduino có ADC 10 bit và điện áp chân tối đa cho phép là 5 volt. Các điện áp đo được được mã hóa bằng các bit chỉ có thể nhận 2 giá trị - 0 hoặc 1. Điều này có nghĩa là toàn bộ phạm vi đo sẽ được chia cho (1 + 1) cho công suất thứ 10, tức là trên 1024 đoạn bằng nhau.
Để chuyển đổi số đọc thành vôn, bạn cần chia mỗi giá trị đo được ở đầu vào tương tự cho 1024 (phân đoạn), sau đó nhân với 5 (vôn).
Hãy xem điều gì thực sự đến từ gia tốc kế sử dụng trục Z làm ví dụ (cột cuối cùng). Khi cảm biến được đặt theo chiều ngang và nhìn lên, các con số sẽ xuất hiện (2,03 +/- 0,01). Vì vậy, điều này sẽ tương ứng với gia tốc "+ 1g" dọc theo trục Z và một góc 0 độ. Lật cảm biến. Các số đến (1, 69 +/- 0, 01), tương ứng với "-1g" và một góc 180 độ.
Bước 4
Hãy lấy các giá trị từ gia tốc kế ở các góc 90 và 270 độ và nhập chúng vào bảng. Bảng hiển thị các góc quay của gia tốc kế (cột "A") và các giá trị Zout tương ứng tính bằng vôn (cột "B").
Để rõ ràng, biểu đồ của điện áp ở đầu ra Zout so với góc quay được hiển thị. Trường màu xanh lam là phạm vi ở trạng thái nghỉ (ở gia tốc 1g). Ô màu hồng trên biểu đồ là một lề để chúng ta có thể đo gia tốc lên đến + 3g và đến -3g.
Khi quay 90 độ, trục Z có gia tốc bằng không. Những thứ kia. giá trị 1,67 vôn là 0 có điều kiện Zo đối với trục Z. Sau đó, bạn có thể tìm thấy gia tốc như sau:
g = Zout - Zo / precision_z, ở đây Zout là giá trị đo được tính bằng milivôn, Zo là giá trị khi gia tốc bằng không tính bằng milivôn, độ nhạy_z là độ nhạy của cảm biến dọc theo trục Z. Hiệu chỉnh gia tốc kế và tính giá trị độ nhạy dành riêng cho bạn cảm biến sử dụng công thức:
độ nhạy_z = [Z (0 độ) - Z (90 độ)] * 1000. Trong trường hợp này, độ nhạy của gia tốc kế dọc theo trục Z = (2, 03 - 1, 68) * 1000 = 350 mV. Tương tự, độ nhạy sẽ cần được tính toán cho trục X và Y.
Cột "C" của bảng hiển thị gia tốc được tính toán cho năm góc ở độ nhạy 350. Như bạn có thể thấy, chúng thực tế trùng khớp với những gì được thể hiện trong Hình 1.
Bước 5
Nhớ lại phần hình học cơ bản, chúng ta có được công thức tính các góc quay của gia tốc kế:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Giá trị tính bằng radian. Để chuyển chúng thành độ, hãy chia cho Pi và nhân với 180.
Kết quả là, một bản phác thảo hoàn chỉnh tính toán gia tốc và góc quay của gia tốc kế dọc theo tất cả các trục được hiển thị trong hình minh họa. Các nhận xét cung cấp giải thích cho mã chương trình.
Khi xuất ra cổng "Serial.print ()", ký tự "\ t" biểu thị một ký tự tab để các cột đều nhau và các giá trị nằm dưới cái kia. "+" có nghĩa là nối (nối) các chuỗi. Hơn nữa, toán tử "String ()" nói rõ ràng với trình biên dịch rằng giá trị số phải được chuyển đổi thành một chuỗi. Toán tử round () làm tròn góc đến 1 độ gần nhất.
Bước 6
Vì vậy, chúng tôi đã học cách lấy và xử lý dữ liệu từ gia tốc kế tương tự ADXL335 bằng Arduino. Bây giờ chúng ta có thể sử dụng gia tốc kế trong các thiết kế của mình.