Mục lục:

Arduino Magnetometer: 5 bước (có hình ảnh)
Arduino Magnetometer: 5 bước (có hình ảnh)

Video: Arduino Magnetometer: 5 bước (có hình ảnh)

Video: Arduino Magnetometer: 5 bước (có hình ảnh)
Video: [Bí kíp toàn tập] Máy in 3D chân chữ Ramps 1.6 - Arduino mega sử dụng Step 57 DM542 cực khỏe 2024, Tháng Chín
Anonim
Arduino Magnetometer
Arduino Magnetometer

Chúng ta đang xây dựng cái gì?

Con người không thể phát hiện ra từ trường, nhưng chúng ta luôn sử dụng các thiết bị dựa vào nam châm. Ví dụ, động cơ, la bàn, cảm biến quay và tuabin gió, tất cả đều cần nam châm để hoạt động. Hướng dẫn này mô tả cách xây dựng một từ kế dựa trên Arduino cảm nhận từ trường bằng cách sử dụng ba cảm biến hiệu ứng Hall. Vectơ từ trường tại một vị trí được hiển thị trên một màn hình nhỏ bằng phép chiếu đẳng áp.

Arduino là gì?

Arduino là một vi điều khiển mã nguồn mở nhỏ thân thiện với người dùng. Nó có các chân đầu vào và đầu ra kỹ thuật số. Nó cũng có các chân đầu vào tương tự, rất hữu ích để đọc đầu vào từ các cảm biến. Có sẵn các mô hình Arduino khác nhau. Hướng dẫn này mô tả cách sử dụng Arduino Uno hoặc Arduino MKR1010. Tuy nhiên, các mô hình khác cũng có thể được sử dụng.

Trước khi bạn bắt đầu hướng dẫn này, hãy tải xuống môi trường phát triển Arduino cũng như bất kỳ thư viện nào cần thiết cho mô hình cụ thể của bạn. Môi trường phát triển có sẵn tại https://www.arduino.cc/en/main/software và hướng dẫn cài đặt có tại

Từ trường là gì?

Nam châm vĩnh cửu tác dụng lực lên nam châm vĩnh cửu khác. Dây mang dòng điện tác dụng lên dây mang dòng điện khác. Nam châm vĩnh cửu và dây dẫn dòng điện cũng tác dụng lực lên nhau. Lực trên một đơn vị dòng điện thử nghiệm này là một từ trường.

Nếu chúng ta đo thể tích của một vật thể, chúng ta nhận được một số vô hướng duy nhất. Tuy nhiên, từ tính được mô tả bằng trường vectơ, một đại lượng phức tạp hơn. Đầu tiên, nó thay đổi theo vị trí trong toàn bộ không gian. Ví dụ, từ trường cách nam châm vĩnh cửu một cm có khả năng lớn hơn từ trường cách đó mười cm.

Tiếp theo, từ trường tại mỗi điểm trong không gian được biểu diễn bằng một vectơ. Độ lớn của vectơ thể hiện cường độ của từ trường. Hướng vuông góc với cả hướng của lực và hướng của dòng điện thử nghiệm.

Chúng ta có thể hình dung từ trường tại một vị trí như một mũi tên. Chúng ta có thể hình dung từ trường xuyên suốt không gian bằng một dãy mũi tên ở các vị trí khác nhau, có thể có kích thước khác nhau và hướng theo các hướng khác nhau. Hình ảnh đẹp có sẵn tại https://www.falstad.com/vector3dm/. Từ kế mà chúng tôi đang chế tạo hiển thị từ trường tại vị trí của các cảm biến như một mũi tên trên màn hình.

Cảm biến hiệu ứng Hall là gì và nó hoạt động như thế nào?

Cảm biến hiệu ứng Hall là một thiết bị nhỏ, rẻ tiền dùng để đo cường độ của từ trường dọc theo một hướng cụ thể. Nó được làm từ một miếng bán dẫn pha tạp các điện tích dư thừa. Đầu ra của một số cảm biến hiệu ứng Hall là điện áp tương tự. Các cảm biến hiệu ứng Hall khác có bộ so sánh tích hợp và tạo ra đầu ra kỹ thuật số. Các cảm biến hiệu ứng Hall khác được tích hợp vào các thiết bị lớn hơn để đo tốc độ dòng chảy, tốc độ quay hoặc các đại lượng khác.

Vật lý đằng sau hiệu ứng Hall được tóm tắt bởi phương trình lực Lorentz. Phương trình này mô tả lực tác dụng lên một điện tích chuyển động do điện trường và từ trường bên ngoài.

Hình ảnh
Hình ảnh

