Báo cáo điều khiển động cơ bước bằng Arduino có code tham khảo

7 38 0
Báo cáo điều khiển động cơ bước bằng Arduino có code tham khảo

Đang tải... (xem toàn văn)

Thông tin tài liệu

Sơ đồ mạch điều khiển động bước Arduin Thành phần bắt buộc • • • • • • Arduino UNO IC điều khiển động L293D Động bước lưỡng cực Nguồn điện (phù hợp với động bước bạn) Breadboard Kết nối dây Giới thiệu ngắn gọn Động bước Như đề cập trước đó, Động bước loại Động DC quay theo bước rời rạc Do thiết kế độc đáo chúng, động bước điều khiển để định vị xác mà khơng cần phản hồi Một động bước điển hình có nhiều cuộn dây chia thành pha Khi pha cấp điện theo thứ tự, rôto động bước quay theo bước Về bản, có ba loại động bước: Động bước có điện trở biến thiên (VR), Động bước nam châm vĩnh cửu (PM) Động bước lai Dựa cuộn dây stato, động bước phân loại thành Động bước lưỡng cực Động bước đơn cực Chúng không vào chi tiết loại động bước điều quan trọng phải xác định xem động bước bạn loại lưỡng cực hay đơn cực Điều do, phương pháp dẫn động cho động bước khác Ví dụ, mạch điều khiển động bước đơn cực thực với mạch dựa bóng bán dẫn đơn giản IC bóng bán dẫn Darlington ULN2003A Nhưng trường hợp động bước lưỡng cực, cần cài đặt trình điều khiển kiểu cầu H IC điều khiển động L293D Hình ảnh sau cho thấy động bước lưỡng cực, động bước đơn cực dây động bước đơn cực dây Hoạt động dự án Điều khiển động bước đơn giản sử dụng Arduino UNO IC điều khiển động L293D thiết kế dự án Hoạt động dự án giải thích Động bước sử dụng dự án Động bước loại Bipolar PMH (Permanent Magnet Hybrid) Vì động lưỡng cực nên có dây tương ứng với cực cuối hai cuộn dây dây kết nối với chân đầu IC điều khiển động L293D Để điều khiển động bước, sử dụng kỹ thuật gọi "Bước nửa bước" Động sử dụng dự án có 200 bước Với kích thích bước pha tức cấp điện cho pha thời điểm, đạt vịng quay 200 bước bình thường với mức tiêu thụ điện Kích thích bước hai pha kỹ thuật khác hai pha cung cấp lượng thời điểm Với kỹ thuật này, số bước khơng thay đổi so với kích thích pha mô-men xoắn tốc độ tăng lên đáng kể Nhưng nhược điểm địi hỏi sức mạnh gấp đơi Hình ảnh sau cho thấy hoạt động dựa bước phương pháp kích từ pha hai pha Có kỹ thuật khác gọi Half Stepping Đây kết hợp kích thích pha hai pha Số bước tăng gấp đơi tức đạt nửa góc bước Vì vậy, với nửa bước, tăng gấp đơi độ phân giải với hoạt động mượt mà Hình ảnh minh họa phương pháp kích thích bước “Half Stepping” Như đề cập trước đó, góc bước động sử dụng dự án 1,80 tức 200 bước cho kích thích tồn bước Để tăng độ phân giải (gấp đôi độ phân giải), chúng tơi sử dụng kích thích nửa bước đạt số lượng 400 bước Để kiểm soát bước, chúng tơi sử dụng hình nối tiếp Trong chương trình, vịng quay khơn ngoan đồng hồ, ký hiệu '+' định vịng quay khơn ngoan đồng hồ, dấu '-' sử dụng Sau chọn hướng, nhập trực tiếp số bước đâu khoảng từ đến 400 Code tham khảo const int out1 = 4; const int out2 = 3; const int out3 = 5; const int out4 = 2; int i=0; int negative=0; int positive=0; char temp_print=0; char temp_print1=0; int led=13; void setup() { pinMode(out1, OUTPUT); pinMode(out2, OUTPUT); pinMode(out3, OUTPUT); pinMode(out4, OUTPUT); pinMode(led,OUTPUT); digitalWrite(out1,LOW); digitalWrite(out2,LOW); digitalWrite(out3,LOW); digitalWrite(out4,LOW); digitalWrite(led,LOW); Serial.begin(9600); } void loop() { if(temp_print1==1) { Serial.println("."); delay(1000); Serial.println("."); delay(1000); Serial.println("."); delay(1000); Serial.println("."); delay(1000); Serial.println("."); delay(1000); Serial.println("."); delay(1000); Serial.println("."); Serial.println("calibration completed "); Serial.println("Stepper Motor Ready"); temp_print1=temp_print1+1; } if(temp_print==0) { Serial.println("Enter the dummy DIRECTION & STEPS for calibration"); temp_print=temp_print+1; temp_print1=temp_print1+1; } abc: Serial.print("Direction = "); while(Serial.available()==false); char temp = Serial.read(); if(temp=='+') { Serial.println(temp); Serial.print("Steps = "); while(Serial.available()==false) { digitalWrite(led,HIGH); delay(50); digitalWrite(led,LOW); delay(50); } int val = Serial.parseInt(); Serial.println(val); if(val>=0 && val0;a ) { if(negative==1) { if(i==7) i=0; else a=a+1; i=i+1; negative=0; } positive=1; if(i==0) { digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digita lWrite(out4,LOW);delay(60); } else if(i==1) { digitalWrite(out1,HIGH);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digit alWrite(out4,LOW);delay(60); } else if(i==2) { digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digita lWrite(out4,LOW);delay(60); } else if(i==3) { digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,HIGH);digit alWrite(out4,LOW);delay(60); } else if(i==4) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digita lWrite(out4,LOW);delay(60); } else if(i==5) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digita lWrite(out4,HIGH);delay(60); } else if(i==6) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digital Write(out4,HIGH);delay(60); } else if(i==7) { digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digita lWrite(out4,HIGH);delay(60); } if(i==7) {i=0;continue;} i++; } } else { goto abc; } digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWr ite(out4,LOW);delay(50); val=0; } else if(temp=='-') { Serial.println(temp); Serial.print("Steps = "); while(Serial.available()==false) { digitalWrite(led,HIGH); delay(50); digitalWrite(led,LOW); delay(50); } int val = Serial.parseInt(); Serial.println(val); if(val>=0 && val0;a ) { if(positive==1) { i=i-1; positive=0; a=a+1; } negative=1; if(i==0) { digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digita lWrite(out4,LOW);delay(60); } else if(i==1) { digitalWrite(out1,HIGH);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digit alWrite(out4,LOW);delay(60); } else if(i==2) { digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digita lWrite(out4,LOW);delay(60); } else if(i==3) { digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,HIGH);digit alWrite(out4,LOW);delay(60); } else if(i==4) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digita lWrite(out4,LOW);delay(60); } else if(i==5) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digita lWrite(out4,HIGH);delay(60); } else if(i==6) { digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digital Write(out4,HIGH);delay(60); } else if(i==7) { digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digita lWrite(out4,HIGH);delay(60); } if(i==0) {i=7;continue;} i ; } } else { goto abc; } digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWr ite(out4,LOW);delay(50); val=0; } else goto abc; } ... trình điều khiển kiểu cầu H IC điều khiển động L293D Hình ảnh sau cho thấy động bước lưỡng cực, động bước đơn cực dây động bước đơn cực dây Hoạt động dự án Điều khiển động bước đơn giản sử dụng Arduino. .. cửu (PM) Động bước lai Dựa cuộn dây stato, động bước phân loại thành Động bước lưỡng cực Động bước đơn cực Chúng không vào chi tiết loại động bước điều quan trọng phải xác định xem động bước bạn... IC điều khiển động L293D Để điều khiển động bước, sử dụng kỹ thuật gọi "Bước nửa bước" Động sử dụng dự án có 200 bước Với kích thích bước pha tức cấp điện cho pha thời điểm, đạt vịng quay 200 bước

Ngày đăng: 06/01/2022, 21:12

Mục lục

    Sơ đồ mạch điều khiển động cơ bước bằng Arduin

    Thành phần bắt buộc

    Giới thiệu ngắn gọn về Động cơ bước

    Hoạt động của dự án

Tài liệu cùng người dùng

Tài liệu liên quan