Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сделать компенсацию dead time
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Hellper
Есть микроконтроллер LPC2103 и необходима программа для управления 3-х фазным BLDC двигателем( драйверы ir2101 ). Требуется генерировать ШИМ сигналы один из которых инверсный по отношению к другому. Инверсный сигнал должен переходить в высокий логический уровень во время низкого на неинверсном выводе с временной задержкой начала и окончания.

Суть процесса в теме

Рисунок от пользователя mpr.

Подскажите как лучше реализовать, тк я новичек в арм-х.
kovigor
Цитата(Hellper @ Jun 9 2011, 15:22) *
Подскажите как лучше реализовать, тк я новичек в арм-х.


Видел у NXP апп.ноут как раз по управлению BLDC. Например:

http://www.nxp.com/#/search/params=[q=bldc,p=1,l=en]|filters=[]
Hellper
судя по этому коду:
Код
__irq void T0_Isr( void )
{
    T0TC = 0;                                  // Reset timer
    
    switch ( ( IO0PIN >> 18 ) & 7 )            // read Hall sensor inputs P0.18, P0.19 and P0.20
    {            
        case 1:                              // phase 6: 001
            PWMMR1 = actualSpeed;  
            PWMMR2 = 0;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = 0;
            PWMMR6 = actualSpeed;
        break;
        case 2:                               // phase 4: 010
            PWMMR1 = 0;            
            PWMMR2 = actualSpeed;
            PWMMR3 = 0;
            PWMMR4 = actualSpeed;
            PWMMR5 = 0;
            PWMMR6 = 0;
        break;
        case 3:                                 // phase 5: 011
            PWMMR1 = 0;            
            PWMMR2 = actualSpeed;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = 0;
            PWMMR6 = actualSpeed;
        break;
        case 4:                                 // phase 2: 100
            PWMMR1 = 0;            
            PWMMR2 = 0;
            PWMMR3 = actualSpeed;
            PWMMR4 = 0;
            PWMMR5 = actualSpeed;
            PWMMR6 = 0;
        break;
        case 5:                               // phase 1: 101
            PWMMR1 = actualSpeed;       
            PWMMR2 = 0;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = actualSpeed;
            PWMMR6 = 0;
        break;
        case 6:                                // phase 3: 110  
            PWMMR1 = 0;
            PWMMR2 = 0;
            PWMMR3 = actualSpeed;
            PWMMR4 = actualSpeed;
            PWMMR5 = 0;
            PWMMR6 = 0;
            break;
        default:
        break;                              // invalid
    }
    
    T0IR = 0xFF;                               // reset flags
    PWMLER = 0x7F;                             // enable PWM0 - PWM6 match latch (reload)
    VICVectAddr = 0;                           // Acknowledge interrupt by reseting VIC
}

они не уделяют этому внимание.

пс. сейчас осознал, что то что хочу сделать не поможет, тк силовые ключи 3-х фазной схемы висят на разных драйверах и подзарядки бутстепного конденсатора не будет.

как решить эту проблему ?:

или будут ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.