Em viết code đơn giản thế này:
#include <18f4620.h>
#BYTE PORTC=0xf82
#byte TRISC=0xf94
#fuses HS, NOWDT
#use delay (clock=20000000)
void main()
{
TRISC=0x00;
PORTC=0x00;
setup_ccp1(CCP_PWM);
set_pwm1_duty(512);
setup_timer_2(T2_DIV_BY_1,255,1);
while(1);
}
khi em mô phỏng trên proteus đúng là duty cycle = 50%.
nhưng khi làm mạch thật thì không phải như vậy...
chân tín hiệu pwm được nối vào opto pc817, hiệu điện thế cấp cho pc817 là 5V...
nếu đúng dutycyle=50% thì điện áp dc ở ngõ ra của pc817 phải là 5/2=2.5V chứ...
vì em cần điều khiển motor dc không hồi tiếp nên cần cấp xung pwm thật chính xác...
mong mấy huynh giúp đỡ...
thanks mấy huynh trước nha..
#include <18f4620.h>
#BYTE PORTC=0xf82
#byte TRISC=0xf94
#fuses HS, NOWDT
#use delay (clock=20000000)
void main()
{
TRISC=0x00;
PORTC=0x00;
setup_ccp1(CCP_PWM);
set_pwm1_duty(512);
setup_timer_2(T2_DIV_BY_1,255,1);
while(1);
}
khi em mô phỏng trên proteus đúng là duty cycle = 50%.
nhưng khi làm mạch thật thì không phải như vậy...
chân tín hiệu pwm được nối vào opto pc817, hiệu điện thế cấp cho pc817 là 5V...
nếu đúng dutycyle=50% thì điện áp dc ở ngõ ra của pc817 phải là 5/2=2.5V chứ...
vì em cần điều khiển motor dc không hồi tiếp nên cần cấp xung pwm thật chính xác...
mong mấy huynh giúp đỡ...
thanks mấy huynh trước nha..
Comment