PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ cấu chấp hành (Actuator) (http://www.picvietnam.com/forum/forumdisplay.php?f=13)
-   -   Giúp e về code pwm (http://www.picvietnam.com/forum/showthread.php?t=11736)

truc1201 08-11-2011 11:16 PM

Giúp e về code pwm
 
E làm mạch đk 1 động cơ,dùng pic 16f877a, dùng l293d để đảo chiều, điều rộng xung bằng pp pwm.đây là code của e:

#include <16F877A.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=20000000)
void main()

{

// cai PWM bo dieu che xung cho dong co
set_tris_c(0x00);
set_tris_b(0xff);
setup_ccp1(CCP_PWM); // Bat che do PWM cho RC1
setup_ccp2(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,200,1);//Ta co PR2=199,prescale=1
//Tpwm=[PR2+1]*4*1/clock*prescale=[199+1]*4/20000000*1=40 us
//Fpwm=1/Tpwm=25 kHZ
// set_tris_c(0b00000000);



WHILE(1)
{
set_pwm1_duty(1023);delay_us(40);
set_pwm1_duty(0);delay_us(40);
}
}

Vấn đề gặp phải là dù thay đổi duty nhưng điện áp vào đc k hề thay đổi ( tốc độ k thay đổi đc )....Xin cho e hỏi là code đã sai ở chỗ nào

tdm 09-11-2011 01:44 PM

Trích:

Nguyên văn bởi truc1201 (Post 51270)
E làm mạch đk 1 động cơ,dùng pic 16f877a, dùng l293d để đảo chiều, điều rộng xung bằng pp pwm.đây là code của e:

#include <16F877A.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=20000000)
void main()

{

// cai PWM bo dieu che xung cho dong co
set_tris_c(0x00);
set_tris_b(0xff);
setup_ccp1(CCP_PWM); // Bat che do PWM cho RC1
setup_ccp2(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,200,1);//Ta co PR2=199,prescale=1
//Tpwm=[PR2+1]*4*1/clock*prescale=[199+1]*4/20000000*1=40 us
//Fpwm=1/Tpwm=25 kHZ
// set_tris_c(0b00000000);



WHILE(1)
{
set_pwm1_duty(1023);delay_us(40);
set_pwm1_duty(0);delay_us(40);
}
}

Vấn đề gặp phải là dù thay đổi duty nhưng điện áp vào đc k hề thay đổi ( tốc độ k thay đổi đc )....Xin cho e hỏi là code đã sai ở chỗ nào

vẫn có xung bình thường . tuy nhiên ccp1 xung ra ở chân RC2.


Múi giờ GMT. Hiện tại là 10:19 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