|
Tài trợ cho PIC Vietnam |
Luận văn tốt nghiệp Nếu bạn thắc mắc vì sao chúng tôi muốn phổ biến các luận văn tốt nghiệp? Xin xem tại đây |
|
Ðiều Chỉnh | Xếp Bài |
07-04-2009, 10:17 PM | #1 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
Điều khiển động cơ BLDC dùng IR2110 cần được giúp đỡ
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 |
07-04-2009, 10:35 PM | #2 |
Trưởng lão PIC bang
|
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,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
07-04-2009, 10:42 PM | #3 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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) |
07-04-2009, 10:45 PM | #4 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
hiện tại bác chỉ xuất PWM fix, chưa có current control???
|
07-04-2009, 10:46 PM | #5 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
á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? thay đổi nội dung bởi: nhatson.elec, 07-04-2009 lúc 10:51 PM. |
07-04-2009, 10:50 PM | #6 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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 |
07-04-2009, 10:54 PM | #7 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
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 )
|
07-04-2009, 10:54 PM | #8 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
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 |
07-04-2009, 11:03 PM | #9 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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; 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; } } 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 |
07-04-2009, 11:07 PM | #10 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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
|
08-04-2009, 01:42 PM | #11 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
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 |
08-04-2009, 02:37 PM | #12 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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) |
08-04-2009, 02:42 PM | #13 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
thêm 1 vấn đề nữa khi dứt thì dứt con fet trên hay con fet dưới nhi?
|
08-04-2009, 02:55 PM | #14 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
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 |
08-04-2009, 05:10 PM | #15 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Bài gửi: 84
: |
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 |
|
|