Thông báo

Collapse
No announcement yet.

TỰ LÀM 600W PURESINE INVERTER 12VDC - 220VAC (Mở lại chủ đề của thanhfdc bị xóa nhầm)

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Có lẽ do lõi chưa được chuẩn chăng? FET DC-DC; DC-AC bạn dùng loại nào?

    Comment


    • Nguyên văn bởi Nguyenson318 Xem bài viết
      Có lẽ do lõi chưa được chuẩn chăng? FET DC-DC; DC-AC bạn dùng loại nào?
      Có thể lõi hơi nhò, đường kính ngoài có 28mm thôi. Fet DC-DC mình sẽ dùng 60N06 vì chỉ 300W thôi mà, DC-AC thì mình dùng CS740 ( cty dùng loại này nên xin được, nổ không tiếc, hì hì!)

      Comment


      • Nguyên văn bởi dinhthuong80 Xem bài viết
        PCB các bạn hỏi bạn Nguyênson318 nhé, bạn ấy share cho mình mà.
        Thay lõi màu đen của thằng PFC nguồn PC 300W rồi, quấn cỡ 130v được 2.7mH, tụ 2uH, thử 320V thấy cũng tạm nhưng chạy tải 50W thấy hơi giật giật.
        Mà mình thấy làm đơn thuần một lớp cho tiện...thay linh kiện hư! Mới lỡ tay chạm con tụ 153 vào 2 con 740 kề nhay thế là bùm mất 2 con lẩn cầu chì, giờ tháo 2 con 740 này ra thay cũng là cả vấn đề đấy!!!!
        chạy tải mà thấy giật bạn thử tách riêng nguồn dc dc voi dc ac xem. mình cũng từng bị vậy do bo egs nó chống nhiễu kém nên chung nguồn với phần dc là áp ac nhảy nhấp nháy, tách nguồn ra là ok. có lẽ vì vậy mà mọi người làm việc với bo egs này mỗi người bị 1 lỗi kahcs nhau. giờ mình bỏ luôn con eg8010 và tự lập trình pumw thì ok rồi.
        Còn phần lõi lọc này thì mua ở đâu nhỉ các bác. Bác thanhfdc có biết chỗ nào ở Hà Nội bán lõi lọc chuẩn không chỉ mình với

        Comment


        • Mình thử riêng nguồn DC bạn ạ. Thì ra do nguồn HVdc bị nhiễu. Đây là sóng ra, hình như mở to thì thấy không mịn lắm( thử với tải 50 và 150W), hẵng lõi lọc chưa phù hợp, để quấn thêm lên 3.3mH xem đỡ không chứ lõi này nó dùng cho mạch PFC 300W mà.
          Attached Files

          Comment


          • Mình chưa gắn mạch DC-DC, thử áp ngoài 320V. Thì ra do áp HV vào bị nhiễu. Đây là dạng sóng dùng máy test tăng phô điện tử soi, sai dạng hoạ tần sóng sin ra là THD=1.4%, tải 150W, sóng sánh vậy là tương đối đẹp đấy nhỉ? Để khi quấn xong BAX mình sẽ test thử toàn mạch xem có bị nhiễu không.
            À, tiện đây mình xin hỏi, dùng tụ lọc 3.3uF có được không, liệu có làm giảm hiệu suất của mạch không?
            Attached Files

            Comment


            • em tạo 2 xung như hình (xung vàng vào Lin ,xanh vào Hin) nhưng khi qua 2110 e chỉ đo được xung ở chân Lout còn ở chân Hout thì lại không thấy là do đâu hả các bác ?? developerv e tạo xung có dạng như ở dưới có được ko bác ?

              Comment


              • Nguyên văn bởi developerv Xem bài viết

                chạy tải mà thấy giật bạn thử tách riêng nguồn dc dc voi dc ac xem. mình cũng từng bị vậy do bo egs nó chống nhiễu kém nên chung nguồn với phần dc là áp ac nhảy nhấp nháy, tách nguồn ra là ok. có lẽ vì vậy mà mọi người làm việc với bo egs này mỗi người bị 1 lỗi kahcs nhau. giờ mình bỏ luôn con eg8010 và tự lập trình pumw thì ok rồi.
                Còn phần lõi lọc này thì mua ở đâu nhỉ các bác. Bác thanhfdc có biết chỗ nào ở Hà Nội bán lõi lọc chuẩn không chỉ mình với
                Bạn dùng atmega8 hả, mình đang tập tành code c cho nó. Bạn gởi code đó cho mình xin để học với dc ko vậy? Dùng 8051 nuvoton nhưng thấy ít hỗ trợ quá.

                Comment


                • Nguyên văn bởi TP_Electro Xem bài viết

                  Bạn dùng atmega8 hả, mình đang tập tành code c cho nó. Bạn gởi code đó cho mình xin để học với dc ko vậy? Dùng 8051 nuvoton nhưng thấy ít hỗ trợ quá.
                  mình dùng atmega88 tại hôm trước thấy 1 trang nó bán rẻ quá nên quất luôn vài còn về dùng. mấyn co atmega88 atmega128 atmega328 nó chung datashet nên làm giống nhau. còn con atmega8 có vẻ hơi khác 1 chút. nhưng atmega8 lại khá nhiều bài hướng dẫn. mình vừa xem bài hướng dẫn của atmega8 vừa đọc datasheet của atmega88 để lập trình con 88 của mình.cũng may là còn atmega88 mình dùng nó giống atmega328 trong board arduino nên tìm khá nhiều bài tiếng anh. mà cái pwm này chủ yếu xem phần timer thôi. cái IO thì là bắt buộc bài học đầu tiên rồi. trước mình dùng các loại vi điều khiển khác có thể đặt trạng thái 1 chân bằng cách viết trực tiếp là PA_1=0 chẳng hạn. nhưng dùng avrstudio thì nó k viết kiểu như vậy mà nó viết cả portA luôn
                  ví du PORTA |= 1; như vậy là ghi 1 vào chân PA0 còn các chân còn lại k thay đổi.
                  có 1 lưu ý nữa bạn tham khảo tại liệu con A thì đừng viết cho con B như vậy nha vì nó khác nhau đấy. tên thanh ghi cũng khác 1 chút. và set các bit cũng khác 1 chút
                  về code tạo sin này tại ban đầu mình trót dùng 2 timêr rồi nên giờ ngại k đổi lại. nếu đổi lại thì chỉ cần tính toán chu kỳ pwm bằng đúng khoảng sin mình chia thì k cần dùng đến timer nữa. code hiện tại của mình thì pwm cứ chạy thoải mái. và dùng 1 timer để cập nhật giá trị pwm. thời gian ngắt timerr mình tính toán bằng thời gian mỗi khoảng sin đó.

                  Comment


                  • Code:
                    /*
                     * gpio.c
                     *
                     * Created: 7/22/2016 7:49:10 PM
                     * Author : Duy-Muoi
                     */
                    
                    #include <avr/io.h>
                    #define F_CPU 16000000UL  // 1 MHz
                    #include <util/delay.h>
                    #include <avr/interrupt.h>
                    
                    
                    
                    volatile unsigned char chuyentt=0;  //bi?n chuyen trang thai chan ra sin
                    volatile unsigned char valtsin=0;  //chay bang sin
                     
                      unsigned char bangsin[]={3,6,9,12,15,18,21,24,27,30,34,37,40,43,46,49,52,55,58,60,63,66,69,72,75,78,81,84,87,90,92,95,98,101,104,106,109,112,114,117,120,122,125,128,130,133,135,138,140,143,145,148,150,153,155,157,160,162,164,166,169,171,173,175,177,179,181,183,185,187,189,191,193,195,197,199,200,202,204,205,207,209,210,212,213,215,216,217,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,236,237,238,238,239,239,240,240,241,241,242,242,242,243,243,243,243,243,243,243,243,243,243,243,243,243,242,242,242,241,241,240,240,239,239,238,238,237,236,236,235,234,233,232,231,230,229,228,227,226,225,224,223,221,220,219,217,216,215,213,212,210,209,207,205,204,202,200,199,197,195,193,191,189,187,185,183,181,179,177,175,173,171,169,166,164,162,160,157,155,153,150,148,145,143,140,138,135,133,130,128,125,122,120,117,114,112,109,106,104,101,98,95,92,90,87,84,81,78,75,72,69,66,63,60,58,55,52,49,46,43,40,37,34,30,27,24,21,18,15,12,9,6,3,0};
                    
                    
                    
                    ISR (TIMER2_COMPA_vect){    
                            OCR0A = bangsin[valtsin];// set PWM for 50% duty cycle        
                            valtsin ++;
                            if(chuyentt==1){//chan 1 và 3
                                PORTC = 0b101;//101 chan pc0 va pc2
                            }
                            if(chuyentt==2){
                                PORTC = 0b1010;//1010 chan pc1 va pc3
                                chuyentt = 0;
                            }
                            if(valtsin == 250){                
                                chuyentt++;        
                                valtsin=0;//t?t chân ra ?? ch?ng deathtime
                                //tat het chan ra
                                PORTC = 0x00;
                            }
                            
                    }
                    int main(void)
                    {
                        //pwm cho timer 0
                     
                        TCCR0A = (1<<COM0A1)|(1<<WGM01)|(1<<WGM00);
                        TCCR0B = (1<<CS00);    //khong chia tan
                        DDRD |=(1<<DDD6);
                      
                        //setup timer 2
                        TIMSK2 = (1<<OCIE2A);//cho phép ng?t timer 2
                        TCCR2A |= (1<<WGM21);
                        TCCR2B |= (1<<CS22);
                        OCR2A = 9;//tang t? 1->9 t??ng ???ng v?i 10ms ()
                        TCNT2 = 0;
                         sei();//cho phep ngat toan cục
                        
                        DDRC = 0xff;
                        PORTC = 0x00;
                        DDRB = 0b11110000;
                        PORTB = 0x00;
                        /* Replace with your application code */
                    
                        while (1)
                        {
                            
                        
                        }
                    }
                    Mình xin giải thích sơ qua code sau nha. giờ k kịp viết. nhưng sơ sơ là timer0 tạo pwm nếu mà mình tính toán timer0 có thời gian ngắt = với khoảng sin đã chia thì sẽ k cần timer 2 để cập nhật bảng sin nữa. nhưng mình ngại tính toán lại nên hiện tại timer0 này chạy từ 0 đến 255 xung sẽ tràn và reset pwm (hết 1 chu kỳ pwm).OCR0A này chính là giá trị mà ghi thanh ghi timer 0 = giá trị nàyy thì nó lật trạng thái chân PWM. cái này cập nhật giá trị bảng sin vào.
                    hiện tại mình dùng thạch anh 16mhz nên 1us sẽ chạy dc 16 chu kỳ máy. và 256 chu kỳ máy thì hết 16us như vậy là chu kỳ của pwm là 16us.
                    giờ mình dùng timer 2 để cập nhật giá trị cho pwm. thời gian cập nhật giá trị bảng sin phải bằng thời gian mình đã chia nửa chu kỳ sin. ở đây mình chia thành 250 đoạn. và mình tính toán timer2 khi nó ngắt sao cho thời gian tràn của nó bằng đúng khoảng thời gian đoạn sin mình chia để cập nhật bảng sin
                    OCR0A = bangsin[valtsin];
                    valtsin :
                    cái này nó mỗi lần cập nhật bảng sin nó tăng lên 1 và như vậy lần lượt giá trị sin dc đưa vào pwm theo đúng thời gian đã chia.
                    khi đủ 250 lần có nghĩa hết chu kỳ sin thì reset lại biến đếm. và mình tắt hết các chân để tạo deathtime luôn. thật ra thì trong bảng sin đoạn 250 này nó cũng bằng 0 và mình tắt như vậy k bị trái.
                    Code:
                    if(valtsin == 250){                
                                chuyentt++;        
                                valtsin=0;//t?t chân ra ?? ch?ng deathtime
                                //tat het chan ra
                                PORTC = 0x00;
                            }
                    ở trên mình dùng 4 chân của port c để đảo trạng thái. có 2 chân thì mình sử dụng 4066 kết hợp với chân pwm để tạo ra 2 chân pwm như mình nói trước đó. như vậy là 4 chân ra sẽ có 2 chân pwm và 2 chân đảo trạng thái mỗi nửa chu kỳ.
                    giừo buồn ngủ có thể viết không chuẩn lắm nhưng sơ sơ là vậy. có gì bạn cứ hỏi mình sẽ giải thích rõ hơn về code của mình
                    --
                    thêm chút ở đây mình có biến chuyentt biến này là để khi chạy hết 1 lượt bảng sin có nghĩa hết nửa chu kỳ thì mình sẽ đổi sang 2 chân khác(1 chân pwm 1 chân luôn mở - mở hết 1 nửa chu kỳ lại off để sang 2 chân kia ) .và chạy hêt nửa chu kỳ nữa lại đảo về 2 chân đầu. chứ xen kẽ vậy

                    Comment


                    • Nguyên văn bởi quocviet253 Xem bài viết
                      em tạo 2 xung như hình (xung vàng vào Lin ,xanh vào Hin) nhưng khi qua 2110 e chỉ đo được xung ở chân Lout còn ở chân Hout thì lại không thấy là do đâu hả các bác ?? developerv e tạo xung có dạng như ở dưới có được ko bác ?
                      bạn đã chạy cả 2 nửa cầu chưa. nếu chạy 1 nửa thì cầu tụ bootstrap không được nạp điện nên chân Hout k có gì

                      Comment


                      • Thêa bạn deadtime và hồi tiếp bằng cách nào khi dùng avr này vậy bạn.

                        Comment


                        • Nguyên văn bởi TP_Electro Xem bài viết
                          Thêa bạn deadtime và hồi tiếp bằng cách nào khi dùng avr này vậy bạn.
                          deadtime thì như mình nói ở trên đó. đến cuối bảng sin là giá trị 250 thì %pwm=0 nhưng để chắc chắn thì mình cũng cho toàn bộ chân ra =0 luôn. còn hồi tiếp thì lấy giá trị adc rồi mình xem nó sụt trong khoảng bao nhiêu V thì mình nhân bảng sin với % thôi. ví dụ bảng sin gốc là 100% giờ trung bình mình chạy 50% và khi tụt áp thì tăng dần lên nếu quá lại giảm xuống. lấy luôn giá trị sin nhân với % là dc mà bạn. cái này mình k cho vào code trên.
                          mình lấy hồi tiếp theo mỗi nửa chu kỳ nên tính toán đơn giản hơn. chứ k lấy theo mỗi bậc sin vì thật sự k cần thiết đến mức như vậy. và lấy theo bậc mà làm không khéo sẽ bị nhấp nháy với méo mó sin ngay

                          Comment


                          • vậy là cầu h bạn trong quá trình chạy pwm thì tụ boostrap ko có nạp bù trong 1/3 chu ki sin mà chỉ nạp một lần khi 1/2 cầu h đó đc nghỉ( có nghĩa là chỉ đc nạp 1 lần khi mos thấp off trong 10ms thôi). Vậy như thế tụ bt có đủ áp để xả theo xung pwm trong 10ms tiếp theo ko nhỉ).

                            ​Mà bạn viết c bằng trình gi thế. mình dùng codeversionavr để học. Mình thấy mấy cái #include lạ lạ ko giống ở codeversionavr.

                            Comment


                            • Đây là thành quả lao động nè, sin ra không được 100% nhưng đảm bảo hơn điện lưới rồi, cảm giác tự chế thật thú vị biết bao! Đúng là EGS cũng không đến nỗi khó chịu như mình nghĩ.

                              BAX mình dùng lõi EỊ33 của PSU, sơ 3 vòng, thứ 92vòng, chỉnh áp ra 360V, dòng không tải 0.2A, chạy tải 50W fet 3205 tản nhiệt 25x22x12 ấm ấm, hiệu suất chỉ đạt >82% chắc cũng ổn vì mới tải 50W nhỉ?

                              Có khúc mắc là khi áp 10.2V ngắt mạch rồi sau đó áp bình tăng lên mà đợi hoài không thấy mạch DC-DC không hoạt động, phải ngắt nguồn cấp lại mới chạy tiếp, như vậy là bình thường phải không các bạn?
                              Attached Files

                              Comment


                              • Accu tụt xuống dưới 10.2v thì mạch tắt, sau đó accu đầy trên 10.2v thì phải bật tắt lại công tắc. Như vậy là đúng bạn ah, vì nếu mạch tự chạy khi trên 10.2v sẽ nhấp nháy liên tục.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X