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

  • #16
    Em muốn trích nguyên văn bài của ai đó, rùi trả lời thì làm thế nào vậy?
    Cảm ơn cả nhà!!!

    Comment


    • #17
      Nguyên văn bởi pavo_lusa Xem bài viết
      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:
      cảm ơn bạn nhiều

      Comment


      • #18
        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.
        Mọi người đã down được các link này rồi thì up lại cho em với. Thanks!
        WS:
        Blog:

        Comment


        • #19
          Nguyên văn bởi pavo_lusa Xem bài viết
          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
          chương trình của bạn thế này thì mô-tơ chạy chậm lắm nhỉ, 100ms/bước. các bạn ơi có mô-tơ bước nào mô men xoắn cỡ 50kgf.cm không nhỉ.
          Chuyên thiết kế mạch điều khiển, lắp đặt cơ khí, ĐT: 0913059995.

          Comment


          • #20
            a pavo_lusa cho e hỏi cái nhé: a có làm điều khiển motor-pwmservo or motor-servo thì post lên e tham khảo với

            Comment


            • #21
              Thanks ! Mình đang cần code để tham khảo

              Comment


              • #22
                các bạn ơi,mình đang rất cần những tài liệu để thiết kế điều khiển RObot 6 bậc tự do.Mình là dân cơ khí chế tạo,chưa bao giờ động đến mấy thứ này nên chẳng biết gì hết.Kỳ này làm đồ án tốt nghiệp dính vào Robot,đang mắc phần điều khiển.Rất mong được cả nhà trợ giúp.hihi

                Comment


                • #23
                  Ai điều khiển đc vi bước rồi nhỉ ???

                  Comment


                  • #24
                    Nguyên văn bởi pavo_lusa Xem bài viết
                    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
                    Cho mình hỏi.Nếu muốn quay motor bước quay 1 góc nhất định theo tín hiệu cảm biết thì code viết thế nào ( giúp mình với vì đang làm đồ án )
                    Ví dụ tín hiệu cảm biến vào là tín hiệu điện 0 - 5V
                    nếu điện nhỏ hơn 0.5 v thi ở góc 0 độ
                    nếu điện lớn hơn 0.5v thì 180 độ sau đó dừng
                    nếu điện vào nhỏ hơn 0.5V thi lại quay về 0 độ

                    Comment


                    • #25
                      Nguyên văn bởi truongnbjh Xem bài viết
                      Cho mình hỏi.Nếu muốn quay motor bước quay 1 góc nhất định theo tín hiệu cảm biết thì code viết thế nào ( giúp mình với vì đang làm đồ án )
                      Ví dụ tín hiệu cảm biến vào là tín hiệu điện 0 - 5V
                      nếu điện nhỏ hơn 0.5 v thi ở góc 0 độ
                      nếu điện lớn hơn 0.5v thì 180 độ sau đó dừng
                      nếu điện vào nhỏ hơn 0.5V thi lại quay về 0 độ
                      Vì điều khiển động cơ bước bằng xung cấp vào cho động cơ, nên việc đầu tiên là xác định số bước của động cơ quay hết 1 vòng là bao nhiêu. Sau đó thì viết các chương trình con khác nhau như: Chương trình con phát xung để động cơ quay thuận góc 180 độ, chương trình con quay ngược góc 180 độ...Khi xử lý tín hiệu vào từ cảm biến xong, tùy theo đó mà gọi các chương trình con tương ứng.
                      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


                      • #26
                        Nguyên văn bởi vietthanh123 Xem bài viết
                        Vì điều khiển động cơ bước bằng xung cấp vào cho động cơ, nên việc đầu tiên là xác định số bước của động cơ quay hết 1 vòng là bao nhiêu. Sau đó thì viết các chương trình con khác nhau như: Chương trình con phát xung để động cơ quay thuận góc 180 độ, chương trình con quay ngược góc 180 độ...Khi xử lý tín hiệu vào từ cảm biến xong, tùy theo đó mà gọi các chương trình con tương ứng.
                        ĐOng cơ của e 24 bước.Bác giúp em code luôn đc không. em yếu lập trình quá ( em dung ATmega8)
                        Last edited by truongnbjh; 03-10-2013, 13:16.

                        Comment


                        • #27
                          Nguyên văn bởi pavo_lusa Xem bài viết
                          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
                          nếu dung chỉ L298 có được không anh ơi.nếu có thi đấu từ ATmega8 ra ntn chỉ e với

                          Comment


                          • #28
                            Nguyên văn bởi truongnbjh Xem bài viết
                            nếu dung chỉ L298 có được không anh ơi.nếu có thi đấu từ ATmega8 ra ntn chỉ e với
                            Tất nhiên là được bạn ah, nhưng không nên vì bộ L297 còn có xung chopper tạo ra lực hãm nưa -> cái này khá phức tạp nhe. nên theo đồng bộ thì hơn.
                            Mình trước dùng nhiều L297-L298 nhưng giờ mình chủ yếu chuyển sang module THB7128 rồi, dòng 3A, Chạy ngon không ồn!
                            Mình cũng dùng atmega8 nhé!

                            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

                            Đang tải...
                            X