1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

cùng thảo luận về cách thức đk đcơ servo

Thảo luận trong 'Servo-Robot-T.Lực-Khí nén' bắt đầu bởi rice01, 17 Tháng chín 2006.

  1. rice01 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    theo mình được biết thì động cơ servo là động cơ có gắn bộ phận encoder phía sau nhằm để phản hồi các tín hiệu và thông số về tốc độ của động cơ , số vòng quay động cơ... Encoder là bộ các đĩa quang có khắc vạch chia dùng để đếm số vòng quay của động cơ. Ứng với mỗi vạch chia sẽ cho ra một xung tín hiệu và từ đó ta tính toán được số vòng quay của động cơ. Thực tế trên một đĩa quang có thể có nhiều vòng chia đồng tâm nhau, khác nhau về vị trí các vạch hoặc số lượng các vạch, điều này quyết định độ phân giải phải của encoder. Có những encoder sử dụng chiết áp để phản hồi tín hiệu về , chiết áp được gắn vào trục động cơ trực tiếp hoặc gián tiếp, khi động cơ quay thì chiết áp thay đổi , cho ra những giá trị điện trở hay áp hay dòng thay đổi . Thông thường với loại encoder này ta phải qua bộ chuyển đổi A/D ( nhận tín hiệu analog và chuyển thành tín hiệu digital).
    Khi nhận tín hiệu từ các encoder ta xử lý và tín toán tín hiệu đó và xuất ra các lệnh điều khiển đưa tới điều khiển động cơ theo yêu cầu. Với loại động cơ này ta thưong72 dùng phưong pháp điều chế xung để điều khiển tốc độ động cơ

    các bác nào quan tâm thì mong các bác góp ý thêm nhé
  2. Semina Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Có những loại Encoder hai ngõ ra, xác định chiều quay của động cơ bằng cách xác đinh sự lệch pha của hai tín hiệu. Nhưng đối với các cách điều khiển đơn giản thông thường, điều đó cũng chẳng cần thiết mấy. Việc đếm xung được thực hiện bởi các mạch đếm chuyên dụng, rồi xuất ra số liêu song song. Đối với các cuộc thi ROBOT, thường được đếm xung bằng một bộ Counter bên trong vi điều khiển (hầu như loại vi điều khiển phổ thông nào cũng có). Tốc độ động cơ được tính toán thông qua việc đếm số lượng xung thu nhận được trong một khoảng thời gian nhận lấy mẫu xung. Khoảng thời gian này là khoảng thời gian cũng phải được ghi nhận. Giả sử thời gian đó là T, số xung đếm được là n, số vạch chia/1vòng quay là N, bán kính của vòng Encoder là r, bán kính của bánh xe là R. Ta được công thức tính tốc độ động cơ như sau: (đề nghị Admin thiết kế website có hỗ trợ chèn hình, chèn hình ko được đành phải gõ !):

    v (vòng/phút) = 60*n/NT. (T: đơn vị giây)

    Số xung đếm được khi robot chạy được một đoạn L là:

    n = L*N/(2*pi*R).

    Phương pháp điều chế xung:

    ***Bằng phần mềm:
    - Thực hiện ngắt Timer:
    Qui định tốc độ động cơ bằng cách đảo tín hiệu ngõ ra với các thời gian khác nhau. Hai thông số cần quan tâm đó là:
    +high (mức cao ra)
    +period (chu kì). Thường period không thay đổi trong quá trình điều khiển, chỉ điều khiển biến "high". Khi đó trong phần mềm nếu ngắt lần N có chu kì ngắt là "high" thì ngắt lần N+1 phải có chu kì ngắt là "period-high" và đảo bit ngõ ra, và ngược lại nếu ngắt lần N có chu kì ngắt là "period-high" thì lần thứ N+1 phải có chu kì ngắt là "high" và đảo bit ra.
    -Thực hiện vòng lặp: Thực hiện đưa các mức ON/OFF ra bit ngõ ra với các thời gian delay khác nhau. Sau đó lặp lại trạng thái cũ. Phương pháp này làm cho hệ thống bị chậm chạp, vì có sử dụng delay.
    ***Bằng phần cứng: (cũng thông qua việc sử dụng timer): Hiện nay được dùng phổ biến với các vi điều khiển như P89C51RD của Philips (đắt tiền) các loại AVR và PIC (cỡ < 100k) . Lập trình khá dễ dàng và "rãnh rỗi".
  3. thanlan New Member

    Số bài viết: 560
    Đã được thích: 0
    Điểm thành tích: 0
    Mạch điều khiển động cơ sử dụng kỹ thuật PWM (copy bên đhdl kỹ thuật công nghệ)

    GIỚI THIỆU BÀI VIẾT

    Hiện nay có rất nhiều phương pháp điều khiển động cơ DC (theo nguyên lý Servo, theo phương pháp PWM) và sử dụng các loại linh kiện chuyên dụng (cầu BJT, cầu FET, L293D, L297, L298 ... ). Tôi đã lựa chọn một phương pháp điều khiển động cơ tối ưu nhất, sử dụng ít linh kiện nhất, và cơ động (cho phép tự điều chỉnh tốc độ). Các bạn tham khảo sơ đồ sau đây ...

    - Sơ đồ mạch
    [IMG]



    Chức năng linh kiện :
    - LM555: dao động tạo xung PWM
    - R2: điều chỉnh tốc độ động cơ.
    - MOSFET IRF510: tầng công suất cho mạch điều khiển
    - Diode D3: triệt xung gai, bảo vệ MOSFET
    - D1,D2: tạo đường nạp, xả độc lập cho tụ C2

    Nguyên lý mạch :
    Sử dụng kỹ thuật điều chế độ rộng xung (PWM - Pulse Width Modulation). Thay đổi thời gian tồn tại xung mức cao nhưng vẫn giữ nguyên chu kì xung.
  4. Semina Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Cách tính toán linh kiện của mạch Thằn lằn đưa ra như sau:

    Chu kì xung ra (không đổi) : T = (R1+R2+R3).C2.ln2
    Thời gian mức cao cực đại : T1max = (R1+R2).C2.ln2
    Thời gian mức cao cực tiểu : T1min = R1.C2.ln2

    Vì vậy cần chọn R1,R2,C sao cho T đủ độ lớn để động cơ có thể đáp ứng được (thường cỡ Vài trăm Hz->1kHz)
    Mặt khác phải đảm bảo T1max không quá nhỏ (gần bằng T), T1min không quá nhỏ(T1min<<T). Để đảm bảo dải tốc độ điều chỉnh rộng.

    Chúc các bạn thành công!
  5. Semina Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Gửi các bạn chương trình điều chế độ rộng xung trên họ vi điều khiển 8051.

    //Đây là chương trình viết điều khiển tốc độ hai động cơ.
    //Hai động cơ được điều khiển thông qua hai chân P2.0 và P2.1.
    //Tốc độ của hai động cơ này được thực hiện thông qua giá trị của hai biến 16 bit Duty_a và Duty_b.
    //Chu kì xung không đổi bằng T us (có thể sửa chữa bằng phần mềm).
    //Độ phân giải được lập trình bằng phần mềm(phụ thuộc và giá trị T)
    //Dùng Timer0 để thực hiện.
    //Ngôn ngữ C, nếu không rành thì có thể xem thuật toán.

    #include<reg51.h>
    sbit dongcoa = P2^0;
    sbit dongcob = P2^1;
    int Duty_a, Duty_b, T;

    //Chương trình con PWM:
    void PWM () interrupt 1 { //Ngat timer0
    char n=0;
    int t1,t2_t1,t2_t3;
    TMOD = 0x01; //Che độ 16 bit, timer0
    if (Duty_a>Duty_b) {
    t1 = Duty_b;
    t2_t1 = Duty_a - Duty_b;
    t3_t2 = T - Duty_a; //Chia lam 3 khoang thoi gian
    if (n==0) {
    dongcoa = 1;
    dongcob = 1;
    TH0 = ((-t1) & 0xff00)>>8;
    TL0 = (-t1) & 0x00ff;
    TF0 = 0;
    n=1;
    }
    else if (n==1) {
    dongcoa = 1;
    dongcob = 0;
    TH0 = ((-t2_t1) & 0xff00)>>8;
    TL0 = (-t2_t1) & 0x00ff;
    TF0 = 0;
    n=2;
    }
    else {
    dongcoa = 0;
    dongcob = 0;
    TH0 = ((-t1) & 0xff00)>>8;
    TL0 = (-t1) & 0x00ff;
    TF0 = 0;
    n = 0;
    }

    }
    else if (Duty_a<Duty_b) {
    t1 = Duty_a;
    t2_t1 = Duty_b - Duty_a;
    t3_t2 = T - Duty_b; //Chia lam 3 khoang thoi gian
    if (n==0) {
    dongcoa = 1;
    dongcob = 1;
    TH0 = ((-t1) & 0xff00)>>8;
    TL0 = (-t1) & 0x00ff;
    TF0 = 0;
    n=1;
    }
    else if (n==1) {
    dongcoa = 0;
    dongcob = 1;
    TH0 = ((-t2_t1) & 0xff00)>>8;
    TL0 = (-t2_t1) & 0x00ff;
    TF0 = 0;
    n=2;
    }
    else {
    dongcoa = 0;
    dongcob = 0;
    TH0 = ((-t1) & 0xff00)>>8;
    TL0 = (-t1) & 0x00ff;
    TF0 = 0;
    n = 0;
    }
    else {
    t1 = Duty_a; //=Duty_b
    t2_t1 = T - Duty_a;
    if (n==0) {
    dongcoa = 1;
    dongcob = 1;
    TH0 = ((-t1) & 0xff00)>>8;
    TL0 = (-t1) & 0x00ff;
    TF0 = 0;
    n=1;
    }
    else if (n==1) {
    dongcoa = 0;
    dongcob = 1;
    TH0 = ((-t2_t1) & 0xff00)>>8;
    TL0 = (-t2_t1) & 0x00ff;
    TF0 = 0;
    n=0;
    }

    }
    }

    //Chương trình thử:

    void main() {
    dongcoa = 0;
    dongcob = 0;//Stop hai động cơ.
    IE = 0x82; // Cho phép ngắt Timer0
    T = 1000;//tan so 1KHz
    Duty_a = 500; //0.500ms
    Duty_b = 200; //0.200ms
    TR0 = 1;
    TF0 = 1;//Cho ngắt lần đầu tiên
    while(1) {}
    }

    Xem xong chương trình này chắc có thể các bạn đã nghĩ đến việc dùng AVR hoặc PIC rồi (Đừng bi quan)
  6. cafemuoi Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Chúng ta hãy nghiên cứu vđk PIC. Một số tiện ích của PIC:
    - Có nhiều pm cấp cao hỗ trợ => việc lập trình very easy.
    - Tập lệnh đơn giản. Có nhiều lệnh hỗ trợ điều khiển Motor DC & AC tùy vào loại chip.
    - Chống nhiễu cao...

    Trang Web chuyên về PIC: www.picvietnam.com.
  7. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (cafemuoi @ Nov 9 2006, 05:09 PM) <{POST_SNAPBACK}></div><div class='quotemain'>Chúng ta hãy nghiên cứu vđk PIC. Một số tiện ích của PIC:
    - Có nhiều pm cấp cao hỗ trợ => việc lập trình very easy.
    - Tập lệnh đơn giản. Có nhiều lệnh hỗ trợ điều khiển Motor DC & AC tùy vào loại chip.
    - Chống nhiễu cao...

    Trang Web chuyên về PIC: www.picvietnam.com.[/b][/quote]


    Trong diễn đàn mình có ngohaibac (xem thêm tại mục matlab trong Liên ngành) làm khá nhiều về PIC
    (như giao tiếp máy tính, GUI trong matlab, PID cho động cơ) có gì các bạn có thể liên hệ bạn Bắc để cùng thảo luận để diễn đàn thêm sôi nổi, mình và các bạn khác cùng học!

    Chúc vui!

Chia sẻ trang này