Cần giúp Điều khiển động cơ DC Servo dùng PIC16f887

mta_cdt

Super Moderator
Thành viên BQT
#11
dạ, em cũng chưa hình dung là cánh tay đó ra sao nữa, thầy kêu về tìm hiểu động cơ rồi chọn động cơ, xong rồi mới đặt mô hình, làm đúng yêu cầu của thầy, cảm ơn anh, hôm nào em hỏi tiếp ah! :D
Thế thì thầy chú hơi ngược đời, từ yêu cầu cụ thể của đề tài thiết kế các cơ cấu cho phù hợp xong rùi mới chọn được động cơ chứ nhỉ. Ví dụ như 1 cần kéo 1 cái nặng khoảng hơn 10 kg mà chọn cái động cơ bé bằng 3 ngón tay thì ...
 

tronghuu117

Học sinh trung cấp
#12
Thế thì thầy chú hơi ngược đời, từ yêu cầu cụ thể của đề tài thiết kế các cơ cấu cho phù hợp xong rùi mới chọn được động cơ chứ nhỉ. Ví dụ như 1 cần kéo 1 cái nặng khoảng hơn 10 kg mà chọn cái động cơ bé bằng 3 ngón tay thì ...
dạ không ccần, cũng vừa thôi anh ah, yêu ccầu là, khi kéo chuột trên màn hình máy tính, màn hình mô phổng động cơ, thì động cơ thực tế hoạt động y như vậy??? có quá khó không anh?
 

chien92

Học sinh phổ thông
#13
Mã:
*/
#include<htc.h>
__CONFIG(HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT
& BORDIS & IESODIS & FCMDIS & LVPDIS);
char dem;
char value,value1,value2,value3;
int count;
//MAIN
void main(){
    ANSEL =ANSELH=0; // THIET LAP CHAN NGO RA
    TRISC1=TRISC2=TRISC3=TRISC4=0;
    T0CS=0;            // DEM XUNG NOI, SU DUNG TIMER 0 LA TIMER DINH THOI
    PSA=0;             // CHON BO PRESCALER CHO TIMER0
    PS2=0;            // CHON TI LE CHIA LA 1:2
    PS1=0;
    PS0=0;
    TMR0=1;           // GAN TRUOC GIA TRI LA 1
    //NGAT TIMER 0
    T0IF=0;
    T0IE=1;
    GIE=1;
    while(1)
    {
         value=9;
         value1=18;
          value2=12;
          value3=20;
    }
}
//Chuong trinh ngat
void interrupt ngat ()
{
    if (T0IF && T0IE)
    {
        T0IF=0;
        TMR0=1;
        dem++;
        if (dem >= 200)  // 200*0,1=20ms (xung 50Hz)
           {
             dem=0;   // reset bien dem
             RC1=1;   //bat cong
             RC2=1;
             RC3=1;
             RC4=1;
           }
        if (dem >= value)RC1=0;  //tat cong
        if (dem >= value1)RC2=0;
        if (dem >= value2)RC3=0;
        if (dem >= value3)RC4=0;
    }
}
/*
TINH TOAN THOI GIAN VOI TIMER0:
GIA SU FOSC = 20MHz
CAN DINH THOI GIAN LA 0.1mS,
CU SAU 0.0001S SE DOI TRANG THAI

TINH TOAN
DINH THOI GIAN >> DUNG XUNG NOI (TIMER)
FOSC=20MHz >> TAN SO THUC THI LENH LA 5.000.000 LENH/S (FOSC/4)
DINH 0.0001S >> DEM 500 CHU KY MAY
CHON TI LE CHIA TRUOC (PRESCALER) LA 1:2 (SO CAO NHAT MA CHIA RA KHONG BI LE)
>> DEM 500 / 2 = 250 DON VI
>> CAN NAP TRUOC CHO TMR0 = 256 - 250 = 1
 
Sửa lần cuối bởi điều hành viên:

phong

Học sinh phổ thông
#15
Chào các bác, em đang làm mô hình môn học về đề tài Thiết kế hệ thống điều khiển cho hệ dẫn hướng cho máy CNC . Hiện tại nhóm em đã làm xong phần thiết kế, lắp ráp chế tạo xong phần cơ khí, do không có thế mạnh về mảng mạch điện nên đang có nhu cầu tìm người có khả năng làm mạch điều khiển cho động cơ step đảm bảo yêu cầu về vị trí . Bác nào có quan tâm thì liên hệ với em qua địa chỉ mail phongddtk8.4@gmail.com.
Em mong được sự giúp đỡ của các bác
 

nam3391

Học sinh phổ thông
#16
Khác nhau nhiều chứ bạn
- Động cơ RCservo là động cơ loại nhỏ cũng dùng nguồn DC nhưng mà bằng cách điều chế độ rộng xung quyết định góc quay.
Bạn xem sơ đồ nhé, để hoạt động được bạn điều xung ở f=50hz và giá trị độ rộng xung quy ra góc quy như bên trên nhé.
- Động cơ DCservo thì có phản hồi encorder đương nhiên là có công suất cũng cao hơn nhiều điều khiển như động cơ DC (vận tốc tỷ lệ với điện áp) muốn quay vị trí nào thì qua encorder bạn xác định được.
Mình có vấn đề cần hỏi ở đây là, tại sao 1 chu kỳ xung tới 20ms, góc quay gần 180 độ mà độ rộng xung mức cao chênh nhau có 1.5 ms?chu kì 20ms là quay được bao nhiêu độ? Ai giải thích được không ạ? Cảm ơn nhiều. !
 

mta_cdt

Super Moderator
Thành viên BQT
#17
Mình có vấn đề cần hỏi ở đây là, tại sao 1 chu kỳ xung tới 20ms, góc quay gần 180 độ mà độ rộng xung mức cao chênh nhau có 1.5 ms?chu kì 20ms là quay được bao nhiêu độ? Ai giải thích được không ạ? Cảm ơn nhiều. !
20ms là mức xung bắt buộc, thực chất điều khiển servo là giao tiếp 2vdk với nhau chứ ko phải là với cơ cấu chấp hành. Quy định này là do nhà sản xuất servo
 

Quảng cáo Google