Thông báo

Collapse
No announcement yet.

Pwm pic16f877a

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #31
    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?

    Comment


    • #32
      Nguyên văn bởi caovanhuong Xem bài viết
      Code:
      /* 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 ơi cho e xin nốt cái công thức tính điện áp đi
      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


      • #33
        Nguyên văn bởi caovanhuong Xem bài viết
        nế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:*/
        Anh Cao Văn Hưởng còn cái mạch nguyên lý không cho em tham khảo với ạ....mail của em: hoxuanson16091991@gmail.com. Thank anh trước...!!

        Comment


        • #34
          em đang rất cần..mong nhận dc sự giúp đỡ của anh...!!!

          Comment


          • #35
            anh chị nào có thể giải thích nguyên lý của đoạn code trên dc không ạ..

            Comment

            Về tác giả

            Collapse

            tran truong Tìm hiểu thêm về tran truong

            Bài viết mới nhất

            Collapse

            Đang tải...
            X