Thông báo

Collapse
No announcement yet.

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

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

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

    Nhờ các cao thử chỉ giúp em xem đoạn code sau của em sai ở chỗ nào mà nó không có xung r ơ P1.0 ..P1.3 các bác nhỉ? cảm ơn mọi người đã quan tâm. Quả này chạy thì em post lên mạng khoe mọi người luôn em làm mạch công suất cho động cơ này khá khủng đấy. Mà em lượm được ở hàng đồng nát cái động cơ bước 4A to vật, vẫn chạy tốt.
    Code:
    /*****************_________Chuong trinh dieu khien step motor_________*****************/
    /*****************_________Co cac che do: Tang toc, giam toc, dao chieu, dung._________*****************/
    /*****************_________Thiet ke voi VDK 89S52 va thach anh 24MHz_________*****************/
    /*****************_________Creat by Tuyen:0977817726_________*****************/
    #include <reg52.h>
    #include <stdio.h>
    #define CT_1 P3^0	 //Stop
    #defile CT_2 P3^1	 //Quay thuan
    #defile CT_3 P3^2	 //Quay nguoc
    #defile CT_4 P3^3	 //Tang toc
    #defile CT_5 P3^4	 //Giam toc
    int td = 1000;
    unsigned char M[4]={0x01,0x02,0x04,0x08};           //Moi phan tu cua mang cap nguon cho 1 cuon day
    /////////////    Ham tao tre 0.1ms        ////////
    void delay_10ms(int time)				 
    {
     while(time)
     {
      TMOD = 0x02;         //Timer0 che do 2, 8bit tu nap lai
      TH0 = -100;		   //Tan so xung 10khz
      TR0 = 1;
      while(TF0!);
      TF0 = 0;
      time --;
     }
    }
    //////////   Ham tre     ///////
    void delay(void)
    {
     unsigned char t;
     for(t=0;t<=10000);
    }
    ////////////    Ham tang toc     //////////
    unsigned char tang_toc(void)
    {
     if(CT_4==0)
     {
      while(CT_4==0)
      {;}
      td=td-1000;
      delay();
      if(td<1)
      td=1;
     }
    return(td);
    }
    ///////////////   Ham giam toc    ////////////
    unsigned char giam_toc(void)
    {
     if(CT_5==0)
     {
      while(CT_5==0)
      {
      ;
      }
      td = td +1000;
      delay();
      if(td>=11000)
      td = 10000;
     }
     return(td);
    }
    /////////////// Dieu khien motor quay thuan    ///////////
    void quay_thuan(void)
    {
     int i;
     while(1)
     {
      for(i=0;i<=3;i++)
      {
       P1=M[i];
       delay_10ms(td);
      }
     }
    }
    /////////    Ham dieu khien dong co quay nguoc lai     //////////
    void quay_nguoc(void)
    {
     int i;
     while(1)
     {
      for(i=3;i>=0;i--)
      {
       P1=M[i];
       delay_10ms(td);
      }
     }
    }
    //////////      Dung dong co         ////////////
    void stop(void)
    {
     while(1)
     P1=0x00;
    }
    ///////////////         Ham chon che do cho dong co     ////////////
    unsigned char che_do(void)
    {
     if(CT_1==0) n=1;
     if(CT_2==0) n=2;
     if(CT_3==0) n=3;
     switch(n)
     {
      case 0:{break;}
      case 1:{stop();break;}
      case 2:{quay_thuan();break;}
      case 3:{quay_nguoc();break;}
     }
    }
    //////////         Ham chinh       //////////
    void main (void)
    {
    while(1)
    {
     tang_toc();
     giam_toc();
     che_do();
    }
    }

  • #2
    Ôi! Không ai giúp em a?

    Comment


    • #3
      bạn dùng ISIS 7 Professional mô phỏng thử xem....
      Quang Nhat
      ---------------------------------------
      Yahoo :quangnhat85ls
      Mail :
      Nhận thiết kế và ép nhựa cho đồ điện tử

      Comment


      • #4
        Mình thử rồi bạn à. KHông có xung trên chân P1^0=>P1^3. Bạn có thấy ct mình lỗi chỗ nào không?

        Comment


        • #5
          Mọi người chưa giúp mình cái code trên thì mình làm bằng 555 và 4017 chạy rồi nhưng tốc độ chậm lắm chỉ tầm 30v/phút thôi nhanh hơn là động cơ đứng yên luôn và rú lên. Mình đã nâng điện áp cho động cơ lên đến 24v(trước dùng 12V) rồi mà vẫn không cải thiện. Ai có cao kiến gì không chỉ mình với(Mình sử dụng TIP41C để kích dòng). Động cơ mình dùng khá to do mất nhãn nên khồng biết thông số áp chỉ biết là 1.8o và 4A thôi. Heee chạy rồi vui quá!

          Comment


          • #6
            Ôi mọi người không quan tâm tới vấn đề này hay sao ấy nhỉ? Hay tại em làm về bài này là lạc hậu rồi?

            Comment


            • #7
              cậu nên đưa sơ đồ lên cho mọi người xem thì mới biết được chứ

              Comment


              • #8
                Chương trình có nhiều lỗi quá. Mình sửa qua những chỗ lỗi cho nó có xung trên các chân đã này.

                /*****************_________Chuong trinh dieu khien step motor_________*****************/
                /*****************_________Co cac che do: Tang toc, giam toc, dao chieu, dung._________*****************/
                /*****************_________Thiet ke voi VDK 89S52 va thach anh 24MHz_________*****************/
                /*****************_________Creat by Tuyen:0977817726_________*****************/
                #include <reg52.h>
                #include <stdio.h>
                sbit CT_1= P3^0; //Stop
                sbit CT_2= P3^1 ; //Quay thuan
                sbit CT_3= P3^2 ; //Quay nguoc
                sbit CT_4 =P3^3 ; //Tang toc
                sbit CT_5= P3^4 ; //Giam toc
                int td = 1000;
                int n;
                unsigned char M[4]={0x01,0x02,0x04,0x08}; //Moi phan tu cua mang cap nguon cho 1 cuon day
                ///////////// Ham tao tre 0.1ms ////////
                void delay_10ms(int time)
                {
                while(time)
                {
                TMOD = 0x02; //Timer0 che do 2, 8bit tu nap lai
                TH0 = -100; //Tan so xung 10khz
                TR0 = 1;
                while(!TF0);
                TF0 = 0;
                time --;
                }
                }
                ////////// Ham tre ///////
                void delay(void)
                {
                unsigned char t;
                for(t=0;t<=10000;t++);
                }
                //////////// Ham tang toc //////////
                unsigned char tang_toc(void)
                {
                if(CT_4==0)
                {
                while(CT_4==0)
                {;}
                td=td-1000;
                delay();
                if(td<1)
                td=1;
                }
                return(td);
                }
                /////////////// Ham giam toc ////////////
                unsigned char giam_toc(void)
                {
                if(CT_5==0)
                {
                while(CT_5==0)
                {
                ;
                }
                td = td +1000;
                delay();
                if(td>=11000)
                td = 10000;
                }
                return(td);
                }
                /////////////// Dieu khien motor quay thuan ///////////
                void quay_thuan(void)
                {
                int i;
                while(1)
                {
                for(i=0;i<=3;i++)
                {
                P1=M[i];
                delay_10ms(td);
                }
                }
                }
                ///////// Ham dieu khien dong co quay nguoc lai //////////
                void quay_nguoc(void)
                {
                int i;
                while(1)
                {
                for(i=3;i>=0;i--)
                {
                P1=M[i];
                delay_10ms(td);
                }
                }
                }
                ////////// Dung dong co ////////////
                void stop(void)
                {
                while(1)
                P1=0x00;
                }
                /////////////// Ham chon che do cho dong co ////////////
                unsigned char che_do(void)
                {
                if(CT_1==0) n=1;
                if(CT_2==0) n=2;
                if(CT_3==0) n=3;
                switch(n)
                {
                case 0:{break;}
                case 1:stop();break;
                case 2:quay_thuan();break;
                case 3:quay_nguoc();break;
                }
                }
                ////////// Ham chinh //////////
                void main (void)
                {
                while(1)
                {
                tang_toc();
                giam_toc();
                che_do();
                }
                }
                Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                http://diencongnghiep360.com/
                http://tudienhathe.vn/

                Comment


                • #9
                  http://www.mediafire.com/?ssg4k14d918i0d6
                  Mình đã chỉnh khá ổn rồi (Mô phỏng). Mấy hôm nữa làm mạch thật xem ntn. hi
                  Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                  http://diencongnghiep360.com/
                  http://tudienhathe.vn/

                  Comment


                  • #10
                    Cảm ơn các bạn nhiều! Mình làm mạch công xuất dùng TIP41 nhưng chưa ăn thua. Nóng kinh khủng luôn. Mình nâng nguồn lên 30v mà khi chạy chậm thì được nhưng tốc độ cao là mất bước ngay. Động cơ rú lên và đứng ì lại. Có bạn nào có ý kiến gì để khắc phục cái vụ mất bước này không?

                    Comment


                    • #11
                      Cái này có vẻ hơi khó thì phải. Mình vừa hỏi ông anh, ông bảo là ko phải là cứ tăng tần số bước cho motor là nó quay nhanh hơn đâu, mà còn phụ thuộc vào dòng điện qua động cơ gì nữa cơ.hic. Ông bảo nếu động cơ cỡ nhỏ dùng L297&298 thì đk dễ thôi.
                      Ai có kinh nghiệm giúp anh em với.
                      Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                      http://diencongnghiep360.com/
                      http://tudienhathe.vn/

                      Comment


                      • #12
                        Mình cũng đọc qua thấy có nói là phải nâng áp lên. Nhưng mình nâng áp lên rồi(30v) mà vẫn không ăn thua. Dòng qua nó thì mình sử dụng TIP41(Con này cho dòng tối đa 6A) nên mình nghĩ dòng đã cấp đủ. Con Steep motor của mình chịu dùng 4A.

                        Comment


                        • #13
                          Bạn nâng áp vừa vừa thôi nếu không là đi luôn con động cơ đấy. Mình đọc thấy rằng phải nâng áp từ từ hình răng cưa (chopper) nâng điện áp tơi max sao cho đạt Imax của cuộn dây (như ghi trên động cơ)thì lại hạ điện áp xuống, cứ như vậy thì momen và tốc độ mới đạt max. hic. Mình cũng đang rất quan tâm tới vấn đề này. Nếu bạn làm được thì bảo tớ với nhé.
                          Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                          http://diencongnghiep360.com/
                          http://tudienhathe.vn/

                          Comment


                          • #14
                            Mình đọc thấy bảo step motor có thể chịu điện áp lớn hơn nhiều ghi trên nó mà. Mình thấy ghi 2.3V mà mình cho 30V vẫ chạy cậu a. Liệu có sai không nhỉ. Nhưng mình nâng trực tiếp luôn. Chứ không nâng the kiểu hàm mũ mình cắm thẳng điện 30V luôn Hay như vậy là khồng được nhỉ để mình thử xem sao nha. A mà cậu có cách nào để nâng áp theo kiểu chopper không? Mình nghĩ cho biến trở là không được.

                            Comment


                            • #15
                              Theo như con động cơ bước của mình trước đây thì trên nhãn của nó là ghi cấp 12V, nhưng mà khi chạy thì mình chir cấp có 5V thôi,và mình thay đổi tốc độ bằng cách thay đổi tần số đầu vào điều khiển,, quay nhanh kinh khủng bạn ạ, mình hiển thị số vòng quay của nó trên led 7 thanh thì thấy 1 phút nó quay nhanh nhất là được khoảng 300-350 vòng, nói chung là ở tần số trong dải cố định thì thằng động cơ bước còn quay được chứ ở tần số nhỏ quá hay lớn quá thì nó đứng yên và kêu ầm ầm. do nó bị trượt ở tần số cao và bị mất bước, chắc là còn do cộng hưởng từ nữa. Con của bạn cũng thế, đừng có cấp nguồn lớn là die đấy

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X