Thông báo

Collapse
No announcement yet.

Điều khiển băm xung động cơ sử dụng 8051

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

  • Điều khiển băm xung động cơ sử dụng 8051

    Cho em hỏi là chương trình băm xung động cơ của em viết như sau, khi chạy mô phỏng trên Proteus độ rộng xung =0 (tích cực mức thấp) vẫn có 1 xung xuống (mức thấp) xuất hiện. Bí quá mà chưa nghĩ ra giải pháp nào, mong mọi người giúp đỡ. kết quả mô phỏng như chỗ khoanh đỏ hình ảnh đính kèm. Xin cảm ơn

    Code:
    timer01:
        push acc ;cat du lieu vao ngan xep
        push psw
        inc dem
        mov a,dem
        cjne a,duty_1,clr_pwm_2
        setb pwm_1
    clr_pwm_2:
        cjne a,duty_2,clr_pwm_3
        setb pwm_2
    clr_pwm_3:
        cjne a,duty_3,clr_pwm_4
        clr pwm_3
    clr_pwm_4:
        cjne a,duty_4,setb_pwm
        clr pwm_4
    setb_pwm:
        cjne a,#255,exit
        clr pwm_1
        clr pwm_2
        setb pwm_3
        setb pwm_4
    exit:
        pop psw ;lay du lieu tu ngan xep
        pop acc
    reti

  • #2
    Mình bỏ 8051 đã lâu nên chỉ đưa giải pháp trên các MCU khác từng làm qua:
    _Độ rộng xung = 0 hoặc 100% là một khái niệm sao sao ấy, trên lý thuyết thì chấp nhận được, nhưng trên thực tế thì nó như làm khó người ta. Nói thật ra là khi độ rộng xung =0 hoặc 100% tức là cái xung đó không hề tồn tại theo định nghĩa xung. Nhà sx MCU không hiểu tại sao người ta cứ nhất quyết đòi hỏi cái họ gọi là xung khi mà nó cơ bản là nó sai về định nghĩa, họ chỉ sx sản phẩm theo đúng bản chất.
    _Vậy đó thế là xong hướng giải quyết rồi, off timer đi, chuyển chân phát xung sang định dạng Port I/O thông dụng, xuất hẳn logic 0 hoặc 1 theo ý muốn là được cái gọi là xung có duty 0% hay 100%
    Làm sao mà bạn dám nói là không làm được khi bạn chưa từng thử một lần nào.
    Ngay cả khi bạn đã làm 1 lần và thất bại bạn cũng không có quyền nói là không làm được vì bạn chưa làm lần thứ 2,3...

    Comment


    • #3
      Nguyên văn bởi hoahauvn2 Xem bài viết
      Mình bỏ 8051 đã lâu nên chỉ đưa giải pháp trên các MCU khác từng làm qua:
      _Độ rộng xung = 0 hoặc 100% là một khái niệm sao sao ấy, trên lý thuyết thì chấp nhận được, nhưng trên thực tế thì nó như làm khó người ta. Nói thật ra là khi độ rộng xung =0 hoặc 100% tức là cái xung đó không hề tồn tại theo định nghĩa xung. Nhà sx MCU không hiểu tại sao người ta cứ nhất quyết đòi hỏi cái họ gọi là xung khi mà nó cơ bản là nó sai về định nghĩa, họ chỉ sx sản phẩm theo đúng bản chất.
      _Vậy đó thế là xong hướng giải quyết rồi, off timer đi, chuyển chân phát xung sang định dạng Port I/O thông dụng, xuất hẳn logic 0 hoặc 1 theo ý muốn là được cái gọi là xung có duty 0% hay 100%

      - E cảm ơn, 0 mức 1 e đã off time xuất trực tiếp mức logic cao thấp ra port I/O và đã giải quyết được vấn đề
      - Cho e hỏi thêm ngoài lề chút về PWM motor DC, Khi pwm=20~50% f=500hz thì motor vẫn quay nhưng có tiếng zoo! zoo! zoo! (âm thanh trầm hơn), khi tăng tần số f=2khz thì âm thanh nhỏ hơn nhưng đanh hơn. Vậy có giải pháp triệt tiêu được âm thanh đó không ạ. nâng cao tần số hơn nữa thì 8051 không đáp ứng kịp

      Comment


      • #4
        Cấp thẳng áp vào thì cách duy nhất là tăng tần số pwm vượt khỏi ngưỡng nghe, tức là >20KHz. 8051 không đáp ứng được thì sử dụng con khác. AVR,PIC.... chẳng hạn.

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X