pwm điều khiển tải AC
Chào các pan đề tài của e là: viết chường trình điều khiển độ sáng tồi của bóng đèn dùng PWM của PIC16f877A. e có cầu hỏi này muốn hỏi
1. khi ta phát hiện được điểm "0" của sóng sin thì ta kích 1 xung bằng PWM vậy thì Timer nó có liên quan gì tới chỗ này(thấy có người nói dùng timer gì gì đó )
2.Khi ta muốn góc kích tăng lên thì mình chỉ cần thay đổi duty của nó phải không nhỉ ?
3. E có doạn code điều khiển Led đơn như vầy: khi nhấn nút nhấn sẽ tạo ra một chuỗi xung điều khiển led đơn. E có thắc mắc là tại sao nhấn xong, một chuỗi xung được tạo ra,thả nút nhấn ra chuỗi xung vần còn. Vậy hàm CCP1 chỉ cần khởi tạo 1 lần là hoạt động luôn sao,muốn nó hoạt động theo ý muốn thì phải làm như thế nào,mong các bạn, các thầy hướng dẫn
#include <16F877A.h>
#include <def_16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=12000000)
#define diem0 rb0
#define led1 rc0
int16 duty1=0,i,j;
void kich (void){
setup_ccp1(CCP_PWM); //khoi tao bo PWM1
setup_timer_2(T2_div_by_16,187,1); //tao chu ky xung 1ms (1/clock)*4*t2div*(period+1)
duty1=120;
set_pwm1_duty(duty1); //theo cong thuc = duty1*t2div/clock
delay_ms(10);
}
void main()
{
set_tris_b(0);
set_tris_c(0);
while(true)
{
if(diem0==0){
delay_ms(1);
kich(); }
}
}
|