Hình dưới đây minh họa hiệu ứng Hall. Giả sử chúng ta muốn đo cường độ của từ trường theo hướng của mũi tên màu xanh lam. Như thể hiện trong phần bên trái của hình, chúng ta cho dòng điện qua một miếng bán dẫn vuông góc với hướng của trường cần đo. Dòng điện là dòng điện tích, do đó, điện tích trong chất bán dẫn chuyển động với một vận tốc nào đó. Điện tích này sẽ cảm thấy một lực do trường bên ngoài, như thể hiện ở phần giữa của hình. Các điện tích sẽ di chuyển do lực và tích tụ trên các cạnh của chất bán dẫn. Điện tích tích tụ cho đến khi lực do các điện tích tích lũy cân bằng với lực do từ trường bên ngoài. Chúng ta có thể đo điện áp trên chất bán dẫn, như thể hiện trong phần bên phải của hình. Điện áp đo được tỷ lệ thuận với cường độ của từ trường, và nó có hướng vuông góc với dòng điện và hướng của từ trường.

Hình ảnh
Hình ảnh

Phép chiếu đẳng áp là gì?

Tại mỗi điểm trong không gian, từ trường được mô tả bởi một vectơ ba chiều. Tuy nhiên, màn hình hiển thị của chúng tôi là hai chiều. Chúng ta có thể chiếu vectơ ba chiều thành một mặt phẳng hai chiều để có thể vẽ nó trên màn hình. Có nhiều cách để thực hiện điều này như phép chiếu đẳng áp, phép chiếu trực quan hoặc phép chiếu xiên.

Trong phép chiếu đẳng áp, các trục x, y và z cách nhau 120 độ và chúng có vẻ như được thu nhỏ bằng nhau. Thông tin bổ sung về phép chiếu đẳng áp, cũng như các công thức cần thiết, có thể được tìm thấy trên trang Wikipedia về chủ đề này.

Bước 1: Thu thập nguồn cung cấp

Arduino và cáp

Arduino là bộ não của từ kế. Các hướng dẫn này mô tả cách sử dụng Arduino Uno hoặc Arduino MKR1010. Trong cả hai trường hợp, cần có cáp để kết nối nó với máy tính.

Tùy chọn 1: Arduino Uno và cáp USB AB

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Tùy chọn 2: Arduino MKR1010 và cáp microUSB

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

Màn hình TFT

