Điều khiển động cơ bước bằng visual basic 6.0

1.GIỚI THIỆU ĐỘNG CƠ BƯỚC

1.1.  Giới thiệu và phân loại

1.1.1. Giới thiệu

Động cơ bước là một loại động cơ điện có nguyên lý và ứng dụng khác biệt với đa số các động cơ điện thông thường. Chúng thực chất là một động cơ đồng bộ dùng để biến đổi các tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành các chuyển động góc quay hoặc các chuyển động của rôto có khả năng cố định rôto vào các vị trí cần thiết.

Về cấu tạo, động cơ bước có thể được coi là tổng hợp của hai loại động cơ: Động cơ một chiều không tiếp xúc và động cơ đồng bộ giảm tốc công suất nhỏ.

Hình 1. Động cơ bước

Hình 1. Động cơ bước

                   1.1.2. Phân loại

Động cơ bước có nhiệu loại khác nhau:

-Ðộng cơ biến từ trở

-Ðộng cơ đơn cực

-Ðộng cơ hai cực

-Ðộng cơ nhiều pha

1.2.  Nguyên lý hoạt động

Động cơ bước không quay theo cơ chế thông thường, chúng quay theo từng bước nên có độ chính xác rất cao về mặt điều khiển học.

Chúng làm việc nhờ các bộ chuyển mạch điện tử đưa các tín hiệu điều khiển vào stato theo thứ tự và một tần số nhất định. Tổng số góc quay của rôto tương ứng với số lần chuyển mạch, cũng như chiều quay và tốc độ quay của rôto phụ thuộc vào thứ tự chuyển đổi và tần số chuyển đổi.

2. DRV8825

2.1. DRV8825

 Hình 2 . Drv8825

Hình 2 . Drv8825

2.2. Sơ đồ kết nối điều khiển động cơ bước bằng Drv8825

Hình 3 . Sơ đồ kết nối điều khiển động cơ bước

3. Phần Visual Basic 6.0

3.1. Giao diện VB

– Giới thiệu

– Giao diện chính

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

3.2. Code VB

Dim t As String

Dim step As String

Dim chieu As String

Private Sub cmd_Back_Click()

Form1.Show

Unload Me

End Sub

 

Private Sub cmd_C_Click()

    If MSComm1.PortOpen = False Then

    MsgBox "Da Ket Noi Cong Com"

    With MSComm1

            .CommPort = Val(Trim$(Cmb.Text))

            .Settings = "9600,N,8,1"

            .InBufferSize = 1024

            .InputLen = 0

            .RThreshold = 1

            .SThreshold = 1

            .OutBufferSize = 512

            .InputMode = comInputModeText

    End With

    MSComm1.PortOpen = True

    cmd_D.Enabled = True

    cmd_C.Enabled = False

    cmd_Run.Enabled = True

    Opt_ChieuQuay(0).Enabled = True

    Opt_ChieuQuay(1).Enabled = True

    Opt_Step(0).Enabled = True

    Opt_Step(1).Enabled = True

    Opt_Step(2).Enabled = True

    Opt_Step(3).Enabled = True

    Opt_Step(4).Enabled = True

    End If

End Sub

 

Private Sub cmd_D_Click()

    If cmd_Stop.Enabled = True Then

    MsgBox " Nhan Stop truoc khi ngat ket noi", vbOKCancel

    ElseIf MSComm1.PortOpen = True Then

    MSComm1.PortOpen = False

    MsgBox "Da ngat ket noi voi cong com", vbExclamation + vbOKOnly, " "

    cmd_C.Enabled = True

    cmd_D.Enabled = False

    cmd_Run.Enabled = False

    Opt_ChieuQuay(0).Enabled = False

    Opt_ChieuQuay(1).Enabled = False

    Opt_Step(0).Enabled = False

    Opt_Step(1).Enabled = False

    Opt_Step(2).Enabled = False

    Opt_Step(3).Enabled = False

    Opt_Step(4).Enabled = False

    End If

End Sub

 

Private Sub cmd_Run_Click()

    t = chieu & "B" & step & " X" & txt_SoBuoc.Text & " R"

    MSComm1.Output = t

    lbl_Status.Caption = "Chieu: " & chieu & vbCrLf & "Mode: " & step & vbCrLf & " So buoc: " & txt_SoBuoc.Text

    cmd_Stop.Enabled = True

    cmd_Run.Enabled = False

End Sub

 

Private Sub cmd_Stop_Click()

    cmd_Stop.Enabled = False

    cmd_Run.Enabled = True

    MSComm1.Output = "S"

    lbl_Status.Caption = "Stop"

End Sub

 

Private Sub Command1_Click()

    End

End Sub

 

Private Sub Form_Load()

    cmd_C.Enabled = True

    cmd_D.Enabled = False

    Cmb.Text = "4"

    cmd_Run.Enabled = False

    Opt_ChieuQuay(0).Enabled = False

    Opt_ChieuQuay(1).Enabled = False

    Opt_Step(0).Enabled = False

    Opt_Step(1).Enabled = False

    Opt_Step(2).Enabled = False

    Opt_Step(3).Enabled = False

    Opt_Step(4).Enabled = False

End Sub

 

Private Sub Hsc_SoBuoc_Change()

    txt_SoBuoc.Text = Hsc_SoBuoc.Value

End Sub

 

Private Sub Opt_ChieuQuay_Click(Index As Integer)

    chieu = Left(Opt_ChieuQuay(Index).Caption, 1)

End Sub

 

Private Sub Opt_Step_Click(Index As Integer)

    step = Opt_Step(Index).Caption

End Sub

4. Code arduino

#define EN 2

#define MS1 3

#define MS2 4

#define MS3 5

#define STEP 6

#define DIR 7

String n ;

void setup() {

  Serial.begin(9600);

  pinMode(EN,OUTPUT);

  pinMode (MS1,OUTPUT);

  pinMode (MS2,OUTPUT);

  pinMode (MS3,OUTPUT);

  pinMode(STEP,OUTPUT);

  pinMode(DIR,OUTPUT);

  digitalWrite(EN,HIGH);

}

boolean ChieuQuayIndex(String StrInput){

      boolean Chieu;

      String StrCmd;

      for(int c=0;c<StrInput.length();c++){

         StrCmd=StrInput.substring(c,c+1);

        if(StrCmd == "T" || StrCmd == "t"){

          Chieu=true;

          }

          else if(StrCmd == "N" || StrCmd == "n"){

            Chieu=false;

            }

        }

       return(Chieu);

      }

-------------------------------------------------------------------------------------------------------------------------------

Download code vb6 và arduino

Bài viết các bạn có thể tham khảo:

Viết một bình luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.