Thông báo

Collapse
No announcement yet.

hàm sleep() trong vb

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • hàm sleep() trong vb

    em đang làm mạch điều tốc động cơ 1 chiều dùng VB viết cho cổng LPT,có điều khiển được tốc độ rồi nhưng khổ 1 cái là ko như 8051,độ phân giải nhỏ nhất của timer là 1 micro giây,còn hàm sleep bên VB cho PC này độ phân giải là 1 ms...>>lớn qa'.Nên khi dùng PvWM để điều khiển động cơ bị giật quá.Xin mọi ngưoif chỉ cho cách khắc phục điều này.Cầu H em dùng 2 cặp tran D718+B688.
    Cảm ơn!
    Gian Khó Cuộc Đời Nuôi Ta Lớn!
    Giang Hồ Đẫm Máu Dạy Ta Khôn!

    (@_@)______________(@_@)

  • #2
    Nguyên văn bởi toan88_tnt Xem bài viết
    em đang làm mạch điều tốc động cơ 1 chiều dùng VB viết cho cổng LPT,có điều khiển được tốc độ rồi nhưng khổ 1 cái là ko như 8051,độ phân giải nhỏ nhất của timer là 1 micro giây,còn hàm sleep bên VB cho PC này độ phân giải là 1 ms...>>lớn qa'.Nên khi dùng PvWM để điều khiển động cơ bị giật quá.Xin mọi ngưoif chỉ cho cách khắc phục điều này.Cầu H em dùng 2 cặp tran D718+B688.
    Cảm ơn!
    Bạn dùng giải thuật gì để điều tốc động cơ 1 chiều?
    Nếu dùng giải thuật PID thì tần số PID là bao nhiêu? Và tần số lấy mẫu (tần số cập nhật tín hiệu feeckback) là bao nhiêu?
    The goal of power electronics is control the flow of energy from an electrical source to an electrical load with high efficiency, high availability, high reliability, light weight and low cost.

    Comment


    • #3
      mình chỉ dùng pwm+cầu H để điều khiển động cơ thôi,vì hàm sleep() trong VB có độ min là 1ms nên khoản time Toff lớn-->>động cơ bị giật.Ko bít có cách nào khắc phục ko.Trước mình làm vi điều khiển 89s52 thì ngon vì timer có thể tạo Tmin=1micro s
      Gian Khó Cuộc Đời Nuôi Ta Lớn!
      Giang Hồ Đẫm Máu Dạy Ta Khôn!

      (@_@)______________(@_@)

      Comment


      • #4
        Nguyên văn bởi toan88_tnt Xem bài viết
        mình chỉ dùng pwm+cầu H để điều khiển động cơ thôi,vì hàm sleep() trong VB có độ min là 1ms nên khoản time Toff lớn-->>động cơ bị giật.Ko bít có cách nào khắc phục ko.Trước mình làm vi điều khiển 89s52 thì ngon vì timer có thể tạo Tmin=1micro s
        Vậy bạn băm PWM ở tần số bao nhiêu?
        The goal of power electronics is control the flow of energy from an electrical source to an electrical load with high efficiency, high availability, high reliability, light weight and low cost.

        Comment


        • #5
          tần số băm pwm t thay đổi để thay đổi tốc đọ động cơ.với đoạn code như thế này:,phần cứng t dùng 2 chân 4 và 5 của LPT tức bit D2,D3 của thanh ghi dữ liệu.




          Dim toc_do As Integer
          Dim j As Integer
          Dim p As Integer


          Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
          Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
          Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



          Private Sub Form_Load()
          KeyPreview = True
          Timer1.Enabled = False
          Label4.Caption = "B¹n h·y bÊm phÝm b ®Ó b¾t ®Çu,phÝm t ®Ó t¨ng tèc ®é,phÝm g ®Ó gi¶m tèc ®é,phÝm d ®Ó ®¶o chiÒu quay,phÝm k ®Ó kÕt thóc."
          Label6.Caption = "Thêi gian: " & Format(Now, " hh:nn:ss")
          End Sub

          Private Sub Form_Unload(Cancel As Integer)
          Call PortOut(&H378, 0)
          End Sub

          Public Sub quay_thuan(td As Integer) 'chuong trinh con quay thuan voi toc_do=td
          Dim c As Integer
          c = 100 - td
          Dim i As Integer
          Call PortOut(&H378, 4) 'thoi gian xung td=1
          For i = 0 To td Step 1
          Sleep (1)

          Next
          Call PortOut(&H378, 0) 'thoi gian xung td=0
          For i = 0 To c Step 1
          Sleep (1)
          Next

          End Sub


          Public Sub quay_nguoc(td As Integer) 'chuong trinh con quay nguoc voi toc_do=td
          Dim c As Integer
          c = 100 - td
          Dim i As Integer
          Call PortOut(&H378, 8) 'thoi gian xung td=1
          For i = 0 To td Step 1
          Sleep (1)

          Next
          Call PortOut(&H378, 0) 'thoi gian xung td=0
          For i = 0 To c Step 1
          Sleep (1)

          Next

          End Sub

          Private Sub Command1_Click() 'bat dau quay thuan voi toc do tb=50
          Timer1.Enabled = True
          toc_do = 50
          i = 0
          Text1.Text = Val(toc_do)
          End Sub


          Private Sub Command2_Click() 'tang toc_do
          toc_do = toc_do + 5
          If toc_do >= 100 Then
          toc_do = 100
          End If
          Text1.Text = Val(toc_do)
          End Sub

          Private Sub Command3_Click() 'giam toc_do
          toc_do = toc_do - 5
          If toc_do <= 5 Then
          toc_do = 5
          End If
          Text1.Text = Val(toc_do)
          End Sub

          Private Sub command4_Click() 'dao chieu

          j = j + 1
          If j = 10 Then
          j = 0
          End If
          p = j Mod 2

          End Sub


          Private Sub Command5_Click() 'dong chuong trinh va tat dong co
          Call PortOut(&H378, 0)
          End
          End Sub

          Private Sub Form_KeyPress(KeyAscii As Integer) 'chuong trinh goi phim
          If KeyAscii = 98 Then 'phim b:bat dau
          Call Command1_Click
          End If
          If KeyAscii = 116 Then 'phim t:tang
          Call Command2_Click
          End If
          If KeyAscii = 103 Then 'phim g:giam
          Call Command3_Click
          End If
          If KeyAscii = 100 Then 'phim d:dao chieu
          Call command4_Click
          End If
          If KeyAscii = 107 Then 'phim k:ket thuc
          Call Command5_Click
          End If


          End Sub



          Private Sub Timer1_Timer()
          Label6.Caption = "Thêi gian: " & Format(Now, " hh:nn:ss")
          If p = 0 Then

          Call quay_thuan(toc_do)
          Option1.Enabled = True
          Option2.Enabled = False
          End If

          If p = 1 Then

          Call quay_nguoc(toc_do)
          Option2.Enabled = True
          Option1.Enabled = False

          End If

          If toc_do = 5 Then
          Label4.ForeColor = RGB(255, 0, 0)
          Label4.Caption = "B¹n h·y bÊm phÝm t ®Ó t¨ng tèc ®é,phÝm g ®Ó gi¶m tèc ®é,phÝm d ®Ó ®¶o chiÒu quay,phÝm k ®Ó kÕt thóc."
          Else
          If toc_do = 100 Then
          Label4.ForeColor = RGB(255, 0, 0)
          Label4.Caption = "B¹n h·y bÊm phÝm g ®Ó gi¶m tèc ®é,phÝm d ®Ó ®¶o chiÒu quay,phÝm k ®Ó kÕt thóc."
          Else
          Label4.ForeColor = RGB(0, 0, 255)
          Label4.Caption = "B¹n h·y bÊm phÝm t ®Ó t¨ng tèc ®é,phÝm g ®Ó gi¶m tèc ®é,phÝm d ®Ó ®¶o chiÒu quay,phÝm k ®Ó kÕt thóc."
          End If
          End If

          End Sub

          Nhờ bạn xem có cách nào khắc phục hiện tượng giật này ko.
          Cảm ơn vì quan tâm.
          Last edited by toan88_tnt; 21-02-2010, 00:21.
          Gian Khó Cuộc Đời Nuôi Ta Lớn!
          Giang Hồ Đẫm Máu Dạy Ta Khôn!

          (@_@)______________(@_@)

          Comment

          Về tác giả

          Collapse

          toan88_tnt Tìm hiểu thêm về toan88_tnt

          Bài viết mới nhất

          Collapse

          Đang tải...
          X