TFT là viết tắt của Thin Film Transistor. Màn hình 1,44 này chứa 128 x 128 pixel. Nó nhỏ, sáng và nhiều màu sắc. Nó được gắn vào bảng đột phá. Tuy nhiên, các chân tiêu đề tách rời nhau, vì vậy bạn phải hàn chúng vào. (Hàn và mỏ hàn là cần thiết.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Hình ảnh
    Hình ảnh
  • Cảm biến hiệu ứng sảnh tương tự

Ba cảm biến hiệu ứng Hall là bắt buộc. Liên kết bên dưới dành cho bộ phận Allegro số A1324LUA-T. Đối với cảm biến này, chân 1 là điện áp cung cấp, chân 2 là nối đất và chân 3 là đầu ra. Các cảm biến Hall khác cũng nên hoạt động, nhưng hãy đảm bảo rằng chúng là tương tự, không phải kỹ thuật số. Nếu bạn sử dụng một cảm biến khác, hãy kiểm tra sơ đồ chân và điều chỉnh hệ thống dây điện nếu cần. (Tôi thực sự đã sử dụng một cảm biến khác của cùng một công ty cho mục đích thử nghiệm. Tuy nhiên, cảm biến tôi sử dụng đã lỗi thời và cảm biến này là sự thay thế của nó.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Breadboard nhỏ và dây

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Nam châm vĩnh viễn để thử nghiệm

Nam châm tủ lạnh sẽ hoạt động tốt.

Bước 2: Đấu dây

Đấu dây
Đấu dây

Hàn các tiêu đề trên màn hình.

Hình ảnh
Hình ảnh

Đặt các cảm biến ở một đầu của breadboard, đặt màn hình và Arduino ở đầu đối diện. Dòng điện trong các dây dẫn trong Arduino và màn hình tạo ra từ trường mà chúng ta không muốn các cảm biến đọc được. Ngoài ra, chúng tôi có thể muốn đặt các cảm biến gần nam châm vĩnh cửu, điều này có thể tác động xấu đến dòng điện trong dây dẫn của màn hình và cảm biến. Vì những lý do này, chúng tôi muốn các cảm biến ở xa màn hình và Arduino. Cũng vì những lý do này, nên để từ trường này tránh xa từ trường rất mạnh.

Đặt các cảm biến vuông góc với nhau nhưng càng gần nhau càng tốt. Nhẹ nhàng uốn cong các cảm biến để chúng vuông góc. Mỗi chân của mỗi cảm biến phải nằm trong một hàng riêng biệt của bảng mạch để có thể được kết nối riêng.

Hình ảnh
Hình ảnh

Hệ thống dây hơi khác nhau giữa MKR1010 và Uno vì hai lý do. Đầu tiên, Arduino và màn hình giao tiếp bằng SPI. Các mô hình Arduino khác nhau có các chân chuyên dụng khác nhau cho các dòng SPI nhất định. Thứ hai, đầu vào tương tự của Uno có thể chấp nhận tối đa 5 V trong khi đầu vào tương tự của MKR1010 chỉ có thể chấp nhận tối đa 3,3 V. Điện áp cung cấp được khuyến nghị cho cảm biến hiệu ứng Hall là 5 V. Các đầu ra cảm biến được kết nối với đầu vào tương tự Arduino, và chúng có thể lớn bằng điện áp nguồn cung cấp. Đối với Uno, sử dụng nguồn cung cấp 5 V được khuyến nghị cho các cảm biến. Đối với MKR1010, sử dụng 3,3 V để đầu vào tương tự của Arduino không bao giờ thấy điện áp lớn hơn mức mà nó có thể xử lý.

Làm theo các sơ đồ và hướng dẫn bên dưới cho Arduino bạn đang sử dụng.

Đấu dây với Arduino Uno

Hình ảnh
Hình ảnh

Màn hình có 11 chân. Kết nối chúng với Arduino Uno như sau. (NC có nghĩa là không được kết nối.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • Đ / C → 8
  • CCS → NC
  • Lite → NC

Kết nối Vin của các cảm biến với 5V của Arduino. Nối đất của cảm biến với đất của Arduino. Kết nối đầu ra của cảm biến với đầu vào tương tự A1, A2 và A3 của Arduino.

Hình ảnh
Hình ảnh

Đấu dây với Arduino MKR1010

Hình ảnh
Hình ảnh

Màn hình có 11 chân. Kết nối chúng với Arduino như sau. (NC có nghĩa là không được kết nối.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • Đ / C → 3
  • CCS → NC
  • Lite → NC

Kết nối Vin của các cảm biến với Vcc của Arduino. Chân này ở mức 3.3V, không phải 5V. Nối đất của cảm biến với đất của Arduino. Kết nối đầu ra của cảm biến với đầu vào tương tự A1, A2 và A3 của Arduino.

Hình ảnh
Hình ảnh

Bước 3: Kiểm tra màn hình

Hãy làm cho màn hình TFT hoạt động. May mắn thay, Adafruit có một số thư viện thân thiện với người dùng và một hướng dẫn tuyệt vời để đi cùng với chúng. Các hướng dẫn này theo sát hướng dẫn, Mở môi trường phát triển Arduino. Đi tới Công cụ → Quản lý thư viện. Cài đặt các thư viện Adafruit_GFX, Adafruit_ZeroDMA và Adafruit_ST7735. Khởi động lại môi trường phát triển Android.

Ví dụ về đồ họa đẹp nhất được bao gồm trong các thư viện. Mở nó ra. Tệp → Ví dụ → Thư viện Adafruit ST7735 và ST7789 → đồ họa đẹp nhất. Để chọn dòng chú thích hiển thị 1,44 và bỏ chú thích dòng 98.

Phiên bản gốc:

94 // Sử dụng bộ khởi tạo này nếu sử dụng màn hình TFT 1,8 :

95 tft.initR (INITR_BLACKTAB); // Chip Init ST7735S, tab đen 96 97 // HOẶC sử dụng trình khởi tạo này (bỏ ghi chú) nếu sử dụng 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB); // chip Init ST7735R, tab xanh lục

Phiên bản đúng cho màn hình 1.44 :

94 // Sử dụng bộ khởi tạo này nếu sử dụng màn hình TFT 1,8 :

95 //tft.initR(INIT_BLACKTAB); // Init chip ST7735S, thẻ màu đen 96 97 // HOẶC sử dụng bộ khởi tạo này (bỏ ghi chú) nếu sử dụng 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init chip SST35R, tab màu xanh lục

Màn hình giao tiếp bằng cách sử dụng SPI và các Arduinos mô hình khác nhau sử dụng các chân chuyên dụng khác nhau cho một số đường giao tiếp. Ví dụ về đồ họa tốt nhất được thiết lập để hoạt động với các chân Uno. Nếu bạn đang sử dụng MKR1010, hãy thêm các dòng sau vào giữa dòng 80 và 81.

Các hiệu chỉnh cho MKR1010:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); 81 float p = 3,1415926;

Lưu ví dụ về đồ họa đã sửa đổi. Cắm Arduino vào máy tính nếu bạn chưa làm như vậy. Đi tới Công cụ → Bảng và Công cụ → Cổng để xác minh rằng máy tính có thể tìm thấy Arduino. Đi tới Phác thảo → Tải lên. Nếu ví dụ hoạt động, màn hình sẽ hiển thị các đường thẳng, hình chữ nhật, văn bản và bản trình diễn hoàn chỉnh. Hướng dẫn Adafruit cung cấp thêm chi tiết nếu cần khắc phục sự cố.

Bước 4: Mã từ kế

Tải xuống mã đính kèm và mở nó trong môi trường phát triển Arduino.

Chương trình này sử dụng sáu chức năng:

Setup () khởi tạo màn hình

Loop () chứa vòng lặp chính của chương trình. Nó bôi đen màn hình, vẽ các trục, đọc đầu vào và vẽ mũi tên đại diện cho vectơ từ trường. Nó có tốc độ làm mới là một giây có thể được thay đổi bằng cách thay đổi dòng 127

DrawAxes3d () vẽ và gắn nhãn các trục x, y và z

DrawArrow3d () nhận đầu vào x, y và z nằm trong khoảng từ 0 đến 1023. Từ các giá trị này, nó tính toán các điểm cuối của mũi tên trong không gian. Tiếp theo, nó sử dụng hàm isometricxx () và isometricyy () để tính toán các điểm cuối trên màn hình. Cuối cùng, nó vẽ mũi tên và in điện áp ở dưới cùng của màn hình

Isometricxx () tìm tọa độ x của hình chiếu đẳng cự. Nó lấy các tọa độ x, y và z của một điểm và trả về vị trí x pixel tương ứng trên màn hình

Isometricyy () tìm tọa độ y của hình chiếu đẳng cự. Nó lấy các tọa độ x, y và z của một điểm và trả về vị trí pixel y tương ứng trên màn hình

Trước khi chạy mã, chúng ta cần chỉ định chân nào sẽ sử dụng cho giao tiếp SPI với màn hình và chúng ta cần chỉ định điện áp nguồn cho các cảm biến. Nếu bạn đang sử dụng MKR1010, hãy ghi chú dòng 92-96 cũng như dòng 110. Sau đó, bỏ ghi chú dòng 85-89 cũng như dòng 108. Nếu bạn đang sử dụng Uno, hãy nhận xét dòng 85-89 cũng như dòng 108 Sau đó, bỏ ghi chú dòng 92-96 cũng như dòng 110.

Tải lên mã, Phác thảo → Tải lên.

Bạn sẽ thấy các trục x, y và z có màu đỏ. Mũi tên màu xanh lá cây với vòng tròn màu xanh lam cho đầu nhọn thể hiện vectơ từ trường tại các cảm biến. Số đọc điện áp được hiển thị ở phía dưới bên trái. Khi bạn đưa một nam châm lại gần các cảm biến, các số đọc điện áp sẽ thay đổi và kích thước của mũi tên sẽ lớn dần.

Hình ảnh
Hình ảnh

Bước 5: Công việc trong tương lai

Công việc tương lai
Công việc tương lai

Bước tiếp theo sẽ là hiệu chỉnh thiết bị. Bảng dữ liệu cảm biến cung cấp thông tin về cách chuyển đổi các giá trị điện áp cảm biến thô sang cường độ từ trường. Hiệu chuẩn có thể được xác minh bằng cách so sánh với một từ kế chính xác hơn.

Nam châm vĩnh cửu tương tác với dây mang dòng điện. Các dây điện gần màn hình và trong Arduino tạo ra từ trường có thể ảnh hưởng đến kết quả đọc của cảm biến. Ngoài ra, nếu thiết bị này được sử dụng để đo gần nam châm vĩnh cửu mạnh, từ trường từ thiết bị được thử nghiệm sẽ tương tác, đưa nhiễu vào và có thể làm hỏng Arduino và màn hình. Việc che chắn có thể làm cho từ kế này chắc chắn hơn. Arduino có thể chịu được từ trường lớn hơn nếu nó được che chắn trong hộp kim loại và sẽ ít nhiễu hơn nếu cáp được che chắn kết nối các cảm biến thay vì dây trần.

Từ trường là một hàm của vị trí, vì vậy nó khác nhau tại mọi điểm trong không gian. Thiết bị này sử dụng ba cảm biến, một để đo thành phần x, y và z của từ trường tại một điểm. Các cảm biến ở gần nhau nhưng không ở một điểm duy nhất và điều này làm hạn chế độ phân giải của từ kế. Sẽ rất tuyệt nếu lưu các số đọc từ trường tại các điểm khác nhau sau đó hiển thị chúng dưới dạng một dãy mũi tên tại các vị trí tương ứng. Tuy nhiên, đó là một dự án cho một ngày khác.

Người giới thiệu

Thông tin về thư viện Adafruit Arduino Graphics

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Hình dung từ trường

https://www.falstad.com/vector3dm/

Thông tin về hiệu ứng Hall và cảm biến hiệu ứng Hall

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Thông tin về phép chiếu đẳng áp

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Đề xuất: