Điều Khiển Động Cơ Bước Arduino

Mình thấy có không ít bạn hỏi về stepper và cách tinh chỉnh và điều khiển nó. Đồng thời thấy vấn đề tinh chỉnh và điều khiển động cơ bước là 1 trong những vấn đề bom tấn nhưng lại chưa có trên cộng đồng. Bên cạnh ra, vì công dụng điểm cộng đồng khá hay với mình có muốn có rubi nên từ bây giờ mình sẽ khuyên bảo rất kỹ với những bạn! tủ sách mình sử dụng là thư viện AccelStepper chứ không hẳn thư viện stepper mang định của teenypizza.com nên hoàn toàn có thể điều khiển đồng thời các stepper cùng kết phù hợp với các thư viện bất đồng hóa khác.

Bạn đang xem: Điều khiển động cơ bước arduino


Có không hề ít tài liệu trên mạng nói về động cơ bước. Chúng ta có thể google nhằm tìm ra nó. Mặc dù nhiên, bản thân xin đề xuất cho các bạn một số tài liệu sau để tham khảo.

Nôm na, bộ động cơ bước là một trong những loại động cơ mà làm việc đó bạn sẽ có thể quy định đúng đắn số góc cù và bộ động cơ bước sẽ nên quay. Không y hệt như Servo, hộp động cơ bước có thể quay bao nhiêu độ tùy ý và những lần quay nó sẽ quay được một step, 1 step ở đó là bao nhiêu còn phụ thuộc vào vào động cơ bước của bạn. Ví dụ, bộ động cơ bước của khách hàng có 72 step thì nó sẽ bắt buộc quay 72 step để kết thúc một vòng quay. Số step này là hằng số, nhưng bạn có thể dùng technology micro step để "cải thiện" số vòng quay động cơ cách của bạn.


Các thông số kỹ thuật động cơ bước


Như mình vừa trình bày, mỗi hộp động cơ bước sẽ có được một thống cứng đặc biệt quan trọng nhất mà khi chúng ta đi đâu và tìm mua thì cần hỏi đầu tiên. Đó là, bộ động cơ bước này còn có bao nhiêu step! Theo như bản thân biết thì động cơ bước bên trên thị trường vn mà giới DIY chúng ta hay dùng bao gồm số step là 200.

Ngoài ra, nó còn có các thông số khác nhưng mình sẽ tất nhiên ví dụ cụ thể về loại mình dùng:

Rated Current/phase (dòng tiêu thụ buổi tối đa mỗi pha)2.0A
Phase Resistance (điện trở từng pha)1.4ohms
Voltage (hiệu năng lượng điện thế)2.8V

Trong đó, thông số Rated Current/phase trình bày dòng điện buổi tối đa nhưng mỗi pha hoàn toàn có thể nhận được, nếu như driver tinh chỉnh nào có dòng năng lượng điện mỗi trộn cao hơn thế thì sẽ hỏng. Bắt buộc lựa nhiều loại driver cho chiếc ra giao động 80 - 90% thông số kỹ thuật này. Điện trở từng pha là hằng số (bạn xem trong datasheet của động cơ bước mà chúng ta mua). Còn số lượng voltage là hiệu năng lượng điện thế buổi tối ưu để làm stepper chuyển động ổ định (2.0 * 1.4 = 2.8V)


Phần cứng cần chuẩn bị


Nguồn cung cấp 12V (tối thiểu 1A).

Nối dây driver, động cơ bước và teenypizza.com


Hình 1

Hình 2

Hình 3

Cái driver sẽ tiến hành gắn lên breadboard như hình 3, tiếp đến bạn nối dây vào như hình 1 với hình 2.


Nạp code mang lại teenypizza.com


Bạn nạp đoạn code sau mang đến teenypizza.com.

// Run a A4998 Stepstick from an teenypizza.com UNO.// Paul Hurley Aug năm ngoái - http://www.instructables.com/id/Drive-a-Stepper-Motor-with-an-teenypizza.com-and-a-A4988-/int x; #define BAUD (9600)void setup() Serial.begin(BAUD); pinMode(6,OUTPUT); // Enable pin sạc - chân khởi đụng - nối vào GND sẽ giúp đỡ ta bật động cơ bước, nối vô VCC bộ động cơ bước được thả ra. Nôm na: GND = servo.attach, VCC = servo.detach pinMode(5,OUTPUT); // Step sạc pinMode(4,OUTPUT); // Dir - pin sạc digitalWrite(6,LOW); // set Enable lowvoid loop() { digitalWrite(6,LOW); // Đặt Enable làm việc trạng thái LOW digitalWrite(4,HIGH); // Đặt Dir nghỉ ngơi trạng thái HIGH Serial.println("Cho chay 200 steps (1 vong)"); for(x = 0; x Nhớ gắn năng lượng điện 12V vô nha


