cần giúp đỡ về Power PWM pic8f4431
em có viết code điều khiển microstep cho dc Bưóc,nên xài các chân PWm1,3,5,7 đê điều khiển nhưng ko bít sao pwm ko chạy theo ý mún.Chương trình cảu em như sau:
Code:
#include <18f4431.h> Em thử xoá đoạn code set_power_pwm_override(7, false, 0); set_power_pwm0_duty(200); //motor1 set_power_pwm2_duty(500); //motor2 set_power_pwm4_duty(0); //motor3 set_power_pwm6_duty(1000); //motor4 nhưng nó cũng chạy như chưa từng xoá chỉ khi em xoá setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,8 0,0,1, 0); thì nó moi dừng em xài thạch anh 20MHz.Xin Các anh chỉ bảo giúp em em mò hoài mà ko dc |
setup_power_pwm(prescale,modes, postscale, time_base, period, compare, compare_postscale, dead_time)
nếu dò theo như vậy thì có lẽ bạn ko sử dụng chế độ time base.vậy thì làm sao mà PWM tuân theo duty cycle của bạn nhỉ!! sửa lại hen!! setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,0,1,0,80,0,1, 0); |
Cám ơn bạn Cóng810 đã giúp đỡ trả lời dùm,nhưng mình đã đọc kĩ phần help của CCS 4.057 nó hướng dãn setup_power_PWM như sau:
setup_power_pwm(modes, postscale, time_base, period, compare, compare_postscale, dead_time) khác với cái anh bạn hướng dẫn.Xin bạn xem kĩ lại dùm.Mình thử copy cái setup mà bạn đã sửa nhưng trình biên dịch CCS báo lỗi,vì không đúng theo cú pháp của nó. Em cũng đâ thử cho time_base =1000,nhưng động cơ vẫn không chậy đúng duty mà mình đã set. Mong nhận được sừ hướng dẫn giúp đỡ của các bạn |
Trích:
Thân, |
thật ra mình chưa muốn quan tâm đến duty cycle vội .Việc đầu tiên là cần giải quyết là tại sao mình thay đổi phần set_power_pwmX_duty(duty_cycle)nhưng lhông hiêu sao nó chẳng thấy thay đổi gì cả.không giống như chế độ PWM ở chân CCP1 mình thay đổi ở duty cycle trong set_pwm1_duty(duty_cycle).trong ccp1 nếu thay đổi dutycycle thì sẽ thấy kết quả khác nhau.nhưng trong các chân PWM power ko bit sao thay dổi ko dc.
Mong bạn nampn giải đáp dùm.thanks!.. |
Trích:
Tôi có thể giúp bạn kiểm tra code nếu bạn dùng cách thiết lập các thanh ghi bằng tay. Thân, |
Trích:
setup_power_pwm_pins(module0,module1,module2,modul e3) PWM_ODD_ON : cái này chỉ cho phep các chân pwm lẽ xuất xung (pwm 1,3,5,7).Và các chân này bạn cũng cấm xuất xung nên khi đo cũng không có áp là đúng rôi ...(vì bạn đã khai báo trong chế độ OVERRIDE). Vì vậy việc thay đổi duty của bạn kô ăn thua gì là phải rồi ... Còn về vấn đề duty , thì trong data sheet có công thức tính đó , ứng với tần số thạch anh Fosc/4 , và tần số pwm Fpwm , bạn sẽ có độ phân giải của duty la bao nhiêu bit ... Và tương ứng với giá trị mà bạn nạp vào PTMR+2 bit LSB nữa == giá trị duty max . Bạn xem lại kỷ nhé . |
Trích:
còn cú pháp thì mình làm chạy bình thường mà!! với lại mình copy của bạn.chỉ đổi chỗ 2 số 0,1 thì làm sao mà code bạn chạy mà code mình báo lỗi!!! |
Trích:
Có bạn nào có code ccs mẫu về power pwm đã test chạy rồi.Cho mình xin với,để mình lấy vè test thử và so sánh với cde của mình xem nó sai ở chỗ nào. |
Trích:
|
nếu vậy thì có lẽ là lỗi phần cứng rồi!! bạn thử kiểm tra lại xem sao!! thạch anh,2 tụ bên cạnh thạch anh...vv
mình vừa xem lại thì ko thấy code ban đầu của bạn sai chỗ nào hết!! cũng ko cần đổi vị trí như mình nói ( cái này do mình nhớ ko đúng, khai báo như bạn chạy vẫn tốt)!! mình có đề nghị thế này: 1) bạn kiểm tra lại phần cứng trước đã 2) bạn thử set duty cycle <320 nếu vẫn giữ nguyên period là 80; 3) kết hợp với việc xuất led để biết chương trình của mình đang ở đâu.để có thể nắm rõ hơn đoạn nào ko thực hiện mình định post đoạn code nhỏ mình dùng 4431 ok.nhưng khi xem lại thì thấy ko có gì khác của bạn.chỉ là khác chu kì và chế độ làm việc thôi!! chúc may mắn!! |
Trích:
|
về phần tụ thì chắc phải nhờ anh NAM thui!! chỉ vì do lúc trước học với 89C51 mình vô tình lấy nhầm 1 tụ 33 thành 330. mắc 2 con tụ khác nhau. thế là cả ngày đi toi!! mò mẫm mãi nên nhớ luôn!! hì hì!
việc hạn dòng thì dùng điện trở Shunt!! Nhưng mà nếu ra chợ mà bảo bán điện trở Shunt thì toàn nhận được lắc đầu!! lúc trước mình mất thời gian cho nó!! sau này mới biết nó có thể tự làm hoặc bạn dùng 1 điện trở công suất hay điện trở có 5 gạch (sai số nhỏ 1% "điều này mình được 1 anh chỉ") nối nối tiếp với động cơ.sau đó dùng 1 opamp để đo điện áp rơi trên điện trở này!!giá trị điện trở sẽ phụ thuộc vào dòng của bạn!! tại opamp thì bạn cho so sánh với giá trị điện thế tương ứng!! làm như vậy thì sẽ nhận được tín hiệu khi quá dòng!! (có gì sai sót các huynh chỉ dạy thêm nhé!!!) |
Trích:
|
ô!! đó là 1 thiếu sót của đệ!! việc lựa chọn điện trở còn phụ thuộc vào công suất của mạch.các loại điện trở thường,công suất,điện trở sứ có nhiều công suất để có thể lựa chọn!!
trong diễn đàn mình cũng có 1 chủ đề về cảm biến!! và cũng nói vể cái này rồi!! ko nên lạc đề ở đấy!! @huynh Mr.bi: có gì thiếu sót huynh cứ góp ý và trình bày luôn ! đệ nghĩ ko cần phải hỏi lại như trên!! |
Múi giờ GMT. Hiện tại là 04:23 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam