Arduino điều khiển động cơ bước

     

Mình thấy có rất nhiều bạn hỏi về stepper với cách tinh chỉnh và điều khiển nó. Đồng thời thấy vấn đề điều khiển và tinh chỉnh động cơ bước là 1 vấn đề kinh điển nhưng lại chưa tồn tại trên cùng đồng. Không tính ra, vì tác dụng điểm xã hội khá hay với mình cũng muốn có đá quý nên hôm nay mình sẽ gợi ý rất kỹ với những bạn! thư viện mình sử dụng là tủ sách AccelStepper chứ chưa hẳn thư viện stepper mang định của phauthuathammat.com nên có thể điều khiển đồng thời các stepper với kết hợp với các tủ sách bất đồng điệu khác.

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


Có không ít tài liệu trên mạng nói tới động cơ bước. Chúng ta có thể google nhằm tìm ra nó. Tuy nhiên, mình xin khuyến cáo cho chúng ta một số tư liệu sau để tham khảo.

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


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


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

Ngoài ra, nó còn tồn tại các thông số khác nhưng mà mình sẽ kèm theo ví dụ ví dụ về một số 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 điện thế)2.8V

Trong đó, thông số Rated Current/phase biểu thị dòng điện buổi tối đa cơ mà mỗi pha hoàn toàn có thể nhận được, giả dụ driver điều khiển và tinh chỉnh nào tất cả dòng năng lượng điện mỗi trộn cao hơn nữa thì sẽ hỏng. Nên lựa loại driver cho cái ra giao động 80 - 90% thông số này. Điện trở từng pha là hằng số (bạn xem vào datasheet của động cơ bước mà các bạn mua). Còn con số voltage là hiệu điện thế buổi tối ưu để gia công stepper vận động ổ định (2.0 * 1.4 = 2.8V)


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


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

Nối dây driver, bộ động cơ bước với phauthuathammat.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, sau đó bạn nối dây vào như hình 1 cùng hình 2.

Xem thêm: Bộ Phận Sinh Dục Nữ Đẹp Nhất Thế Giới, Nét Hd Có Video


Nạp code cho phauthuathammat.com


Bạn hấp thụ đoạn code sau mang lại phauthuathammat.com.

// Run a A4998 Stepstick from an phauthuathammat.com UNO.// Paul Hurley Aug năm ngoái - http://www.instructables.com/id/Drive-a-Stepper-Motor-with-an-phauthuathammat.com-and-a-A4988-/int x; #define BAUD (9600)void setup() Serial.begin(BAUD); pinMode(6,OUTPUT); // Enable pin - chân khởi đụng - nối vào GND để giúp đỡ ta bật động cơ bước, nối vô VCC động cơ bước được thả ra. Nôm na: GND = servo.attach, VCC = servo.detach pinMode(5,OUTPUT); // Step pin sạc pinMode(4,OUTPUT); // Dir - sạc pin digitalWrite(6,LOW); // mix Enable lowvoid loop() { digitalWrite(6,LOW); // Đặt Enable làm việc trạng thái LOW digitalWrite(4,HIGH); // Đặt Dir ở 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 mạnh cho bộ động cơ bước bằng vi cách (micro stepping)


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

Nói một biện pháp nôm na, cứ từng chân MS1, MS2, MS3 được nối vô VCC, nó sẽ tăng số cách của động cơ bước lên. Tức thị thay vị hồi xưa bạn chỉ việc quay 200 bước là đươc một vòng. Bây giờ các bạn sẽ phải quay nhiều hơn, thời gian đó sẽ có được độ đúng chuẩn 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 bước 1/16, tức thị với bộ động cơ bước có 200 cách thì ta đã chia nhỏ tuổi mỗi bước ra thành 16 bước => Tổng số cách của đụng cơ hôm nay là 200 * 16 = 3200. Thừa đã đề xuất không nào? demo chạy lấy ví dụ như trên, các bạn sẽ thấy ngay sự không giống biệt. Dẫu vậy lúc này, stepper sẽ hơi nóng, do vậy, nhớ là tản sức nóng nha!


Điều khiển nhiều động cơ bước với tủ sách AccelStepper


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

phauthuathammat.com có hỗ trợ sẵn cỗ thư viện stepper trong tệp tin example. Nhưng nếu bạn đã từng demo thì hẳn biết một điều là, thư viện đó cũng delay như code kia. Nghĩa là trong quy trình động cơ bước hoạt động thì cả chương trình sẽ bắt buộc dừng đợi nó vận động theo (cơ chế này điện thoại tư vấn là cơ chế đồng bộ - sync).

Để điều khiển được nhiều động cơ bước thì họ phải biết ngõ xử lý sự không tương đồng bộ, nghĩa là sao? Nghĩa là phải ghi nhận thay hàm delay bằng phương pháp khác, và đó chính là dùng timer, chính là dùng hàm millis(). Và ý tưởng đó đang được miêu tả trong thư viện AccelStepper, tủ sách này vẫn ứng dụng nguyên tắc xử lý bất đồng hóa (async) để triển khai nên nó - một thư viện cực kỳ 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.

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

*
.

#include AccelStepper stepper(1,5,4);// sạc 5 step, sạc 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 bao gồm còn đang chạy 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ề tốc độ và tốc độ là kỹ năng và kiến thức cơ bản vật lý lớp 10, vì vậy, các bạn lớp 9 trở xuống hy vọng dùng động cơ bước thì nhớ mày mò khái niệm này nhé. Hehe Serial.println(stepper.distanceToGo()); stepper.run(); // phải bao gồm hàm này sinh sống hàm loop cùng với mỗi thay đổi stepper thì nói mới chạy được