Thông báo

Collapse
No announcement yet.

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

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

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

    Tôi thấy có nhiều bạn hỏi tôi về lập trình điều khiển động cơ bước bằng AVR. Nên tôi xin post lên đây 1 project đơn giản để cùng thảo luận:
    Các bạn xem file mô phỏng và kết quả ở kế dưới:
    Attached Files
    Last edited by pavo_lusa; 26-03-2009, 23:26.
    :-)

  • #2
    Ghi chú:
    Trong project này tôi dùng Led-bargraph để mô phỏng tác động của stepper-motor lên đối tượng điều khiển.
    Ví dụ: dùng motor để điều khiển vị trí của băng truyền, hoặc điều khiển vị trí tờ giấy trong máy in ... Khi đó, góc quay của stepper-motor sẽ tương ứng với vị trí của đối tượng điều khiển.
    :-)

    Comment


    • #3
      Code C cho chương trình được viết trên CodeVisionAVR như sau:

      /**********************************************
      Project : Stepper-motor
      Version : 1.0
      Date : 26.03.2009
      Author : Pavo_lusa

      Chip type : ATmega16
      Program type : Application
      Clock frequency : 1,000000 MHz
      Memory model : Small
      External SRAM size : 0
      Data Stack size : 256
      ************************************************** ***/


      #include <mega16.h>
      #include <io.h>
      #include <delay.h>

      #define BLUE PORTB.0
      #define BLACK PORTB.1
      #define RED PORTB.2
      #define YELLOW PORTB.3

      void main(char a)
      {
      DDRB = 0xFF;
      PORTB = 0x00;

      DDRD = 0xFF;
      PORTD = 0xFF;
      while (1)
      {
      unsigned int i = 0;

      if(a==0) //dich sang trai 1 na^c
      {
      for(i=0;i<=8;i++)
      {
      PORTB = BLUE;
      BLUE = 1;
      delay_ms(100);
      BLUE = 0;

      BLACK = 1;
      delay_ms(100);
      BLACK = 0;

      RED = 1;
      delay_ms(100);
      RED = 0;

      YELLOW = 1;
      delay_ms(100);
      YELLOW = 0;

      PORTD = PORTD&(PORTD<<1);
      }
      a=1;
      }

      else { //dich sang phai 1 na^c
      for(i=8;i>=1;i--)
      {
      YELLOW = 1;
      delay_ms(100);
      YELLOW = 0;

      RED = 1;
      delay_ms(100);
      RED = 0;

      BLACK = 1;
      delay_ms(100);
      BLACK = 0;

      BLUE = 1;
      delay_ms(100);
      BLUE = 0;

      if(PORTD == 0x00)
      {
      PORTD = PORTD|(0x80);
      }
      else
      PORTD = PORTD|(PORTD>>1);
      };
      a=0;
      };


      };
      }

      Download Code trong file kèm dưới đây
      Attached Files
      Last edited by pavo_lusa; 26-03-2009, 23:30.
      :-)

      Comment


      • #4
        Ghi chú:
        - Blue, Black, Red, Yellow là 4 đầu ra của động cơ.
        - Để chương trình làm việc, bạn phải có file io.h và delay.h (bạn có thể tải file kèm theo của tôi kèm theo dưới đây)
        Attached Files
        Last edited by pavo_lusa; 26-03-2009, 23:31.
        :-)

        Comment


        • #5
          Đi sâu vào phân tích tín hiệu điều khiển stepper-motor, tôi xin post lên đây Code và kết quả mô phỏng(hình kế dưới) bằng phần mềm VMLAB - một phần mềm rất hữu dụng để mô phỏng tín hiệu điều khiển:

          ; ************************************************** **********
          ; project for Driving stepper motor with a ATmega16
          ; Author : pavo_lusa
          ; ************************************************** *********
          .MICRO "ATmega16"
          .TOOLCHAIN "GENERIC"
          .TARGET "stepper.hex" ;
          .COFF "stepper.cof" ;
          .SOURCE "stepper.c" ;
          ;.TRACE
          .CLOCK 1meg
          .POWER VDD = 5 VSS = 0
          ; ================================================== ========
          ; LP Filter
          ;R1 DAC PD5 500k; filter resistor
          ;C10 DAC VSS 10n; filter CAP
          D1 vDD A;
          R1 A Pd0 100;
          D2 Vdd B;
          R2 B PD1 100;
          D3 Vdd C;
          R3 C PD2 100;
          D4 Vdd D;
          R4 D PD3 100;
          D5 Vdd E;
          R5 E PD4 100;
          D6 Vdd F;
          R6 F PD5 100;
          D7 Vdd G;
          R7 G PD6 100;
          D8 Vdd H;
          R8 H PD7 100;
          ; ================================================== =
          ; Windows Terminal simulation in VMLAB CONTROL Panal
          ;X1 TTY(115200 8) PD0 PD1
          ; ================================================== =
          ; Signals that will be ploted in SCOPE window
          .plot v(PB0) V(PB1) V(PB2) V(PB3)
          .plot v(PD0) v(PD1) v(PD2) v(PD3) v(PD4) v(PD5) v(PD6) v(PD7)
          Attached Files
          Last edited by pavo_lusa; 26-03-2009, 23:33.
          :-)

          Comment


          • #6
            Lưu ý :khi thiết kế mạch thực tế: Cần cách ly mạch logic khỏi mạch công suất.
            Lý do: Mạch logic làm việc với tín hiệu dưới 5V, trong khi đó mạch công suất của động cơ có thể làm việc với 12V, 15V hay 32V ... Điện áp này và dòng dội ngược của động cơ có thể làm hỏng mạch logic.
            Giải pháp: Bạn có thể lắp mạch cách ly động cơ dùng L297 và L298 như hình kế dưới. (trong thư viện ví dụ của Proteus cũng có 1 ví dụ về phần này).Bạn có thể download file mô phỏng kế dưới
            Attached Files
            Last edited by pavo_lusa; 26-03-2009, 23:38.
            :-)

            Comment


            • #7
              Dưới đây là tất cả các file cần thiết để thực hiện project này. Các bạn download về, giải nén rồi thực hiện thử. Có vấn đề gì thì cứ nêu ra, tôi sẽ giải đáp cặn kẽ sau.
              Chúc các bạn thành công!
              Pavo_lusa
              Attached Files
              Last edited by pavo_lusa; 26-03-2009, 22:39.
              :-)

              Comment


              • #8
                Thấy bạn pavo_lusa hăng hái quá mình cũng xin post project của mình lên cho các bạn thêm nhiều tư liệu. Ở đây mình điều khiển vi bước qua máy tính.
                http://mega.1280.com//file/M81U4GY2/
                http://mega.1280.com//file/0ZIDKK2A/
                http://mega.1280.com//file/B1MEIWVL/
                yêu cầu máy tính cài VC++2005,labview8.5
                chúc thành công, bảo trọng.

                Comment


                • #9
                  Anh "pavo_lusa" ơi,
                  Em tưởng 4 dây điều khiển là: RED, YELLOW, ORANGE, BLUE

                  Comment


                  • #10
                    Nguyên văn bởi huuhuy1987 Xem bài viết
                    Anh "pavo_lusa" ơi,
                    Em tưởng 4 dây điều khiển là: RED, YELLOW, ORANGE, BLUE
                    Chỉ là cách quy ước thôi em. Chủ yếu là cái mạch. Gắn đúng chân và lập trình cho đúng bit là ok.
                    :-)

                    Comment


                    • #11
                      bạn dùng mạch điều khiển bằng L297 xem sao nhé (hình kèm theo)
                      Attached Files
                      :-)

                      Comment


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

                        Chào các bạn.
                        Mình có ý tưởng như thế này. Mình nhập số bước quay của động cơ bước vào 1 mãng (ví dụ a[i+1]-a[i] để có số bước), tùy theo số bước mà điều khiển tốc độ quay nhanh hay chậm. Bạn nào hứng thú thì góp ý cho mình với.

                        Comment


                        • #13
                          Nguyên văn bởi trch Xem bài viết
                          Thấy bạn pavo_lusa hăng hái quá mình cũng xin post project của mình lên cho các bạn thêm nhiều tư liệu. Ở đây mình điều khiển vi bước qua máy tính.
                          http://mega.1280.com//file/M81U4GY2/
                          http://mega.1280.com//file/0ZIDKK2A/
                          http://mega.1280.com//file/B1MEIWVL/
                          yêu cầu máy tính cài VC++2005,labview8.5
                          chúc thành công, bảo trọng.
                          Bác giải thích nguyên lý chạy vi bước giúp em với?
                          Attached Files
                          Quang Nhat
                          ---------------------------------------
                          Yahoo :quangnhat85ls
                          Mail :
                          Nhận thiết kế và ép nhựa cho đồ điện tử

                          Comment


                          • #14
                            Vâng đúng rồi, Em cũng điều khiển được rùi.
                            Căm ơn anh

                            Comment


                            • #15
                              Thank "pavo_lusa"
                              E điều khiển đc rùi

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • mèomướp
                                Trả lời cho Công thức điện tử
                                bởi mèomướp
                                Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                hôm nay, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                hôm nay, 20:31
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                Ok , thanks bác đã chỉ...
                                hôm nay, 15:06
                              • nguyendinhvan
                                Công thức điện tử
                                bởi nguyendinhvan
                                Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                Chập thì thay. Cháy thì tháo
                                Làm thì láo. Báo thì hay
                                May thì khoe. Rủi thì bỏ
                                Thành tích nhỏ. Báo thành to
                                Làm cho có. Báo chi li
                                Sai cả li. Báo
                                ...
                                hôm nay, 00:35
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                Hôm qua, 22:31
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                Hôm qua, 22:14
                              • bactho
                                Trả lời cho Tự làm máy đo Cuộn cảm
                                bởi bactho
                                Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                Hôm qua, 21:48
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                Hôm qua, 21:43
                              • bactho
                                Trả lời cho các bạn giúp mình về file HEX với!!!
                                bởi bactho
                                Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                Hôm qua, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                Hôm qua, 20:43
                              Đang tải...
                              X