![]() |
Vấn đề về pwm
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.. |
Không biết em có khai báo thiếu phần gì ở #fuses không...giúp em với...
|
Hình như vì đáp ứng tần số của con pc817 không đủ phải không mấy huynh...em đo chân ra của pwm thì đúng là bằng 1/2 giá trị chân "high" của pic...nhưng qua opto pc817 thì không còn là 1/2 nữa...vậy theo các bác thì nên thay con gì...tần số pwm của em là 23437,5 Hz...
ai góp ý giùm em với... |
Trích:
|
Lạ nhỉ. Tớ thấy trong datasheet của con PC817 ghi Cut-off Frequency là 80kHz thì sao lại không đáp ứng được tần số PWM của cậu ?
|
Múi giờ GMT. Hiện tại là 10:39 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