Thông báo

Collapse
No announcement yet.

giúp đỡ về điều khiển servo

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

  • giúp đỡ về điều khiển servo

    con atmega8 chi co 2 kênh pwm làm sao để điều khiển dc 8 động cơ servo nhi...loại em dùng là Servo SG90????

  • #2
    Nguyên văn bởi saugiacmo Xem bài viết
    con atmega8 chi co 2 kênh pwm làm sao để điều khiển dc 8 động cơ servo nhi...loại em dùng là Servo SG90????
    Điều khiển Servo là phát xung vuông.
    Nhà phân phối, đại lý bán biến tần,PLC,HMI,AC Servo... Delta

    Mr.Quỳnh 0978706839

    Comment


    • #3
      nghĩa là chỉ cần em thay đổi trạng thái các chân thi điều khiển dc hả anh....

      Comment


      • #4
        Nếu ko cần điều khiển 1 lúc nhiều servo với nhiều tần số khác nhau thì cứ on off các port bình thường của atmega8 tạo xung PWM đơn giản là được.
        Làm sao mà bạn dám nói là không làm được khi bạn chưa từng thử một lần nào.
        Ngay cả khi bạn đã làm 1 lần và thất bại bạn cũng không có quyền nói là không làm được vì bạn chưa làm lần thứ 2,3...

        Comment


        • #5
          vâng để em thử cảm ơn các bác nhiều

          Comment


          • #6
            Loại servo này điều khiển bằng xung có tần số tầm 50Hz, độ rộng xung thay đổi từ 1-2ms. Có thể dùng 1 timer để điều khiển cùng 1 lúc 8 servo này. Ý tưởng như sau:
            - ví dụ servo 1 có chu kỳ là 1.5ms thì đầu tiên mới khởi tạo ta cho thời gian tràn timer là 1.5ms
            - sau khi timer tràn, trong ngắt timer ta chỉnh lại thời gian tràn timer là chu kỳ của servo 2
            - cứ tiếp tục như vậy, trong ngắt timer tiếp theo ta lại chỉnh thời gian tràn timer là chu kỳ của servo 3
            - làm tương tự đến servo thứ 8
            - sau khi xong servo thứ 8 thì ta sẽ cho một ngắt timer cuối cùng để đảm bảo tần số điều khiển là 50Hz, thời gian tràn timer cuối cùng = 20ms (50Hz) - tổng thời gian tràn timer (từ servo 1 - servo 8)
            - lặp lại quá trình trên từ trên xuống dưới để cập nhập độ rộng xung điều khiển

            Comment


            • #7
              Cái này là code ngắt timer dùng trong MSP430, bác tham khảo nhé (cái này điều khiển có 4 servo thôi) 8 servo tương tự:
              // Timer A0 interrupt service routine
              #pragma vector=TIMER0_A0_VECTOR
              __interrupt void Timer_A (void)
              {
              counter++; // Increase counter
              if(counter == 5)
              counter = 0; // Counter range is 0-4, the last count is used to add 20ms delay

              P2OUT &= ~0x0F; // Clear ports

              if(counter == 4)
              {
              CCR0 = 20000 - (saveSignal[0] + saveSignal[1] + saveSignal[2] + saveSignal[3]); // Period = 20ms
              }
              else
              {
              P2OUT |= pinOn[counter]; // Set port of the current signal
              CCR0 = pcmSignal[counter]; // Set time for the current signal
              saveSignal[counter] = pcmSignal[counter];
              }
              }

              Comment


              • #8
                cảm ơn các bác.để em thử mấy cách xem sao

                Comment


                • #9
                  mấy anh ơi! chỉ cách em điều khiển con servo SG90 đó nha! em điều khiển 1 con thôi! điều khiển về góc 0 độ và 90 độ là được! em mong nhận được câu trả của các anh! em cảm ơn nhiều!

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X