Phản hồi từ cảm biến hiệu ứng Hall với video

Cảm biến hiệu ứng hall

Cảm biến hiệu ứng Hall có thể phát hiện sự hiện diện của từ trường và tạo ra điện áp đầu ra khi phát hiện thấy. Cảm biến hiệu ứng Hall, khi được sử dụng vớibộ truyền động tuyến tính, thường được đặt bên trong hộp số của bộ truyền động cùng với một đĩa từ. Khi bộ truyền động tuyến tính kéo dài hoặc rút lại, đĩa này quay sẽ truyền qua cảm biến hiệu ứng Hall khiến cảm biến tạo ra đầu ra kỹ thuật số dưới dạng xung điện áp. Những xung này có thể được đếm và sử dụng để xác định xem bộ truyền động đã di chuyển được bao xa.

Cách đọc phản hồi từ bộ truyền động tuyến tính

Phản hồi vị trí từ cảm biến hiệu ứng Hall

Nhược điểm của việc sử dụng cảm biến hiệu ứng Hall cho phản hồi vị trí là chúng không đo được vị trí tuyệt đối. Thay vào đó, chúng tạo ra các xung có thể đếm được để xác định xem bộ truyền động đã di chuyển được bao xa. Để sử dụng các xung này cho phản hồi vị trí, bạn sẽ cần sử dụng vi điều khiển để đếm các xung được tạo ra. Để làm như vậy, bạn sẽ cần sử dụng các chân ngắt bên ngoài của bộ điều khiển vi mô để đếm các xung này khi chúng xuất hiện. Ngắt bên ngoài là các chân phát hiện sự thay đổi điện áp và trong trường hợp của chúng tôi có thể được sử dụng để phát hiện xung điện áp từ cảm biến hiệu ứng Hall. Bạn sẽ cần tham khảo bảng dữ liệu của bộ điều khiển vi mô để đảm bảo những chân nào của bộ điều khiển vi mô có thể được sử dụng làm chân ngắt. Sử dụng một Arduino Uno ví dụ, chân 2 và 3 có thể được sử dụng cho các ngắt bên ngoài. Khi bạn đã chọn được chân ngắt thích hợp, bạn có thể kết nối dây của đầu ra cảm biến hiệu ứng Hall với chân đó cũng như kết nối điện áp đầu vào với 5V và nối đất với chân nối đất.

Kết nối cảm biến hiệu ứng Hall với Arduino 

Ví dụ mã bên dưới cho thấy cách thiết lập một ngắt trong Arduino IDE trong đó ngắt sẽ được kích hoạt ở cạnh tăng của xung điện áp. Bạn có thể thiết lập để kích hoạt ngắt tại các điểm khác nhau khi thay đổi điện áp và nên tham khảo bảng dữ liệu của bộ điều khiển vi mô để xác định các tùy chọn có sẵn. Khía cạnh cuối cùng bạn cần làm để thiết lập ngắt là viết quy trình dịch vụ ngắt, đây là chức năng mà mã sẽ chạy mỗi khi ngắt được kích hoạt. Chức năng này phải ngắn và chỉ thực hiện các tác vụ đơn giản như đếm số xung từ cảm biến hiệu ứng Hall của chúng tôi. Hàm countSteps() trong ví dụ mã bên dưới được sử dụng để đếm số xung từ cảm biến hiệu ứng Hall.

Để sử dụng các xung này nhằm xác định giá trị vị trí, bạn cần biết vị trí trước đó của bộ truyền động tuyến tính và hướng mà bộ truyền động tuyến tính đang di chuyển. Bộ điều khiển vi mô của bạn sẽ biết bạn đang điều khiển bộ truyền động tuyến tính theo hướng nào, vì vậy, bạn có thể chỉ cần thiết lập một biến để theo dõi hướng của bộ truyền động trong mã của mình, biến này sẽ được sử dụng để xác định xem bạn cộng hay trừ các xung khỏi vị trí trước đó của mình. Khi bạn đã cập nhật vị trí của mình, bạn sẽ cần đặt lại các xung đã đếm về 0. Ví dụ mã bên dưới hiển thị cho bạn một hàm cập nhật vị trí dựa trên số xung được đếm. Khi bạn đã xác định được vị trí về mặt xung, bạn có thể chuyển đổi thành inch bằng cách sử dụng thông số xung trên mỗi inch của bộ truyền động tuyến tính của bạn. Trong mẫu mã bên dưới, xung di chuyển trên mỗi inch là 3500.

