Welcome & Happy Holidays!
Kết quả 1 đến 1 của 1
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [HELP]- Điều khiển tăng/giảm tốc độ ĐCơ DC 12V dùng CCS-Các bro ơi giúp e với ạ!!

    Như tiêu đề : e đã lập trình cho đc quay thuận,quay ngược, stop qua PWM rồi ạ(chỉ dùng 2 chân CCP1,2)... nhưng còn phần tăng với giảm tốc thì e chưa biết làm thế nào.
    Yêu cầu: Khi đc quay thuận hoặc ngược mà mình bấm nút tăng nó vẫn tăng mà nút giảm nó giảm.
    E mới học về phần này mong các a giúp đỡ.
    Link file mophong:
    DK_DC
    Đây là code e viết chưa ổn lắm:

    #include "E:\pic\main.h"

    #fuses hs, nowdt,noput,noprotect,nobrownout,put,nolvp,nocpd,n owrt,nodebug

    #use delay(clock=4M)

    #USE fast_io (C)

    #USE fast_io (A)

    #define RIGHT PIN_A0

    #define LEFT PIN_A1

    #define STOP PIN_A2

    #define UP PIN_A3

    #define DOWN PIN_A4

    #define TEST PIN_C1

    #define KT PIN_C2

    int i,j;

    void PWM_Init() //ham khoi tao PWM

    {

    OUTPUT_HIGH(Pin_C0);

    SETUP_CCP1(CCP_PWM);

    SETUP_CCP2(CCP_PWM);

    SETUP_TIMER_2(T2_DIV_BY_4,255,1);

    SET_PWM1_DUTY(0); //thiet lap chu ki ban dau la 0 => ngung quay dong co

    SET_PWM2_DUTY(0);

    }

    void To_Right() // QUAY PHAI
    {

    SET_PWM1_DUTY(0);

    SET_PWM2_DUTY(55);

    }

    void To_Left() // QUAY TRAI

    {

    SET_PWM2_DUTY(0);

    SET_PWM1_DUTY(55);

    }

    void To_Stop() // DUNG DC

    {

    SET_PWM1_DUTY(0);

    SET_PWM2_DUTY(0);

    }

    void _Tang_Giam()

    {

    for (i=55;i<=255;i++)

    {

    if(i<255)

    {

    i+=20;

    }

    }

    for(j=i+=20;j>55;j--)

    {

    if(j>55)

    {

    j-=20;

    }

    }

    delay_ms(50);

    }

    void Quet_phim()

    {

    if(INPUT(PIN_A2)==0)

    {

    while(INPUT(PIN_A2)==0); //cho doi toi khi nut nhan duoc tha ra

    To_Stop(); // DUNG

    delay_ms(100);

    }

    else if(INPUT(PIN_A0)==0)

    {

    while(INPUT(PIN_A0)==0);//cho doi toi khi nut nhan duoc tha ra

    To_Right(); //QUAY PHAI

    delay_ms(100);

    }

    else if(INPUT(PIN_A1)==0)

    {

    while(INPUT(PIN_A1)==0);//cho doi toi khi nut nhan duoc tha ra

    To_Left(); // QUAY TRAI

    delay_ms(100);

    }

    //tang dan

    else if(INPUT(PIN_A3)==0)

    {

    i+=20;

    while(INPUT(PIN_A3)==0);//cho doi toi khi nut nhan duoc tha ra

    {

    if(CCP_1_HIGH)

    {

    SET_PWM1_DUTY(i);

    SET_PWM2_DUTY(0);

    }

    else

    {

    SET_PWM1_DUTY(0);

    SET_PWM2_DUTY(i);

    }

    delay_ms(50);

    }

    }

    //giam dan

    else if(INPUT(PIN_A4)==0)

    {

    j-=20;

    while(INPUT(PIN_A4)==0);//cho doi toi khi nut nhan duoc tha ra

    {

    if(CCP_2_HIGH)

    {

    SET_PWM1_DUTY(0);

    SET_PWM2_DUTY(j);

    }

    else

    {

    SET_PWM2_DUTY(0);

    SET_PWM1_DUTY(j);

    }

    delay_ms(50);

    }

    }

    }

    void main()

    {

    To_Stop(); //mac dinh la dong co dung

    set_tris_A(0xFF); // cau hinh ngo vao port A

    set_tris_C(0x00); // cau hinh ngo ra port C

    PWM_Init();


    while(1)

    {

    Quet_phim();

    }

    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 10:14 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.