mọi người cho mình hỏi mình muốn dùng Píc6f877a để điều chế 2 xung từ 2 chân ccp1 và ccp2 nhưng có tần số khác nhau vd như 10Khz và 15khz thì có làm được không và làm như thế nào.Và nếu không được thì mình có thể làm cho xung1 high-->low nhưng xung2 thì low--> high được không. tức là trong 1 chu kỳ thì mức thấp trước juj mới đến mức cao ấy?
Thông báo
Collapse
No announcement yet.
Pwm pic16f877a
Collapse
X
-
Nguyên văn bởi caovanhuong Xem bài viếtCode:/* Công thuc tinh goc kich triac: do 1 buoc nhay ADC la 4.88mV => khi ngo vao ADC =5V thi gia tri thu duoc la 1023. tan so luoi dien la 50Hz => 1/2 chu ky=10ms => goc kich lon nhat tuong ung 180do là 10ms. giá tr? sau khi chuyehn doi ADC la 1023. ma ta chi can 10ms => ta chia 1023/102.3 se ra duoc 10ms. 180do=10ms => ap dung cong quy tac tam suat ta tinh duoc goc kich = (thoi gian kich*180)/10. vd sau khi phat hien diem zero va sau do 3ms ta kich triac thi goc_kich= 3*180/10=54do Công thuc tinh nhiet do: LM35 co muc dien ap ra la 10mV/oC. 1 buoc ADC la 4.88mV => ap dung cong tac tam suât ta tinh duoc nhiet_do= (gai tri ADC*4.88)/10 vd: nhiet do la 30oC => dien ap ra cua LM35 la 300mV => ADC thu duoc =61 => nhiet_do=(61.5*4.88)10=30oC Công thuc tinh dien ap:*/
bác có mạch mô phỏng thì cho e xin luôn đc không e đang làm bài tập lớn phần đo điện áp dùng con pic này, mong bác giúp đỡ
tks bác trước. nếu tiên bác gửi luôn vào mail cho e đc không, cảm ơn bác nhiều: ngocnam.dhgt@gmail.com
Comment
-
Nguyên văn bởi caovanhuong Xem bài viếtnếu thay đổi góc kích của triac bằng PWM thì không được. bác chỉ cần kích bình thường, nhưng phải tính toán được góc kích. tần số lưới điện là 50Hz => T=1/f=1/50=20ms => 1/2 T là 10ms tương ứng với 180 độ.
bác tham khảo cái này em viết cho con PIC16F877A, đo nhiệt độ, điện áp, và hiển thị góc kích lên LCD
Code://=================================================================== ========== // Ten chuong trinh: Hien thi nhiet do, dien ap, goc pha // Nguoi thuc hien : Cao Van Huong // Email : caovanhuong@webdien.com // Cell phone : // Ngon ngu : CCS-C 4.107 // Ngay thuc hien : 3/5/2010 //****************************************************************************** // MCU : PIC16F877A // Crystal : 20MHz // Sensor : LM35D // Display : LCD 2x16 //****************************************************************************** // Ngay hoan thanh : 3/5/2010 // Ky ten : Cao Van Huong //=================================================================== ========== #include <16F877A.h> #include <def_877a.h> #fuses NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT #device *=16 adc=10 //khoi tao ADC 10bit #use delay(clock=20000000) #include <lcd_lib.c> //khai bao chuong trinh con LCD #bit led_bao=portb.4 //gán led bao hieu la portb.4 #bit xung_kich=portc.0 //gán xung kich triac la portc.0 int8 nhiet_do; int16 a,b; float goc_kich,dien_ap,c; #int_ext //khoi tao ngat ngoai void ngat_ngoai() //chuong trinh xu ly ngat khi phat hien diem zero { delay_ms(c); //c la goc kich xung_kich=1; //tao xung kich delay_us(10); //thoi gian ton tai xung_kich xung_kich=0; //ngat xung kich } // ***********************khai báo các chuong trinh con************************* void do_nhiet_do(); void do_dien_ap(); void do_goc_kich(); void bao_dong(); void hien_thi(); //**************************chuong trinh chinh********************************** void main() { trisa=0x0b; //khoi tao thanh ghi trisa co A0 A1 A3 nhan analog trisb=0x01; //khoi tao thanh ghi trisb co bit b0 nhan du lieu trisc=0x00; //khoi tao thanh ghi trisc xuat du lieu trisd=0x00; //khoi tao thanh ghi trisd xuat du lieu setup_ADC_ports(AN0_AN1_AN3); //cau hinh AN0 AN1 AN3 nhan analog, Vref=Vdd setup_ADC(adc_clock_internal); enable_interrupts(int_EXT); //cho phep ngat ngoai enable_interrupts(GLOBAL); //cho phep ngat toan cuc ext_int_edge(L_TO_H); //khai bao ngat ngoai tac dong canh len lcd_init(); // khoi tao lcd lcd_putcmd(0x80); lcd_putc("Do an tot nghiep"); lcd_putcmd(0xc0); lcd_putc("SV:............."); delay_ms(1000); while(1) { do_nhiet_do(); //goi chuong trinh con do_nhiet_do do_dien_ap(); //goi chuong trinh con do_dien_ap do_goc_kich(); //goi chuong trinh con_do_goc_kich bao_dong(); //goi chuong trinh con bao_dong hien_thi(); // goi chuong trinh con _hien_thi } } // ***************************chuong trinh con********************************** void do_nhiet_do() //chuong trinh con do nhiet do { set_ADC_channel(0); //doc du lieu analog tu kenh AN0,do nhiet do delay_us(10); a=read_adc(); //luu du lieu ADC vao a nhiet_do=(a*4.88)/10; } void do_dien_ap() //chuong trinh con do dien ap { set_ADC_channel(1); //doc du lieu analog tu kenh AN1, do dien ap delay_us(10); b=read_adc(); //luu du lieu ADC doc tu AN1 vào b dien_ap=b*0.21506; } void do_goc_kich() //chuong trinh con do goc kich { set_ADC_channel(3); //doc du lieu analog tu kenh AN3, do goc kich delay_us(100); c=read_adc(); //luu du lieu ADC doc tu kenh AN3 vào c c=c/102.3; //chu ky luoi dien la 10ms => goc kich lon nhan la 180 ung voi 10ms goc_kich=(c*180)/10; //10ms ung voi 180 do => ap dung quy tac tam xuat de tim goc kich } void bao_dong() //chuong trinh con bao dong { if(nhiet_do>=70) { led_bao=1; } else { led_bao=0; } } void hien_thi() //chuong trinh con hien thi { lcd_putcmd(0x80); //gui lenh dieu khien lcd printf(lcd_putc,"Nd:%u Volt:%fV",nhiet_do,dien_ap); //in gia tri cua nhiet do,dien ap len lcd lcd_putcmd(0xc0); //gui lenh dieu khien lcd printf(lcd_putc,"goc_kich:%f",c); //in gia tri goc kich len man hinh lcd } /* Công thuc tinh goc kich triac: do 1 buoc nhay ADC la 4.88mV => khi ngo vao ADC =5V thi gia tri thu duoc la 1023. tan so luoi dien la 50Hz => 1/2 chu ky=10ms => goc kich lon nhat tuong ung 180do là 10ms. giá tr? sau khi chuyehn doi ADC la 1023. ma ta chi can 10ms => ta chia 1023/102.3 se ra duoc 10ms. 180do=10ms => ap dung cong quy tac tam suat ta tinh duoc goc kich = (thoi gian kich*180)/10. vd sau khi phat hien diem zero va sau do 3ms ta kich triac thi goc_kich= 3*180/10=54do Công thuc tinh nhiet do: LM35 co muc dien ap ra la 10mV/oC. 1 buoc ADC la 4.88mV => ap dung cong tac tam suât ta tinh duoc nhiet_do= (gai tri ADC*4.88)/10 vd: nhiet do la 30oC => dien ap ra cua LM35 la 300mV => ADC thu duoc =61 => nhiet_do=(61.5*4.88)10=30oC Công thuc tinh dien ap:*/
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Mua anten ở đâu?bởi tmcodonAnten bạn thu nguồn sóng nào vậy? Nếu xem truyền hình thì giờ k làm đc anten nữa rồi
-
Channel: Ăng ten và truyền sóng
Hôm qua, 15:34 -
-
Trả lời cho Mạch nguồn đôi dùng 7812 và 7912bởi tmcodonThank bác nhá. Tìm mãi mới thấy. Giờ vọc đã xem sao...
-
Channel: Hỗ trợ học tập
Hôm qua, 10:39 -
-
bởi tungdqEm cần tìm sơ đồ mạch một số Main máy tính đời cao như Asrock B560M-HDV, các cao nhân chỉ giúp với. Thank!
-
Channel: Các mạch điện ứng dụng
15-11-2024, 08:27 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment