Mục lục:

Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & tương tự: 3 bước
Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & tương tự: 3 bước

Video: Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & tương tự: 3 bước

Video: Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & tương tự: 3 bước
Video: 🔴 Arduino #16 | Điều Khiển Động Cơ Bước Step Motor 28BYJ-48 Sử Dụng Driver ULN2003 2024, Tháng bảy
Anonim
Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & Analogue
Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & Analogue

Đây là sơ đồ điều khiển cho động cơ bước 28BYJ-48 mà tôi đã phát triển để sử dụng như một phần của dự án luận văn năm cuối của mình. Tôi chưa thấy điều này được thực hiện trước đây vì vậy tôi nghĩ rằng tôi sẽ tải lên những gì tôi phát hiện ra. Hy vọng rằng điều này sẽ giúp ai đó khác ngoài đó!

Về cơ bản, mã cho phép động cơ bước "sao chép" vị trí góc của cần điều khiển tương tự, nghĩa là nếu bạn đẩy cần điều khiển về phía trước, động cơ sẽ hướng về "phía bắc". đẩy cần điều khiển về phía tây, động cơ quay để chỉ theo cùng một hướng.

Đối với việc triển khai của tôi, tôi yêu cầu rằng nếu cần điều khiển được buông ra, tức là không có vị trí góc, động cơ sẽ trở về hướng "nhà". Hướng nhà quay về hướng đông và động cơ (hoặc cho thuê bất kỳ con trỏ / thiết bị nào bạn đã gắn vào trục đầu ra!) Cũng phải quay về hướng này khi được bật nguồn.

Quân nhu

Arduino Uno hoặc tương tự

breadboard & lựa chọn dây nhảy (nam sang nam, nam sang nữ)

Nguồn điện 5V

Mô-đun cần điều khiển tương tự (lý tưởng là với tính năng nút nhấn tạm thời, điều này giúp cho việc nghỉ ngơi ở vị trí "nhà" dễ dàng hơn

Động cơ bước 28BYJ-48 và trình điều khiển bước ULN2003

Bút, giấy và blu-tac (hoặc bất kỳ thiết bị con trỏ nào khác để gắn vào động cơ!)

Bước 1: Bước 1: Thiết lập

Kết nối động cơ bước với trình điều khiển bước và kết nối các chân như sau:

IN1 - chân 8 của Arduino

IN2 - chân 9 của Arduino

IN3 - Chân 10 của Arduino

IN4 - chân 11 của Arduino

Kết nối nguồn điện 5v của bạn với các đường cung cấp trên bảng mạch của bạn và kết nối các đầu vào 5v của ULN2003 với các đường cung cấp. kết nối đường ray nối đất với mặt đất trên Arduino của bạn.

đối với cần điều khiển, kết nối như sau:

Chốt chuyển đổi - chân 2 của Arduino

Trục X - Arduino A0 (Tương tự trong 0)

Trục Y - Arduino A1

+ 5V - Đầu ra Arduino 5V

GND - Arduino GND

Cuối cùng kết nối mặt đất của breadboard của bạn với chân Arduino GND khác

Bước 2: Bước 2: Giải thích mã

Tôi đã gửi kèm mã Arduino đầy đủ để bạn tải về và sử dụng. Nhưng tôi sẽ cố gắng hết sức để giải thích những phần thích hợp ở đây.

Lý thuyết đằng sau mã này là không gian bị chiếm bởi cần điều khiển được chia thành một đồ thị, với 0, 0 ở trung tâm. tuy nhiên, các đầu vào của phím điều khiển nằm ở (khoảng) 512 ở trung tâm, do đó, để khắc phục hai chức năng này được sử dụng để "không" giá trị đọc từ trục X và Y. tùy thuộc vào nguồn điện mà bạn sử dụng, bạn có thể cần phải thay đổi các giá trị trong các chức năng ZeroX và ZeroY để cần điều khiển của bạn cung cấp số đọc đáng tin cậy là 0 khi nghỉ ngơi.

Khi các giá trị X, Y được đọc, trước tiên chúng được chuyển đổi thành radian bằng cách sử dụng hàm atan2 () trong thư viện math.h. Việc giải thích chức năng này nằm ngoài phạm vi của hướng dẫn này, nhưng hãy đi tìm nó - nó là một thủ thuật hình học khá đơn giản!

Cuối cùng, để làm cho cuộc sống dễ dàng hơn cho những người trong chúng ta, những người từng làm việc theo độ hơn là rads, giá trị rad được tính bằng atan2 () được chuyển đổi thành độ.

Ở đầu vòng lặp là một đoạn mã nhỏ cho phép bạn nhấp vào nút tạm thời trên cần điều khiển để di chuyển vị trí "nhà". Điều này cực kỳ hữu ích trong khi kiểm tra mã, nhưng tôi đã để nó ở lại vì tôi có thể thấy nó có thể hữu ích như thế nào trong một số trường hợp.

Bây giờ vào phần lớn chính của mã! chúng tôi bắt đầu bằng cách đọc các tọa độ cần điều khiển X, Y hai lần cách nhau bằng độ trễ 10ms và sau đó kiểm tra xem chúng có giống nhau không - tôi nhận thấy rằng cần điều khiển đôi khi sẽ xuất ra các bài đọc lẻ tẻ và độ trễ nhỏ này đủ để dừng động cơ quay dựa trên các. Đó cũng là một độ trễ đủ ngắn để nó dường như không ảnh hưởng đến các đầu vào có chủ đích.

Phần còn lại của mã khá tự giải thích và tôi đã cố gắng hết sức để ghi lại nó; Một loạt các câu lệnh IF so sánh góc của cần điều khiển hiện tại với góc của động cơ và di chuyển động cơ đến góc đó. 28BYJ-48 có 5.689 bước mỗi độ, vì vậy đó là lý do tại sao chúng tôi nhân chuyển động cần thiết với số dường như kỳ lạ này!

Một phần của mã yêu cầu giải thích nhiều nhất là những gì tôi đã gọi là "trường hợp bao quanh". Ngay cả khi cần điều khiển và động cơ ở ví dụ: + 175 °, và sau đó cần điều khiển di chuyển đến -175 ° (một chuyển động chỉ 10 ° trên cần điều khiển, từ phía bắc của tây sang ngay phía nam của phía tây), động cơ sẽ di chuyển THEO HƯỚNG SAI 350 °! để giải thích cho điều này, trường hợp đặc biệt đã được viết.

Trường hợp quấn quanh bắt đầu bằng cách kiểm tra xem động cơ và cần điều khiển có các dấu hiệu trái ngược nhau, tức là động cơ là dương và cần điều khiển âm hoặc ngược lại. Nó cũng kiểm tra xem tổng giá trị tuyệt đối (nghĩa là, giá trị dương) của cần điều khiển và động cơ có trên 180 ° hay không.

Nếu cả hai câu này đều đúng, thì hàm sẽ kiểm tra xem động cơ cần chuyển động theo chiều kim đồng hồ (giá trị động cơ là âm) hay ngược chiều kim đồng hồ (nếu giá trị động cơ là dương).

Các giá trị tuyệt đối của góc động cơ và góc cần điều khiển được cộng lại và trừ đi 360 ° để xác định khoảng cách di chuyển. Cuối cùng, góc động cơ (hiện phản ánh góc cần điều khiển) được cập nhật như vậy.

Bước 3: KẾT THÚC

Vì vậy, tất cả những gì còn lại cần làm là tải mã lên Arduino của bạn và chạy nó! Xem video ở trên để biết rõ về cách thức hoạt động của dự án. Điều này sẽ hữu ích cho gimbal máy ảnh, cánh tay robot và nhiều ứng dụng khác!

Nếu bạn sử dụng mã, vui lòng cho tôi biết và nếu bạn thấy bất kỳ nơi nào mã có thể được cải thiện, tôi rất muốn nghe phản hồi của bạn.

Đề xuất: