Thông báo

Collapse
No announcement yet.

Điều khiển động cơ dùng 16f88

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

  • Điều khiển động cơ dùng 16f88

    Mình xem qua các diễn đàn về phần điều khiển động cơ và làm thử nhưng vẫn không chạy được mấy bác xem giùm coi lỗi phần nào sửa giúp mình với
    Nó bị lỗi như sau: khi chạy mô phỏng bằng proteus nó báo lỗi dấu chấm cảm vàng (cũng như thế nhưng đem qua máy thằng bạn chạy thì ko báo lỗi gì hết @_@ máy mình dùng vista ) và động cơ quay nhưng không dùng biến trở điều khiển tốc độ động cơ được.

    Đây là đoạn code cho con 16f88

    #include <16F88.h>
    #device 16F88*=16 ADC=8
    #fuses XT,NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NODEBUG
    #use delay(clock=4000000)
    #byte PORTB = 0x06

    int8 adc;

    void readADC()
    { setup_adc(adc_clock_internal);
    setup_adc_ports(sAN1);
    set_adc_channel(1);
    delay_ms(10);adc=read_adc();
    }
    void pwm_ccp()
    {
    setup_ccp1(CCP_PWM);
    setup_timer_2(T2_DIV_BY_1,255, 1);
    }
    void PWM(int8 value)
    {set_pwm1_duty(value);
    }
    void main()
    { set_tris_B(0x00); PORTB=0x00;
    pwm_ccp();
    while(TRUE)
    { readADC();
    PWM(adc);
    }
    }
    cho mình hỏi là đoạn code này có nghĩa là gì,mình coi phần hướng dẫn ccs rồi nhưng tới phần này lại ko có hướng dẫn nhờ bạn nào giải thích hộ
    setup_timer_2(T2_DIV_BY_1,255, 1);
    Đây là cái hình của cái mạch:


    Còn đây là file proteus ở hình trên
    http://www.mediafire.com/?ngcdytnw1zj

    Mấy bác ráng giúp giùm em

  • #2
    khi chạy mô phỏng bằng proteus nó báo lỗi dấu chấm cảm vàng (cũng như thế nhưng đem qua máy thằng bạn chạy thì ko báo lỗi gì hết @_@ máy mình dùng vista ) và động cơ quay nhưng không dùng biến trở điều khiển tốc độ động cơ được.
    Thông báo đó là gì.

    Chương trình có vẻ không có vấn đề gì. Đã code đúng, tuy nhiên trong hàm main bạn cho thực hiện đọc ADC liên tục và lại setPWM ngay sau đó. Theo tôi, bạn nên thêm đoạn code đọc ADC để nó đạt ổn định thì mới SetPWM, vì đọc liên tục thì tại 1 vị trí biến trở giá trị adc sẽ dao động một vài đơn vị. Có thể đơn giản chỉ là thêm hàm delay sau phần setPWM.

    Mô phỏng nhiều khi không thật chính xác. Để kiểm tra chân CCP1 bằng cách chọn một vài giá trị PWM cố đinh (0, 20%, 50%, 80%, 100%) rồi dùng tool của Proteus đo dạng tín hiệu ra trên đó xem có đúng hay không, như vậy cũng đánh giá được code cũng như mô phỏng.
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

    Comment


    • #3
      uhm để mình thêm delay 10us thử xem sao

      lỗi thế này đây :


      mà sao động cơ quay mà mình ko điều chỉnh tốc độ đc vậy

      Phát hiện ra lỗi rồi do thằng nút nhấn gây ra @_@ thay cái nút bằng cọng dây nối tắt qua thì hết lỗi nhưng ko hiểu tại sao,à còn phần biến trở mình tah61y trong proteus có rất nhiều loại biến trở,có cái để vô nó báo lỗi có cái lại dùng đc
      Last edited by poochini; 23-12-2008, 22:57.

      Comment


      • #4
        ko ai giúp mình sao @_@

        Comment


        • #5
          uh!
          bạn xem lại xem!
          biến đọc giá trị adc là kiểu float!
          bạn hãy khai báo : float adc
          sau đó ép về kiểu int8!
          và cái nữa bạn không nên khởi tạo hàm adc nhiều lần!
          bạn làm giông như hàm pwm_ccp(); của bạn!
          và viết hàm đọc adc riêng!
          và chỉ cần delay 10us;//đợi adc biến đổi xong
          chúc vui!
          ----------------------
          "tháng ngày dong duổi cuộc đời
          nhớ người cố hữu hẹn ngày tái ngộ"

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X