![]() |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Feb 2010
Bài gửi: 7
: |
hongmta cho mình hỏi được không?
mình đã có viết lại code thế này #include "16f877a.h" #include "def_877a.h" #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT ,PUT #use fast_io(a)//khai bao nay trong ccs chi thuc hien dung 1 lenh cho viec i/o #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) #use delay(clock=10000000)//thach anh 10 M #define tien rd0 #define lui rd1 #define trai rd2 #define phai rd3 #define nang rd4 #define ha rd5 #define kep rd6 #define tha rd7 #define L1 ra1 #define R1 ra2 #define L2 ra3 #define R2 ra4 //khai bao cac chan ra cho dong co #define pwm_dc_l rb6 //dong co trai #define dir_l rb1 // dao chieu #define pwm_dc_r rb7 //dong co phai #define dir_r rb3 // dao chieu #define dc_nang rb2 // dao chieu #define dc_kep rb4 // dao chieu //dinh nghia trang thai phim bam #define bam 0 #define nha 1 //HAM CON void setup_phim(); void retrai(); void rephai(); void cap1(); void cap2(); int duty1,duty2; //khoi tao ngat timer0 void bamxung(int duty1,int duty2); void main() { trise = trisb = trisc = 0x00; trisd = trisa = 0xff; portb = 0x00; setup_ccp1(CCP_PWM); // Bat che do PWM cho RC1 setup_ccp2(CCP_PWM); while(true) { setup_phim(); } } void setup_phim() { if((tien == bam)) { bamxung(310,475); } else if((tien = lui = trai = phai = nang = ha = kep = tha == nha)) { bamxung(0,0); } } void bamxung(duty1,duty2) { set_pwm1_duty(duty1); set_pwm2_duty(duty2); setup_timer_2(T2_DIV_BY_16,154,1);//Ta co PR2=199,prescale=1 } Theo như mình tính thì duty1 và duty2 = 620 thì chạy 100% nhưng ở code này khi mình set 2 pwm thì xung ra lại không như thế. giả sử mình muốn pwm1 là 50% và pwm2 là 75% thì không thể làm được, nếu để duty1 = duty2 thì cả 2 cũng đều ko thể đặt được 50% như mong muốn. mình nghĩ là nó thực hiện hết duty1 rồi mới thực hiện duty2 có phải ko nhỉ. rất mong được giúp đỡ.để mình send mô phỏng của mình bạn xem hộ nha thay đổi nội dung bởi: thangkho89, 27-10-2010 lúc 05:46 PM. |
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 1
: |
Điều khiển động cơ DC bằng PWM
Mình làm đồ án dùng PIC16F877A điều chế PWM để điều khiển động cơ DC quay thuận, nghịch và set các tốc độ cố định bằng các nút bấm. Mình viết đoạn code mà chưa biết nguyên nhân vì sao không có tín hiệu ra ở 2 chân CCP1, CCP2.
Anh em xem giùm nguyên nhân vì sao? Mình gửi kèm sơ đồ nguyên lý mô phỏng bằng Proteus và đoạn code bên dưới. Mong mọi người chỉ giáo. |
![]() |
![]() |
![]() |
|
|