![]() |
|
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 |
![]() |
#7 |
Đệ 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 |
![]() |
![]() |
|
|