Hướng dẫn thiết bị truyền động tuyến tính của bạn

Để sử dụng chính xác phản hồi vị trí từ cảm biến hiệu ứng Hall, bạn cần phải luôn biết vị trí bắt đầu của bộ truyền động tuyến tính. Mặc dù khi bạn bật hệ thống lần đầu tiên, bộ điều khiển vi mô của bạn sẽ không thể biết liệu bộ truyền động có được mở rộng hay không. Điều này sẽ yêu cầu bạn đưa bộ truyền động tuyến tính của mình đến một vị trí đã biết. Để đặt bộ truyền động tuyến tính của bạn, bạn sẽ cần phải đưa bộ truyền động tuyến tính đến một vị trí đã biết, chẳng hạn như được rút lại hoàn toàn. Bạn cũng có thể tận dụng công tắc giới hạn bên ngoài để đặt vị trí đã biết của bạn ở một nơi nào đó không phải là được mở rộng hoặc rút lại hoàn toàn. Lấy mã Arduino bên dưới làm ví dụ, chúng tôi sẽ muốn thiết lập vòng lặp WHILE để điều khiển bộ truyền động tuyến tính của chúng tôi hướng tới vị trí đã biết của bạn, trong trường hợp này được rút lại hoàn toàn. Chúng tôi biết rằng bạn đang ở vị trí đã biết của chúng tôi vì cảm biến hiệu ứng Hall sẽ không kích hoạt cảm biến ngắt. Trong trường hợp này, chúng tôi kiểm tra xem biến số bước có thay đổi hay không để xác định xem ngắt có được kích hoạt hay không. Chúng ta cũng cần đảm bảo rằng đã có đủ thời gian trôi qua để dự kiến ​​ngắt sẽ được kích hoạt, vì điều này, chúng ta sử dụng hàm millis() để xuất ra thời gian tính bằng mili giây kể từ khi mã bắt đầu và chúng ta so sánh thời gian đó với dấu thời gian trước đó . Khi chúng tôi đã xác định rằng bộ truyền động tuyến tính ở vị trí ban đầu, chúng tôi dừng điều khiển bộ truyền động, đặt lại biến số bước và thoát khỏi vòng lặp WHILE.

Xử lý các yếu tố kích hoạt sai

Mặc dù cảm biến hiệu ứng Hall không nhạy cảm với nhiễu điện như chiết áp nhưng nhiễu điện vẫn có thể ảnh hưởng đến tín hiệu đầu ra. Công tắc nảy lên cũng có thể là một vấn đề với cảm biến hiệu ứng Hall có thể kích hoạt việc đếm các xung sai, điều này sẽ ảnh hưởng đến khoảng cách mà bộ điều khiển vi mô cho rằng bộ truyền động tuyến tính của bạn đã di chuyển. Một vài xung bổ sung sẽ không ảnh hưởng nhiều đến việc định vị vì có 1000 xung trên mỗi inch, nhưng theo thời gian, nó có thể là một vấn đề lớn hơn. Bạn có thể giải quyết những vấn đề này bằng cách sử dụng bộ hẹn giờ bên trong để lọc ra các tác nhân kích hoạt sai. Vì bạn có thể xác định tần suất bạn mong đợi các xung mới được phát hiện, bạn có thể lọc ra thời điểm ngắt được kích hoạt bởi nhiễu. Trong mẫu mã bên dưới, trig-Delay là độ trễ thời gian giữa mỗi xung. Nếu ngắt được kích hoạt trước độ trễ này thì xung sẽ không được tính.

Khoảng thời gian của độ trễ này sẽ khác nhau tùy theo ứng dụng của bạn, nhưng nếu quá ngắn, nó sẽ không lọc tiếng ồn đúng cách và nếu quá dài, nó sẽ bỏ lỡ các xung thực tế từ bộ truyền động tuyến tính. Tốc độ của bộ truyền động tuyến tính cũng sẽ tác động đến độ trễ này và nếu bạn muốn điều chỉnh tốc độ, biến này có thể cần phải thay đổi để điều chỉnh theo tần số mới của các xung dự kiến. Để xác định chính xác độ trễ chính xác giữa mỗi xung, bạn có thể sử dụng máy phân tích logic để xem tín hiệu thực tế từ cảm biến hiệu ứng Hall. Mặc dù điều này không bắt buộc trong hầu hết các ứng dụng, nhưng nếu bạn yêu cầu định vị rất chính xác, bạn có thể muốn xác định độ trễ chính xác.

Một cách khác để chống lại các kích hoạt sai là sửa giá trị vị trí mỗi khi bộ truyền động đạt đến một vị trí đã biết. Giống như điều hướng bộ truyền động tuyến tính, nếu bạn đã điều khiển bộ truyền động tuyến tính đến vị trí thu lại hoặc mở rộng hoàn toàn hoặc nếu bạn sử dụng công tắc giới hạn bên ngoài, bạn sẽ biết bộ truyền động đã di chuyển được bao xa. Vì bạn biết cảm biến hiệu ứng Hall phải gửi bao nhiêu bước để đến được vị trí đã biết của mình, bạn chỉ cần sửa giá trị khi chúng tôi đạt đến vị trí đó. Trong mẫu mã bên dưới, việc này được thực hiện cho các vị trí được mở rộng hoàn toàn và được rút lại hoàn toàn. Vì bộ truyền động sẽ không di chuyển khi nó đạt đến một trong những vị trí đó, nếu chúng ta cố gắng điều khiển bộ truyền động và giá trị vị trí không thay đổi, chúng ta biết rằng chúng ta đang ở giới hạn. Phương pháp này cung cấp giải pháp thiết thực để đảm bảo giá trị vị trí của bạn luôn chính xác, đặc biệt nếu bạn đang thu lại hoàn toàn hoặc mở rộng hoàn toàn bộ truyền động của mình tại một số điểm trong quá trình vận hành. Bạn có thể sử dụng phương pháp này kết hợp với phương pháp được mô tả ở trên để giúp duy trì độ chính xác của giá trị vị trí của bạn.

Bản tóm tắt

Việc sử dụng cảm biến hiệu ứng Hall cho phản hồi vị trí mang lại độ phân giải cao hơn nhiều so với phản hồi từ chiết áp. Vì có thể có 1000 xung trên mỗi inch chuyển động, cảm biến hiệu ứng Hall mang lại độ chính xác và độ tin cậy trong việc định vị bộ truyền động tuyến tính của bạn. Cảm biến hiệu ứng Hall cũng cung cấp khả năng lớn hơn để đảm bảo nhiều bộ truyền động tuyến tính di chuyển đồng thời vì số xung chính xác hơn điện áp thay đổi của chiết áp. Sử dụng của chúng tôi FA-SYNC-X bộ điều khiển bộ truyền động, bạn thậm chí có thể đảm bảo các bộ truyền động chuyển động đồng bộ bất kể tải trọng. Đối với những người tự làm, bạn có thể kiểm tra cách đảm bảo các bộ truyền động của bạn di chuyển đồng bộ bằng cách sử dụng Arduino đây.

Dưới đây là mã mẫu hoàn chỉnh được sử dụng trong blog này và được xây dựng để kiểm soát độ dài hành trình 14” Dòng đạn 36 Cal. Thiết bị truyền động tuyến tính. Bộ truyền động tuyến tính được điều khiển bằng cách sử dụng một người lái xe máy, bạn có thể tìm hiểu cách thiết lập đây

[1] Monari, G. (Tháng 6, 2013) Hiểu độ phân giải trong bộ mã hóa quang và từ. Lấy ra từ: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders

Share This Article
Tags: