PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Luận văn tốt nghiệp (http://www.picvietnam.com/forum/forumdisplay.php?f=27)
-   -   Điều khiển động cơ BLDC dùng IR2110 cần được giúp đỡ (http://www.picvietnam.com/forum/showthread.php?t=3868)

mtuankct 07-04-2009 10:17 PM

Điều khiển động cơ BLDC dùng IR2110 cần được giúp đỡ
 
1 Attachment(s)
Em đang làm cái đề tài điều khiển động cơ BLDC dùng dsPIC
Động cơ của em là cái Hub motor công suất khoảng 250W, nguồn 24V
Mạch lực em sử dụng mosfet 60N06 với IR2110 để làm drive
Sơ đồ em attach luôn ở đây
Thuật toán đk ban đầu chưa có gì vì em chỉ mới làm nó quay mà chưa được
Đơn giản là đọc tín hiệu Hall về và đưa xung ra IR để mở van
PWM ở phía lowside hoạt động ở chế độ Override còn phía highside tương tự nhưng sẽ được AND với một xung pwm tần số 1kHz để duty khoảng 90% trở lại để đảm bảo chu kỳ phóng nạp của IR (em đang dùng con diode xung mua ở chợ trời nên chỉ chạy được 1kHz, em đã thử con schottky 1A thì có thể nâng tần số lên nhưng thỉnh thoảng lại thấy cháy con diode nên đi luôn cả con IR)
Em thử với cái động cơ nhỏ hơn công suất khoảng vài chục W thì mạch chạy tương đối ổn nhưng cứ cắm con độg cơ 250W vào là lại đi vài chú fet hoặc IR
PWM em đã thêm deadtime maximum rồi mà vẫn cứ cháy nổ ầm ầm
mà chẳng hiểu sao cháy luôn cả con IR, khi cháy thì thường là bị ngắn mạch giữa chân Vcc và LO, điện trở cực Gate em đang dùng con 8.2R nhưng đo thì toàn thấy là 9.5R
Bác nào giải thích hộ em cái là sai ở đâu?
Có gì em viết chưa rõ các bác cứ hỏi em sẽ bổ sung thêm
Thanks các bác :D

namqn 07-04-2009 10:35 PM

Bạn có đo được dạng sóng dòng điện không?

ACSx là những linh kiện gì? Bạn đưa tín hiệu như thế nào vào các chân PHASEx?

Tại sao lại dùng duty cycle = 90 % mà không dùng giá trị nhỏ hơn?

Thân,

mtuankct 07-04-2009 10:42 PM

ACS là con cảm biến dòng điện loại ACS714 dòng 30A nhưng em chưa hàn con này vào, còn dòng điện thì không quá lớn đâu, trước đây em đã làm con động cơ này quay được với so đồ tương tự nhưng thay con IR2110 bằng IR2103, chạy một lúc con fet hơi nóng nên em đổi sang con IR2110
Duty thi em đang đặt nhỏ thôi có 1/4 tức 25% à nên dòng điện khởi động cũng không quá lớn vậy mà vẫn cháy hixhix, còn cái 90% là cái duty max mà em thấy con diode này có thể đáp ứng được (bằng thực nghiệm)

nhatson.elec 07-04-2009 10:45 PM

hiện tại bác chỉ xuất PWM fix, chưa có current control???

nhatson.elec 07-04-2009 10:46 PM

áp driver cấp cho Ir hiện tại là bao nhiêu?

em nghĩ bị quá dòng, PWM base 1khz , độ rộng xung 25% là thời gian khá dài ah. Cục nguồn cho motor bác dùng nguồn dì. bao lớn ah?

mtuankct 07-04-2009 10:50 PM

Em mới chỉ làm cho nó quay mà chưa được, nên chưa hàn cảm biến dòng vào, hàn vào tháo ra không được à, con này em phải nhờ đứa bạn mua hộ hixhix
còn mạch vòng đk thì em đã làm với con động cơ nhỏ rồi, thuật toán tương tự nhau thôi, vấn đề bây giờ là cái mạch lực nó không chạy
còn áp cấp cho IR là 12V, logic là 5V

nhatson.elec 07-04-2009 10:54 PM

mình nghĩ dùng dien trỡ shunt là đủ, ko cần tới hall sensor làm dì ( cách ly, nhưng tốc độ chậm )

nhatson.elec 07-04-2009 10:54 PM

bác có thể tham khảo cái mạch này của microchip

http://ww1.microchip.com/downloads/e...Doc/51554b.pdf

mtuankct 07-04-2009 11:03 PM

Em đã làm được cái động cơ này quay với con IR2103
con IR2110 thì chỉ khác con IR2103 là nó cả 2 đầu vào HI và LI đề là đầu vào tích cực cao, nó cũng không có bộ tạo deadtime bên trong, không có phần logic chống ngắt mạch do mở 2 van cùng lúc
Em post đoạn code config pwm lên đây các bác xem có đúng không hộ em
Code:

       
        _PTSIDL = 0;        // pwm time base run in idle mode
        _PTOPS = 0;                // pwm time base postscale select bit 1:1
        _PTCKPS = 0;        // pwm time base input clock prescale select bit
                                                                                        // 11 -> 1:64
                                                                                        // 10 -> 1:16
                                                                                        // 01 -> 1:4
                                                                                        // 00 -> 1:1
        // PTMR config (PWM time base register)

        // PTPER config (PWM time base priod register)
        PTPER = (Fcy/Fpwm - 1);
        // SEVTCMP config (special event compare register)
        SEVTCMP = PTPER;
        // PWMCON1 config
        _PMOD3 = 0;                // PMODx = 1 pwm I/0 pin pair is in the independent ouput mode
                                        // PMODx = 0 pwm I/0 pin pair is in the complementary output mode
        _PMOD2 = 0;
        _PMOD1 = 0;
       
        _PEN3H = 1;                // =1 to enable for pwm output
        _PEN3L = 1;
        _PEN2H = 1;
        _PEN2L = 1;
        _PEN1H = 1;
        _PEN1L = 1;
        // PWMCON2 config
       
        // DTCON1 config (dead time control register)
        _DTAPS = 3;                // Dead time unit A prescale select bit
                                        // = 3 -> 1:8
                                        // = 2 -> 1:4
                                        // = 1 -> 1:2
                                        // = 0 -> 1:1
        _DTA = 63;                // Unsigned 6 bit Dead time value bits for dead time unit A
        // FLTACON config (Fault A control register)
        // FLTBCON config
        // OVDCON config (Override control register)
        OVDCON = 0x0000;        // all pwm pin are control by the value in the corresponding POUTxx bit
                                        // POUTxx = 0       
        PDC1 =(unsigned int) (PTPER *0.4);
        PDC2 =(unsigned int) (PTPER *0.4);
        PDC3 =(unsigned int) (PTPER *0.4);
        PWMCON2 = 0x0F00;                //Postscale = 1:16

        PTCON = 0x8000;                        //Kich hoat module PWM
        Delay_ms(10);
        SD = 0;          // day la chan shutdown của IR
        Delay_ms(1);
        _POUT1L = 1;// bat may chan Lowside để nạp điện đầy cho tụ, sẵn sàng chạy
        _POUT2L = 1;
        _POUT3L = 1;

còn đây là chương trình em dùng để test cái động cơ nó quay
Code:

void BLDC_test_forward(void){

        if((HallA == 0) & (HallB == 1) & (HallC == 1)){ // CASE 1
                OVDCON = (1 << BL) + (1 << CH_P);        // BL & CH
                return;
        }
        if((HallA == 0) & (HallB == 0) & (HallC == 1)){ // CASE 2
                OVDCON = (1 << BL) + (1 << AH_P);        // BL & AH
                return;
        }
        if((HallA == 1) & (HallB == 0) & (HallC == 1)){ // CASE 3
                OVDCON = (1 << CL) + (1 << AH_P);        // CL & AH
                return;
        }
        if((HallA == 1) & (HallB == 0) & (HallC == 0)){ // CASE 4
                OVDCON = (1 << CL) + (1 << BH_P);        // CL & BH
                return;
        }
        if((HallA == 1) & (HallB == 1) & (HallC == 0)){ // CASE 5
                OVDCON = (1 << AL) + (1 << BH_P);        // AL & BH
                return;
        }
        if((HallA == 0) & (HallB == 1) & (HallC == 0)){ // CASE 6
                OVDCON = (1 << AL) + (1 << CH_P);        // AL &CH
                return;
        }
}

em xin giải thích một tẹo ở đây các hằng số được định nghĩa như sau:
Code:

#define AL 0
#define AH 1
#define BL 2
#define BH 3
#define CL 4
#define CH 5

#define AL_P 8
#define AH_P 9
#define BL_P 10
#define BH_P 11
#define CL_P 12
#define CH_P 13

có nghĩa là nếu muốn pha A dẫn phía L và pha C dẫn phía H thì em sẽ ghi giá trị 1 vào POUT1L và đặt 3H ở chế độ xung pwm

mtuankct 07-04-2009 11:07 PM

Nguồn ở đây em dùng nguồn 24V lấy từ 2 cái acquy 12V nối nối tiếp, mỗi con dung lượng khoảng 4Ah thôi

nhatson.elec 08-04-2009 01:42 PM

với động cơ nhỏ>> R coil lớn nên dùng PWM base 1khz độ rộng 25% ko sao, nhưng động cơ cs lớn >> R coil thường nhỏ>> 25% là thơi gian dài>>> quá dòng>> dứt fet

b/r

mtuankct 08-04-2009 02:37 PM

Mình đã thử với nhiều duty cycle khác nhau nhưng kết quả vẫn tuơng tự
Một điểm nữa mình không hiểu là sao IR2110 lại chết (ngắn mạch giữa Vcc và LO)

nhatson.elec 08-04-2009 02:42 PM

thêm 1 vấn đề nữa khi dứt thì dứt con fet trên hay con fet dưới nhi?

mtuankct 08-04-2009 02:55 PM

haha cái này thì chưa tìm ra quy luật, đứt cả trên cả dưới luôn tùy lúc
Không phải nó bị hỏng do quá nóng, thường là nó bị hỏng xong rồi mơi bắt đầu nóng cả cặp fet lên. Chắc là nó bị hỏng do một xung quá lớn nào đó, mà mình chẳng hiểu là xung gì
Cho mình hỏi là khi con Fet bị hỏng thì làm sao biết được nó bị cháy con diode hay là hỏng phần mosfet nhỉ? Mình chỉ biết là nó bị ngắn mạch D và S thôi

nhatson.elec 08-04-2009 05:10 PM

Nếu Fet chưa hõng, thì đo sẽ thấy khi diode nội phân cực thuận hay ko

còn fet đã tèo... thì phải vứt đi, ko cần đo nữa đâu ah :)

bác thử nói với motor nhỏ với mạch chạy 2119 thử xem sao

b/r


Múi giờ GMT. Hiện tại là 06:36 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam