Thông báo

Collapse
No announcement yet.

chương trình đk động cơ này là đúng hay sai

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

  • chương trình đk động cơ này là đúng hay sai

    chào các bác!!!
    Các bác chỉ hộ em chỗ sai trong chương trinhf này với.

    #include <16F887.h>
    #include <def_887.h>
    #device *=16 adc=8
    #FUSES NOWDT //No Watch Dog Timer
    #FUSES HS //chip hoat dong o tan so cao (> 4mhz for PCM/PCH) (>10mhz for PCD)
    #FUSES NOPROTECT //ma chuong trinh ko dc bao ve doc. co the doc chuong trinh tu chip ra
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #use delay(clock=10000000)
    #define stop RB1
    //#define start RB2
    #define left RB3
    #define right RB4
    int8 value; //khai bao bien luu tru ket qua ADC
    void quay_trai(){
    SET_PWM1_DUTY(0);
    DELAY_MS(100);
    value = read_adc();
    SET_PWM2_DUTY(VALUE);
    }
    void quay_phai(){
    set_pwm2_duty(0);
    DELAY_MS(100);
    value = read_adc();
    set_pwm1_duty(value);
    }
    void stop_DC(){
    set_pwm1_duty(0);
    set_pwm2_duty(0);
    }
    //====================CHUONG TRINH CHINH========================//
    void main(void)
    {
    //=================== KHOI TAO CHO ADC=========================//
    setup_adc(adc_clock_internal); //chon xung xung clock cho bo ADC
    setup_adc_ports(sAN0|VSS_VDD); //thiet lap cong AN0 la dau vao ADC
    set_adc_channel(0); //chon chan AN0 cho lenh doc ADC tiep
    delay_us(10);

    //====================KHOI TAO CHO PWM=========================//
    setup_ccp1(CCP_PWM); //cau hinh cho ccp1 lam dau ra PWM
    setup_ccp2(CCP_PWM); //-------------ccp2---------------
    setup_timer_2(T2_DIV_BY_1,255,1); //chon tan so dau ra cho bo PWM
    set_tris_B(0x1E); //thiet lap cac chan RB1-RB4 la input (00011110b = 1Eh)
    set_pwm1_duty(0); //tat dong co
    set_pwm2_duty(0); //-----------
    delay_ms(50);
    while(1){ //TAO VONG LAP VO HAN
    IF(stop == 0){
    stop_DC();
    }
    ELSE IF(left == 0){
    quay_trai();
    }
    ELSE IF(right==0){
    quay_phai();
    }
    }
    }


    Em muốn thay đổi tốc độ động cơ bằng biến trở. Nhưng lạ thay khi vặn biến trở thì trên proteus vẫn ko cho ra xung có độ rộng thay đổi.
    sơ đồ kết nối phần cứng ở bên dưới.
    Mong các bác chỉ giáo
    Attached Files
    Thích nghe tụ nổ !
    Thích xem nổ tụ !


  • #2
    mong các bác chỉ giáo cho. Em viết mãi mà chương trình vẫn ko chạy.
    Các bác cố gắng giúp em.
    Thích nghe tụ nổ !
    Thích xem nổ tụ !

    Comment


    • #3
      hix , vừa bấm nút vừa vặn biến trở ah u ? khổ sở ghê rứa choy , cái ni mà áp dụng vô con robot đk = tay thì ông đk chỉ có tu chữa RB dài dài .

      mún bấm nút mà vẫn đk đc vô cấp thì dễ thôi : nếu nút đc bấm , 1 biến đếm thời gian ++ , nếu tăng giá trị đến 10(vd là 200ms) mà nút vẫn còn đc giữ thì tăng xung cấp ra . Cứ thế , nếu tăng đến 20 (400ms) nút vẫn còn đc nhấn thì tăng tiếp xung ra .....

      Cách này đỡ tốn đọc ADC , bỏ bớt biến trở, lợi đôi việc , dùng phần mềm thay phần cứng

      Comment


      • #4
        cảm ơn bác Zz nhưng mà đề tài của em yêu cầu như vậy. nút bấm chỉ cần bấm 1 phát thôi, ko giữ lâu như bác nói. Các thầy bắt làm như vậy là để chúng em hiểu thêm về phần cứng của kon IC mà.
        Thích nghe tụ nổ !
        Thích xem nổ tụ !

        Comment


        • #5
          Nguyên văn bởi Jumbo Xem bài viết
          cảm ơn bác Zz nhưng mà đề tài của em yêu cầu như vậy. nút bấm chỉ cần bấm 1 phát thôi, ko giữ lâu như bác nói. Các thầy bắt làm như vậy là để chúng em hiểu thêm về phần cứng của kon IC mà.
          pác làm mô phỏng nên t k dám hohe vì t chẳng bao h làm mô phỏng , thà cực tí ngối làm trên testboard . Chứ mô phỏng code k bao h đúng nếu thả vô mạch thực tế .

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X