Tăng sức khỏe cho động cơ bước bởi vi bước (micro stepping)


Để bật chức năng này (micro stepping - vi bước), bạn sẽ phải nối ba chân MS1, MS2, MS3 vào VCC!

Nói một phương pháp nôm na, cứ từng chân MS1, MS2, MS3 được nối vô VCC, nó đang tăng số cách của động cơ bước lên. Tức là thay vày hồi xưa bạn chỉ việc quay 200 bước là đươc một vòng. Bây giờ bạn sẽ phải quay những hơn, cơ hội đó sẽ có độ chính xác cao hơn!

MS1MS2MS3Vi bước
Không nốiKhông nốiKhông nối1
VCCKhông nốiKhông nối1/2
Không nốiVCCKhông nối1/4
VCCVCCKhông nối1/8
VCCVCCVCC1/16

Thứ nối MS1, MS2, MS3, ta vẫn đươc vi cách 1/16, tức thị với bộ động cơ bước tất cả 200 bước thì ta đã chia nhỏ dại mỗi bước ra thành 16 cách => Tổng số bước của rượu cồn cơ từ bây giờ là 200 * 16 = 3200. Thừa đã phải không nào? test chạy lấy ví dụ trên, các bạn sẽ thấy ngay sự không giống biệt. Nhưng lại lúc này, stepper đang hơi nóng, vị vậy, hãy nhờ rằng tản sức nóng nha!


Điều khiển nhiều hộp động cơ bước với thư viện AccelStepper


Nếu là 1 trong những người mê say sự tuyệt đối hoàn hảo thì khi chúng ta nhìn vào code trên thì đang thấy cần tương đối nhiều dòng code chỉ để gia công 1 bộ động cơ bước hoạt động, cùng với những dòng delay bởi thế thì chắc chắn hẳn, các bạn sẽ hiểu rằng, chả bao gồm cách làm sao chạy những quy trình khác khi hộp động cơ bước sẽ chạy. 

teenypizza.com có hỗ trợ sẵn bộ thư viện stepper trong tệp tin example. Nhưng nếu như khách hàng đã từng test thì hẳn biết một điều là, thư viện này cũng delay như code kia. Tức là trong quá trình động cơ bước chuyển động thì cả công tác sẽ cần dừng hóng nó chuyển động theo (cơ chế này hotline là cơ chế đồng bộ - sync).

Để điều khiển được nhiều động cơ cách thì bọn họ phải biết ngõ xử lý sự không tương đồng bộ, tức thị sao? Nghĩa là phải biết thay hàm delay bằng phương pháp khác, cùng đó chính là dùng timer, chính là dùng hàm millis(). Và ý tưởng phát minh đó vẫn được diễn tả trong tủ sách AccelStepper, thư viện này đang ứng dụng nguyên lý xử lý bất đồng hóa (async) để làm nên nó - một thư viện rất là hữu ích!

Để tài về tủ sách này, chúng ta hãy click vào đây (mirror).

Và đấy là đoạn code mẫu của tủ sách này.

Xem thêm: Cách Chọn Ví Cho Người Mệnh Thổ Hợp Ví Màu Gì Để Sự Nghiệp May Mắn Thăng Tiến

Bạn nhớ nối Enable xuống GND nhé 

*
.

#include AccelStepper stepper(1,5,4);// sạc 5 step, sạc pin 4 dirvoid setup() Serial.begin(9600); pinMode(6,OUTPUT); // Enable digitalWrite(6,LOW); // Dặt Enable xuống low để khởi đụng động cơvoid loop() if (stepper.distanceToGo() == 0) //kiểm tra thử động cơ bước tất cả còn đang hoạt động hay không, nếu không hề chạy thì... delay(1000); stepper.moveTo(rand() % 400); //chuyển cho tọa độ 0 - 399 (Random) stepper.setMaxSpeed((rand() % 400) + 200); //chỉnh tốc độ. Stepper.setAcceleration((rand() % 200) + 100); //chỉnh gia tốc. //kiến thức về vận tốc và vận tốc là kỹ năng và kiến thức cơ bạn dạng vật lý lớp 10, vị vậy, các bạn lớp 9 trở xuống hy vọng dùng bộ động cơ bước thì nhớ khám phá khái niệm này nhé. Hehe Serial.println(stepper.distanceToGo()); stepper.run(); // phải tất cả hàm này sống hàm loop cùng với mỗi biến hóa stepper thì nói new chạy được