Thông báo

Collapse
No announcement yet.

Cần giúp - Điều khiển độ sáng đèn xoay chiều 220vac

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

  • Cần giúp - Điều khiển độ sáng đèn xoay chiều 220vac

    chào 4room...mọi người cho em hỏi là có thể dùng chức năng xung PWM có sẵn trong PIC16f877a để điều khiển độ sáng của bóng đèn 220VAC không ạ...????

  • #2
    PWM thích hợp cho việc điều khiển điện 1 chiều. Với điều xoay chiều thì nên dùng cách cắt pha (1 dạng của PWM) kết hợp với mạch dò điểm 0 (zerocrossing) của nguồn (lưới).

    Comment


    • #3
      em cũng đang thử viết đoạn code cho mạch phát hiện điểm không này mà sao nó chỉ ngắt được chỗ sườn lên mà ko làm được ở sườn xuống, mọi người xem qua cho em với
      (chỗ này là em thử nó đếm bằng led mà mỗi chu kỳ sin nó mới đếm 1 lần, cái e muốn là cứ có sườn là đếm thôi, em mới xem pic thôi, híc )
      #include <16F877A.h>
      #fuses HS, NOWDT, NOLVP, XT
      #use delay(clock=2000000)

      int8 mode;
      int1 d=1;
      // khai bao ma led 7 doan anode chung
      int8 cONst seg7[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };

      //bat dau chuong trinh ngat
      #int_ext
      void ext_isr()
      {
      mode++;
      d=~d;
      if (mode==10) mode = 0;
      }
      //bat dau chuong trinh chinh
      void main()
      {
      set_tris_d(0x00);
      set_tris_b(0xff);
      output_d(0xff);
      enable_interrupts(int_ext);
      enable_interrupts(global);
      if(d==0)
      {
      ext_int_edge(H_TO_L);
      }
      else
      if(d==1)
      {
      Ext_int_edge(L_To_H);
      }
      mode = 0;
      while(1)
      {
      output_d(seg7[mode]);
      }
      }
      TaiDangAtm

      Comment


      • #4
        Nguyên văn bởi Đặng Văn Tài Xem bài viết
        em cũng đang thử viết đoạn code cho mạch phát hiện điểm không này mà sao nó chỉ ngắt được chỗ sườn lên mà ko làm được ở sườn xuống, mọi người xem qua cho em với
        (chỗ này là em thử nó đếm bằng led mà mỗi chu kỳ sin nó mới đếm 1 lần, cái e muốn là cứ có sườn là đếm thôi, em mới xem pic thôi, híc )
        Trong code đâu cần bắt các cạnh làm gì hả bạn. Ở phần mạch, bạn chỉnh lưu toàn kỳ thì đâu ra của mạch sẽ là một chuỗi xung liên tục (bắt đầu và kết thúc ở điểm 0). Nên ở phần code bạn lựa chọn bắt cạnh lên hoặc cạnh xuống theo nhu cầu thôi.
        ps: nếu ở điện lưới nước ta (50Hz) thì sau mạch chỉnh lưu này sẽ là (100Hz). Nghĩa là sẽ có 100 cạnh lên hoặc cạnh xuống cho bạn bắt (chỉ cần bắt 1 trong 2 thôi)

        Comment


        • #5
          Nguyên văn bởi nhanh0112 Xem bài viết
          PWM thích hợp cho việc điều khiển điện 1 chiều. Với điều xoay chiều thì nên dùng cách cắt pha (1 dạng của PWM) kết hợp với mạch dò điểm 0 (zerocrossing) của nguồn (lưới).
          Nắn AC về DC không lọc rồi PWM là được, đúng với bản chất hơn là điều khiển góc mở của triac.
          Chuyển điện điều hòa Nhật, nồi cơm IH ... từ 100V sang 220V
          Hoàng Thanh Tâm- Km32, QL32 Hà Nội - Sơn Tây-ĐT:0912242352

          Comment


          • #6
            Nguyên văn bởi nhanh0112 Xem bài viết
            Trong code đâu cần bắt các cạnh làm gì hả bạn. Ở phần mạch, bạn chỉnh lưu toàn kỳ thì đâu ra của mạch sẽ là một chuỗi xung liên tục (bắt đầu và kết thúc ở điểm 0). Nên ở phần code bạn lựa chọn bắt cạnh lên hoặc cạnh xuống theo nhu cầu thôi.
            ps: nếu ở điện lưới nước ta (50Hz) thì sau mạch chỉnh lưu này sẽ là (100Hz). Nghĩa là sẽ có 100 cạnh lên hoặc cạnh xuống cho bạn bắt (chỉ cần bắt 1 trong 2 thôi)
            cảm ơn bạn, chỉnh lưu cầu để bắt xung thì mình biết nhưng sợ không chính xác, mình muốn bắt xung chính xác ( chỉ dùng 1 trở đưa thẳng vào vdk ) chứ chỉnh lưu cầu thì đoạn điện áp thấp nó ko dẫn nữa, mà mình cần chính xác ở khúc này lắm
            TaiDangAtm

            Comment


            • #7
              Nguyên văn bởi Đặng Văn Tài Xem bài viết
              cảm ơn bạn, chỉnh lưu cầu để bắt xung thì mình biết nhưng sợ không chính xác, mình muốn bắt xung chính xác ( chỉ dùng 1 trở đưa thẳng vào vdk ) chứ chỉnh lưu cầu thì đoạn điện áp thấp nó ko dẫn nữa, mà mình cần chính xác ở khúc này lắm
              Sửa lại qua lại đoạn code của bạn. Code cũ của bạn, những giá trị đổi trạng thái bắt sườn nằm ngoài vòng while hay ngắt thì sao nó chạy đc.
              PS: Nếu số đếm xung của bạn đẩy ra led luôn thì xung đầu vào của bạn phải thật chậm, nếu ko bạn sẽ ko nhìn thấy gì ở LED đâu
              Code:
              //bat dau chuong trinh ngat
              #int_ext
              void ext_isr()
                {
                static int1 edge;
                if(edge)
                  {
                  edge=0;
                  ext_int_edge(H_TO_L);
                  }
                else
                  {
                  edge=1;
                  Ext_int_edge(L_To_H);    
                  }
                  
                mode++;
                d=~d;
                if (mode==10) mode = 0;
                }
              //bat dau chuong trinh chinh
              void main()
              {
              set_tris_d(0x00);
              set_tris_b(0xff);
              output_d(0xff);
              enable_interrupts(int_ext);
              enable_interrupts(global);
              mode = 0;
              while(1)
              {
              output_d(seg7[mode]);
              }
              }

              Comment


              • #8
                cảm ơn bạn nhiều, nó chạy rồi
                TaiDangAtm

                Comment


                • #9
                  bạn cho mình xin cái mạch nguyên lý của bạn vs đc ko ạ !

                  Comment

                  Về tác giả

                  Collapse

                  hoxuanson Tìm hiểu thêm về hoxuanson

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

                  Collapse

                  Đang tải...
                  X