Cảm biến quang học
Cảm biến quang học, khi được sử dụng với thiết bị truyền động tuyến tính,chức năng rất giống với cảm biến hiệu ứng hội trường, ngoại trừ chúng phát hiện ánh sáng thay vì từ trường [1]. Cảm biến quang học hoạt động bằng cách sử dụng ánh sáng từ đèn LED hoặc một số nguồn sáng khác được truyền qua đĩa mã hóa. Đĩa mã hóa này có rãnh để cho phép ánh sáng đi qua nó theo chu kỳ. Ở phía bên kia của đĩa là một bộ tách sóng quang, phát hiện ánh sáng khi nó đi qua các khe trong đĩa và tạo ra một tín hiệu đầu ra [1]. Khi bộ truyền động di chuyển, đĩa mã hóa quay và ánh sáng được phát hiện bởi bộ tách sóng quang tạo ra một sóng vuông xung điện áp. Các xung này có thể được sử dụng tương tự như các xung của cảm biến hiệu ứng Hall để xác định mức độ di chuyển của thiết bị truyền động.
Phản hồi vị trí từ cảm biến quang học
Vì cảm biến quang học hoạt động khá giống với cảm biến hiệu ứng Hall về đầu ra của chúng, bài đăng trên blog này sẽ trình bày ngắn gọn cách đọc đầu ra của chúng để biết phản hồi vị trí. Nếu bạn đang tìm kiếm thêm chi tiết, hãy xem bài đăng của chúng tôi về cách đọc phản hồi vị trí từ cảm biến hiệu ứng hội trường vì nhiều điều sẽ tương tự.
Giống như cảm biến hiệu ứng hội trường, cảm biến quang học sẽ có 3 chân để kết nối; một là điện áp đầu vào, một là đất, và cuối cùng, một là tín hiệu đầu ra. Để sử dụng các xung trên tín hiệu đầu ra 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. Bạn sẽ muốn sử dụng các chân ngắt bên ngoài của bộ vi điều khiển để đếm chính xác các xung này. Khi các ngắt bên ngoài được kích hoạt bởi sự thay đổi điện áp, chúng có thể được sử dụng để phát hiện từng xung khi chúng xảy ra. Khi bạn đã thiết lập ngắt trong mã của bộ vi điều khiển, bạn sẽ cần thiết lập quy trình dịch vụ ngắt để đếm các xung khi chúng xảy ra. Hàm countSteps () trong ví dụ mã bên dưới được sử dụng để đếm số lượng xung từ cảm biến quang học.
Để sử dụng các xung này để xác định giá trị vị trí, bạn sẽ 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 di chuyển. Khi bạn kiểm soát cách bộ truyền động tuyến tính của mình di chuyển, 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 bạn. Biến này có thể được sử dụng để xác định xem bạn cần thêm hoặc trừ các xung từ vị trí trước đó của bạn. Khi bạn đã cập nhật vị trí của mình, bạn sẽ cần đặt lại số xung đếm được về 0. Ví dụ mã bên dưới cho bạn thấy một chức năng cập nhật vị trí dựa trên số lượng xung đếm được. Khi bạn đã có vị trí về xung, bạn có thể chuyển đổi thành inch bằng cách sử dụng đặc điểm kỹ thuật xung trên inch của bộ truyền động tuyến tính của bạn.
Homing 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 quang học, bạn cần luôn biết vị trí bắt đầu của thiết bị truyền động tuyến tính của mình. Mặc dù khi bạn bật hệ thống lần đầu tiên, bộ vi điều khiển 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 đặt thiết bị truyền động tuyến tính của mình đến một vị trí đã biết. Về nhà của bạn thiết bị truyền động tuyến tính, bạn sẽ cần lái nó đến một vị trí đã biết, chẳng hạn như đã thu lại hoàn toàn. Sử dụng mã Arduino bên dưới làm ví dụ, chúng tôi đã thiết lập một vòng lặp WHILE sẽ điều khiển bộ truyền động tuyến tính của chúng tôi đến vị trí đã biết của chúng tôi. Trong ví dụ này, chúng ta sẽ biết rằng chúng ta đang ở vị trí đã biết bằng cách kiểm tra xem ngắt đã được kích hoạt hay chưa bằng cách kiểm tra xem biến bước có thay đổi hay không. Chúng ta cũng cần đảm bảo rằng đã đủ thời gian để mong đợi ngắt được kích hoạt, vì vậy chúng ta sử dụng hàm millis () và so sánh nó với tem thời gian trước đó. Khi chúng tôi đã xác định rằng bộ truyền động tuyến tính đang ở vị trí chính của chúng tôi, chúng tôi ngừ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.
Đối phó với các kích hoạt sai
Mặc dù cảm biến quang học không nhạy cảm với nhiễu điện như chiết áp, nhưng nhiễu điện và độ nảy của công tắc vẫn có thể ảnh hưởng đến tín hiệu đầu ra và có thể kích hoạt đếm xung sai. Một vài xung phụ sẽ không ảnh hưởng nhiều đến việc định vị, nhưng theo thời gian, nó có thể là một vấn đề lớn hơn. Bạn có thể chống lại 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 trình kích hoạt sai. Vì bạn có thể xác định mức độ thường xuyên mà bạn mong đợi các xung mới được phát hiện, bạn có thể lọc ra khi nào ngắt được kích hoạt bởi tiếng ồn. Trong mẫu mã bên dưới, trigDelay là thời gian trễ giữa mỗi xung. Nếu ngắt được kích hoạt trước thời gian trễ này, thì xung sẽ không được tính. Khoảng thời gian 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 nhiễu đúng cách và nếu quá dài, nó sẽ bỏ lỡ các xung thực tế từ cảm biến quang học.
Một cách khác để chống lại bộ kích hoạt sai là hiệu chỉnh giá trị vị trí mỗi khi bộ truyền động đạt đến vị trí đã biết. Giống như điều khiển thiết bị truyền động tuyến tính, nếu bạn đã điều khiển thiết 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 cần bao nhiêu xung để đạt được vị trí đó. Sau đó, bạn có thể chỉ cần sửa giá trị vị trí bằng cách sử dụng giá trị đó khi bạn đạt đến vị trí đã biết đó. Trong mẫu mã bên dưới, điều này được thực hiện cho các vị trí được mở rộng hoàn toàn và thu lại hoàn toàn. Phương pháp này cung cấp một 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.
Tóm lược
Cảm biến quang học được sử dụng để phản hồi vị trí cung cấp độ chính xác và độ phân giải cao hơn so với cảm biến hiệu ứng Hall và chiết áp, đồng thời có những điểm mạnh và nhược điểm tương tự như cảm biến hiệu ứng Hall. Mặc dù chúng không đo vị trí tuyệt đối và yêu cầu vị trí bắt đầu đã biết để cung cấp giá trị vị trí, nhưng số lượng lớn xung trên mỗi inch cho phép định vị độ tin cậy và đảm bảo nhiều bộ truyền động tuyến tính chuyển động đồng thời. Sử dụng của chúng tôi FA-SYNC-X bộ điều khiển cơ cấu chấp hành hoặc tqua mã bổ sung, bạn thậm chí có thể đảm bảo các bộ truyền động di chuyển đồng loạt bất kể tải.
Để có ví dụ về mã hoàn chỉnh, hãy xem blog của chúng tôi trên cách đọc phản hồi vị trí từ cảm biến hiệu ứng hội trường nhiều sẽ tương tự. Các giá trị như xung trên mỗi inch và độ trễ thời gian giữa các xung là một số thay đổi mà bạn cần thực hiện để sử dụng mã đó nhằm sử dụng chính xác cảm biến quang học của mình.
[1] Paschotta, R. Bài báo về Cảm biến quang học. Lấy ra từ:https://www.rp-photonics.com/optical_sensors.html